Senaste nytt

COOP Medmera mer

Inget komplett Windows-paket, men så här gjorde jag för att köra scriptet på Windows7 (svensk):

1. Installera Python 2.7.10 här (OBS! Hämta inte ner senaste Python, version 3.x, då fungerar inte scriptet utan konvertering)
2. Spara ner detta script i installationskatalogen (normalt c:\Python27)
3. Ställ dig i c:\Python27 i en kommandoprompt och skriv "python ez_setup.py"
4. Ställ dig i c:\Python27\scripts och skriv "easy_install simplejson"
5. Spara ner scriptet från @mha321 i en fil som du döper till coopverify.py i katalogen c:\Python27
6. Ändra rad 39 från "locale.setlocale(locale.LC_TIME, 'sv_SE.utf8')" till "locale.setlocale(locale.LC_ALL, 'sve')"
7. Ändra rad 2 från "# coding=utf8" till "# coding=utf-8"
8. Ställ dig i c:\Python27 och skriv "python coopverify.py <mailadress> <startmånad> <slutmånad>"

Det ska tilläggas att jag aldrig någonsin jobbat med Python så detta kan vara helt fel, men det fungerar bra för mig ;)
 
En liten kommentar till den output man erhåller, som kan vara bra att hålla i minnet:

Köp på Coop som ger dubbla poäng resulterar i att matchningen spricker, men det ser man lätt på att man har två notifieringar samma dag.

Ränta, t.ex. för kontantuttag visas som saknade poäng.
 
6. Ändra rad 39 från "locale.setlocale(locale.LC_TIME, 'sv_SE.utf8')" till "locale.setlocale(locale.LC_ALL, 'sve')"

Det där känns helt galet. Locale "sve" kanske finns i Python, men det är absolut inget jag skulle rekommendera. Korrekta locale-strängen är sv_SE.UTF-8 och inget annat. Den borde fungera tycker jag, men jag har inte haft möjlighet att labba med detta själv än.
 
Jag testade (bland mycket annat, sv_SE.UTF-8) men det ger unsupported locale setting. Efter lite googlande stod det klart att just Windows 7 och Windows 8 har en helt annan uppfattning om locale settings och att det var denna man skulle gå efter: Language Strings
Men som sagt, Python är inte min grej och jag kanske hade tur som fick det att hoppa igång!
 
Tänkte jag trots allt skulle testa. Men får följande fel

Kod:
Traceback (most recent call last):
  File "coopverify.py", line 39, in <module>
    locale.setlocale(locale.LC_TIME, 'sv_SE.utf8')
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 579, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

Ändrar jag till utf-8 som verkar fungera för jonten får jag
Kod:
  File "coopverify.py", line 39
    locale.setlocale(locale.LC_TIME, 'sv_SE.utf-8’)
                                                    ^
SyntaxError: EOL while scanning string literal
Du har fel typ av ' i slutet på raden. Du har fått in en "kursiv" sådan...
 
Det där känns helt galet. Locale "sve" kanske finns i Python, men det är absolut inget jag skulle rekommendera. Korrekta locale-strängen är sv_SE.UTF-8 och inget annat. Den borde fungera tycker jag, men jag har inte haft möjlighet att labba med detta själv än.
Den skiter fullständigt i det där, och kör på det man har inställt i sin Windows-miljö när inget matchar, om jag inte minns fel. Och det heter olika saker beroende på vilken delmiljö i Windows man är på..

Vore antagligen enklare att bara stoppa in namnen på de svenska månaderna i en array - det enda som locale används för är date-parsing.
 
Faktum är att det var väldigt enkelt gjort så det är fixat. Ny version som inte använder locale längre, eftersom det verkar vara det som ställer till det för folk mest. Den använder inte heller simplejson (men kräver i gengäld Python 2.7 tror jag - men det har nog alla vid det här laget).

coopverify.py · GitHub

För de som bara vill ladda ner direkt, och inte bryr sig om att inspektera koden, så använd länken https://gist.githubusercontent.com/...e64e1224367bf815349e2271bca66dc/coopverify.py och gör "spara som" på den direkt.


Edit: detta borde betyda att steg 2, 3, 4, 6 och 7 utgår ur @RickardG's instruktioner.
 
Jag får fortfarande.

Kod:
Loggar in...
Laddar 2015-1
Traceback (most recent call last):
  File "coopverify.py", line 138, in <module>
    xact.extend([{'sum':r['sum'], 'loc': r['location'], 'date': parse_date(r['date'])} for r in jxact['d']['model']['results'] if int(r['sum']) < 0 and not r['title'].startswith('Uttag ')])
TypeError: 'NoneType' object has no attribute '__getitem__'
 
Toppen