-
Notifications
You must be signed in to change notification settings - Fork 3
/
pp_tracking.py
executable file
·87 lines (74 loc) · 3.09 KB
/
pp_tracking.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Sledzenie przesyłek Poczty Polskiej
Usage:
pp_tracking.py [INPUT ...]
Options:
-h|--help show this
"""
from suds.wsse import *
from suds.client import Client
from termcolor import colored
from docopt import docopt
debug = False
url = 'https://tt.poczta-polska.pl/Sledzenie/services/Sledzenie?wsdl'
client = Client(url)
security = Security()
token = UsernameToken('sledzeniepp', 'PPSA')
security.tokens.append(token)
client.set_options(wsse=security)
def output(number):
doreczono = False
krajowy = False
try:
statusy = [] # lista statusów
parcel = client.service.sprawdzPrzesylke(number)
if debug:
print(parcel)
if parcel.danePrzesylki.zakonczonoObsluge:
doreczono = True
for item in parcel.danePrzesylki.zdarzenia.zdarzenie:
if item.jednostka.nazwa == None:
item.jednostka.nazwa = ""
status = {'komunikat': item.nazwa, 'czas': item.czas, 'urzad': item.jednostka.nazwa}
statusy.append(status)
#statusy = sorted(statusy, reverse=True)
if debug:
print(statusy)
print("---------------------------------------------------------------------")
if not doreczono:
print("Przesyłka numer %s w drodze " % (colored(parcel.numer, 'white', 'on_red')))
else:
print("Przesyłka numer %s została doręczona" % (colored(parcel.numer, 'white', 'on_red')))
print("---------------------------------------------------------------------")
if parcel.danePrzesylki.krajNadania == "POLSKA":
krajowy = True
if parcel.danePrzesylki.krajNadania != None:
print("Kraj nadania: \t\t%s" % colored(parcel.danePrzesylki.krajNadania.capitalize(), 'green'))
else:
print("Kraj nadania: \t\t%s" % colored("Brak danych", 'green'))
if not krajowy:
if parcel.danePrzesylki.krajPrzezn != None:
print("Kraj przeznaczenia: \t%s" % colored(parcel.danePrzesylki.krajPrzezn.capitalize(), 'green'))
else:
print("Kraj przeznaczenia: \t%s" % colored("Brak danych", 'green'))
if parcel.danePrzesylki.rodzPrzes != None:
print("Rodzaj przesyłki: \t%s" % colored(parcel.danePrzesylki.rodzPrzes, 'green'))
else:
print("Rodzaj przesyłki: \t%s" % colored("Brak danych", 'green'))
print("---------------------------------------------------------------------")
print(colored(statusy[0]['czas'], 'blue'), "|", colored(statusy[0]['komunikat'], 'cyan'), colored(statusy[0]['urzad'], 'green'))
print("---------------------------------------------------------------------")
for status in statusy[1:]:
print(colored(status['czas'], 'blue'), "|", colored(status['komunikat'], 'cyan'), colored(status['urzad'], 'green'))
print("---------------------------------------------------------------------")
except AttributeError as e:
print("---------------------------------------------------------------------")
print(colored("Brak przesyłki o takim numerze!", 'green'))
print("---------------------------------------------------------------------")
if __name__ == '__main__':
arguments = docopt(__doc__, version='0.1')
if arguments['INPUT'] != []:
output(arguments['INPUT'])
else:
print(colored("Podaj numer przesyłki", 'white', 'on_red'))