środa, lipca 20, 2016

Jak nie zapomnieć kupić biletu miesięcznego - revised ;-)

Jakiś czas temu opisałem tu skrypt, który "lata" na jednej z moich Malinek i sprawdza czy aby nie zbliża się termin końca ważności mojego biletu miesięcznego.

Niestety kilka dni temu dostałem maila od skryptu, w którym skarżył mi się, że nie może znaleźć informacji o dacie i że podejrzewa, że spowodowane to jest zmianą struktury strony....

Miał rację.

MPK zmieniło stronę i zmieniły się adresy...

Od teraz by sprawdzić datę ważności biletu trzeba pójść pod adres:
http://www.mpk.krakow.pl/pl/sprawdz-waznosc-biletu/index,1.html?cityCardType=0&identityNumber=<id>&cityCardNumber=<cityCardNumber>

Dodatkowo normalny request z Pythona skończy się 403 Forbidden...
Chwila zabawy wyjaśniła, że pluje się z powodu nagłówków (podejrzewam, że chodzi o User-Agent).
Wystarczy jednak dodać kilka nagłówków i wszystko działa tak jak należy :-)

Skrypt teraz wygląda tak:

#!/usr/bin/python
import urllib2
import sendmail
import datetime
import os

id = "<numer legitymacji KMK>"
cityCardNumber = "<nr seryjny karty>"
cityCardType = "0"
SEND_TO="<mail na ktory ma przyjsc informacja>"
limits = [31,21,14,7,1]

def getUrl(id, cityCardType, cityCardNumber):
url = "http://www.mpk.krakow.pl/pl/sprawdz-waznosc-biletu/index,1.html?cityCardType=0&identityNumber="+id+"&cityCardNumber="+cityCardNumber
return url

def getDateFor(id, cityCardType, cityCardNumber):
MARKER = "Data ko"
url = getUrl(id, cityCardType, cityCardNumber)
hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding': 'none',
'Accept-Language': 'en-US,en;q=0.8',
'Connection': 'keep-alive'}
req=urllib2.Request(url,headers=hdr)
lines=urllib2.urlopen(req).readlines()
    str="".join(lines)
date=None
if str.count(MARKER):
idx=str.index(MARKER)+27
substr = str[idx:idx+20]
date = substr[:substr.index("<")]
return date

date = getDateFor(id, cityCardType, cityCardNumber)

if not date:
url = getUrl(id, cityCardType, cityCardNumber)
sendmail.sendEMail(SEND_TO,u"[KMK watchdog] lack of date",u"""Cannot find end of period date on """+url+"""
Page was changed?
Or you don't have KKM?""")
else:
d = datetime.datetime.strptime(date,"%Y-%m-%d")
daysTillDate = (d-datetime.datetime.now()).days
for limit in limits:
if daysTillDate<limit:
fName=date+"_"+str(limit)
if not os.path.exists("kmk_watchodg"):
os.mkdir("kmk_watchodg")
if not os.path.exists("kmk_watchodg/"+fName):
sendmail.sendEMail(SEND_TO,"[KMK watchdog] only "+str(limit)+" days till end of KMK","""Hi,
It seems that you have only """+str(limit)+""" days to end of your KMK card.
Go to http://www.kkm.krakow.pl to buy new ticket, or disable this alarm on Raspberry Pi.""")
f=open("kmk_watchodg/"+fName,"w+")
f.write(str(datetime.datetime.now()))
f.close()

I znów działa :-)
Dzięki czemu codziennie o 8:00 skrypt sprawdza czy aby nie zbliża się data końca ważności mojego biletu miesięcznego ;-)



Podobne postybeta
Jak nie zapomnieć kupić biletu miesięcznego ;-)
Airly + Python + Oczyszczacz Powietrza = lepsze oddychanie ;-)
Jak się dowiedziałem o tym, że w Polsce rusza Google Play Movies ;-)
Polowanie na Nexus 4 - wersja automagiczna ;-)
Żenienie Todoist z Obsidian przy pomocy Pythona ;-)

czwartek, lipca 14, 2016

Raport z emigracji....

Tym razem "wyemigrowałem" do Irlandii, gdzie mój nowy pracodawca próbuje włożyć mi do głowy znajomość produktu, który będę pisał :-) [jak na razie nieźle im idzie, a do tego robi to na mnie wrażenie, jak to wszystko działa]

W moim odbiorze Irlandia to takie bardziej europejskie UK.
Też jeżdżą po złej stronie*, mają dziwne wtyczki i są mili.
Ale kierowcy nie wydają się mieć celu życia polegającego na tym, że Cię chcą przejechać ;-)
Lotnisko jest po prostu super (widziałem tylko kilka lotnisk, ale to w Dublinie przynajmniej w części przylotów jest najszybsze na jakim byłem. Od momentu wylądowania, do momentu gdy wsiadałem do taksówki minęło może 15 minut, a bardziej 10 i nigdzie nie musiałem czekać i stać w kolejce).
Do tego taksówkarze znają teren!
I mówią po angielsku!

W hotelu non-stop jest ktoś w recepcji, nawet w nocy. Nie ma konieczności robienia self check-in'a :-)

W autobusach jest WiFi :-) i to takie całkiem niezłe.
Do tego są tańsze niż w Londynie i okolicy.

Dublin jest mały. Muzeum Historii Naturalnej w Dublinie jest ładne, ale zaryzykuje stwierdzenie, że całe zmieściłoby się w holu głównym Muzeum Historii Naturalnej w Londynie ;-)




Dublin jest mały, ale ładny i taki "do ogarnięcia".

"Główna" ulica wzbogacona jest o najwyższe dzieło sztuki na świecie:


Które ma ~126 m...

Domki poza centrum są bardzo brytyjskie, też malutkie, ale raczej nie udają aż tak bardzo zamków.
Mniej tu pretensjonalności.

Całe centrum to jedno wielkie centrum handlowe ;-)
A kawałek dalej, za rzeką jedna wielka imprezowania....

Indeks zielonych włosów wypada słabo, widziałem na razie 1 osobę z takimi włosami.... słabo.

Do tego mają zamek:



Księgarnie.... nie ma tu czegoś takiego jak 6 piętrowe Foyles czy WHSmith z Londynu.

Ale trzeba przyznać, że w Chapters dział popularno-naukowy jest dużo większy niż w dowolnej polskiej księgarni (de facto, jest większy niż połączone pół czy ćwierć regału z Matrasu z Rynku w KRK, Matrasu na dworcu, EMPIKu w Galerii Krakowskiej i Kazimierz...).
Zauważyłem też, że jest tutaj też taki sam styl urządzania księgarni jak w UK.
Też z książek są jakby "pokoje" zbudowane.
Mają Sapkowskiego ;-)

Aż się zastanawiam i może w końcu sam przeczytam coś z Wiedźmina ;-)

Ale księgarnie nie są tu zbyt popularne.... w wielkim domu towarowym w centrum miasta (z genialnym dachem, który poniżej) nie ma w ogóle księgarni :-( [czy to był dworzec kiedyś???]


Polaków podejrzanie mało tu spotkałem. Niby są największą mniejszością w Irlandii i stanowią 2.7% populacji, ale o wiele mniej ich tu spotkałem niż w UK.

Mają genialną sprawę z rowerami.
Jak rozumiem firma może dołożyć się do roweru i nie będzie to liczone jako dochód. Jedynym warunkiem jest by rower był używany do jeżdżenia do pracy.

Ścieżek rowerowych to tu mają od cholery i jeszcze trochę.... Wszędzie są :-)

Jest też bardzo, ale to bardzo zielono i nie ma nieludzkich temperatur jak w Polsce....

Ale mimo wszystkich uroków... Londyn mi się jednak bardziej podobał... mam nadzieję, że mnie stąd nie deportują ;-) [no i dzięki Brexitowi Londyn za jakiś czas pewnie już taki fajny nie będzie, a Dublin będzie nadal :-)]

* - oni mogą uważać, że to u nas się jeździ po złej stronie ;-)


Podobne postybeta
Raport z planety Z ;-)
Błeee
Raport z emigracji ;-)
Transport publiczny - moje top i bottom 5 (na dziś :-))
Ja czegoś nie czaję....