Python-скрипт для проверка статусов трек-номеров почтовых отправленийПодписка на Комментарии к "Python-скрипт для проверка статусов трек-номеров почтовых отправлений"

Аватар xxblx

Делал для себя, но мало ли кому еще пригодится.
Post-Tracking.py - cкрипт на Python2, позволяющий в GNU/Linux через терминал проверять статус трек-номера посылки. Скрипт использует API сайта postabot.ru.

Git-репозиторий: https://bitbucket.org/xxblx/post-tracking.py
Подробности в моем блоге: http://xxblx.blogspot.ru/2014/11/post-trackingpy.html

Использование:

./post-tracking.py трек-номер - посмотреть информацию по конкретному трек-номеру

[xxblx@localhost ~]$ ./post-tracking.py EA338712012RU
Трек-номер:  EA338712012RU
- - - - -
12/08/2014 - 17:00 - Видное EMS ППС-5, 142705 - Приём. Единичный
- - - - -
12/08/2014 - 21:55 - Видное EMS ППС-5, 142705 - Обработка. Покинуло сортировочный центр
- - - - -
13/08/2014 - 16:55 - Москва EMS СЦ цех Магистральной Сортировки Уо, 130214 - Обработка. Сортировка
- - - - -
14/08/2014 - 13:35 - Москва EMS СЦ цех Магистральной Сортировки Уо, 130214 - Обработка. Покинуло сортировочный центр
- - - - -
16/08/2014 - 10:15 - Урюпинск 3, 403113 - Обработка. Прибыло в место вручения
- - - - -
16/08/2014 - 13:30 - Урюпинск 3, 403113 - Неудачная попытка вручения. Временное отсутствие адресата
- - - - -
20/08/2014 - 09:50 - Волгоград МСЦ УОСП, 400964 - Обработка. Покинуло сортировочный центр
- - - - -
18/08/2014 - 13:40 - Урюпинск 3, 403113 - Вручение. Вручение адресату

Для удобства можно поместить список трек-номеров в отдельный файл (каждый трек-номер с новой строки) и указать скрипту проверить все треки из файла по очереди
./post-tracking.py -f /путь/до/файла

[xxblx@localhost ~]$ cat ~/file
EA338712012RU
RA419695844RU[xxblx@localhost ~]$ ./post-tracking.py -f ~/file
Трек-номер:  EA338712012RU
- - - - -
12/08/2014 - 17:00 - Видное EMS ППС-5, 142705 - Приём. Единичный
- - - - -
12/08/2014 - 21:55 - Видное EMS ППС-5, 142705 - Обработка. Покинуло сортировочный центр
- - - - -
13/08/2014 - 16:55 - Москва EMS СЦ цех Магистральной Сортировки Уо, 130214 - Обработка. Сортировка
- - - - -
14/08/2014 - 13:35 - Москва EMS СЦ цех Магистральной Сортировки Уо, 130214 - Обработка. Покинуло сортировочный центр
- - - - -
16/08/2014 - 10:15 - Урюпинск 3, 403113 - Обработка. Прибыло в место вручения
- - - - -
16/08/2014 - 13:30 - Урюпинск 3, 403113 - Неудачная попытка вручения. Временное отсутствие адресата
- - - - -
20/08/2014 - 09:50 - Волгоград МСЦ УОСП, 400964 - Обработка. Покинуло сортировочный центр
- - - - -
18/08/2014 - 13:40 - Урюпинск 3, 403113 - Вручение. Вручение адресату
Трек-номер:  RA419695844RU
- - - - -
16/08/2014 - 11:34 - Саратов 78, 410078 - Приём. Единичный
- - - - -
19/08/2014 - 10:50 - Саратов МСЦ УОПо, 410962 - Обработка. Покинуло сортировочный центр
- - - - -
27/08/2014 - 14:19 - Москва PCI-2, 104002 - Обработка. Прибыло в место международного обмена
- - - - -
27/08/2014 - 21:57 - Москва PCI-2, 104002 - Приём на таможню.
- - - - -
27/08/2014 - 21:59 - Москва PCI-2, 104002 - Таможенное оформление. Выпуск таможни
- - - - -
03/09/2014 - 17:07 - Москва PCI-6, 104006 - Обработка. Покинуло сортировочный центр
- - - - -
03/09/2014 - 17:09 - Москва PCI-6, 104006 - Экспорт.

Чтобы каждый раз не вводить -f /путь/к/файлу, создайте текстовый файл tracks, абсолютный путь которого будет ~/.post-tracking.py/tracks. Туда добавляйте трек-номера, каждый с новой строки. При наличии данного файла можно запускать скрипт без опций.
./post-tracking.py

[xxblx@localhost ~]$ cat ~/.post-tracking.py/tracks
EA338712012RU
RA419695844RU[xxblx@localhost ~]$ ./post-tracking.py
Трек-номер:  EA338712012RU
- - - - -
12/08/2014 - 17:00 - Видное EMS ППС-5, 142705 - Приём. Единичный
- - - - -
12/08/2014 - 21:55 - Видное EMS ППС-5, 142705 - Обработка. Покинуло сортировочный центр
- - - - -
13/08/2014 - 16:55 - Москва EMS СЦ цех Магистральной Сортировки Уо, 130214 - Обработка. Сортировка
- - - - -
14/08/2014 - 13:35 - Москва EMS СЦ цех Магистральной Сортировки Уо, 130214 - Обработка. Покинуло сортировочный центр
- - - - -
16/08/2014 - 10:15 - Урюпинск 3, 403113 - Обработка. Прибыло в место вручения
- - - - -
16/08/2014 - 13:30 - Урюпинск 3, 403113 - Неудачная попытка вручения. Временное отсутствие адресата
- - - - -
20/08/2014 - 09:50 - Волгоград МСЦ УОСП, 400964 - Обработка. Покинуло сортировочный центр
- - - - -
18/08/2014 - 13:40 - Урюпинск 3, 403113 - Вручение. Вручение адресату
Трек-номер:  RA419695844RU
- - - - -
16/08/2014 - 11:34 - Саратов 78, 410078 - Приём. Единичный
- - - - -
19/08/2014 - 10:50 - Саратов МСЦ УОПо, 410962 - Обработка. Покинуло сортировочный центр
- - - - -
27/08/2014 - 14:19 - Москва PCI-2, 104002 - Обработка. Прибыло в место международного обмена
- - - - -
27/08/2014 - 21:57 - Москва PCI-2, 104002 - Приём на таможню.
- - - - -
27/08/2014 - 21:59 - Москва PCI-2, 104002 - Таможенное оформление. Выпуск таможни
- - - - -
03/09/2014 - 17:07 - Москва PCI-6, 104006 - Обработка. Покинуло сортировочный центр
- - - - -
03/09/2014 - 17:09 - Москва PCI-6, 104006 - Экспорт.

Для работы скрипта требуется только Python 2. Все использованные модули есть в стандартной поставке.

Чтобы каждый раз не писать полный путь до скрипта / не переходить в каталог со скриптом, можете добавить

alias post-tracking="/путь/до/скрипта/post-tracking.py"

в ~/.bashrc (после добавления нужно перезапустить сессию) можно будет обращать к скрипту так:
[xxblx@localhost ~]$ post-tracking
Трек-номер:  EA338712012RU
- - - - -
12/08/2014 - 17:00 - Видное EMS ППС-5, 142705 - Приём. Единичный
- - - - -
12/08/2014 - 21:55 - Видное EMS ППС-5, 142705 - Обработка. Покинуло сортировочный центр
- - - - -
13/08/2014 - 16:55 - Москва EMS СЦ цех Магистральной Сортировки Уо, 130214 - Обработка. Сортировка
- - - - -
14/08/2014 - 13:35 - Москва EMS СЦ цех Магистральной Сортировки Уо, 130214 - Обработка. Покинуло сортировочный центр
- - - - -
16/08/2014 - 10:15 - Урюпинск 3, 403113 - Обработка. Прибыло в место вручения
- - - - -
16/08/2014 - 13:30 - Урюпинск 3, 403113 - Неудачная попытка вручения. Временное отсутствие адресата
- - - - -
20/08/2014 - 09:50 - Волгоград МСЦ УОСП, 400964 - Обработка. Покинуло сортировочный центр
- - - - -
18/08/2014 - 13:40 - Урюпинск 3, 403113 - Вручение. Вручение адресату
Трек-номер:  RA419695844RU
- - - - -
16/08/2014 - 11:34 - Саратов 78, 410078 - Приём. Единичный
- - - - -
19/08/2014 - 10:50 - Саратов МСЦ УОПо, 410962 - Обработка. Покинуло сортировочный центр
- - - - -
27/08/2014 - 14:19 - Москва PCI-2, 104002 - Обработка. Прибыло в место международного обмена
- - - - -
27/08/2014 - 21:57 - Москва PCI-2, 104002 - Приём на таможню.
- - - - -
27/08/2014 - 21:59 - Москва PCI-2, 104002 - Таможенное оформление. Выпуск таможни
- - - - -
03/09/2014 - 17:07 - Москва PCI-6, 104006 - Обработка. Покинуло сортировочный центр
- - - - -
03/09/2014 - 17:09 - Москва PCI-6, 104006 - Экспорт.
Аватар zenon

Ай, спасибо! Мысль была такая же, а тут уже есть... :_)

# ./post-tracking.py LQ002266173CN                                                                                                                                       ~
Трек-номер:  LQ002266173CN
- - - - -
29/10/2014 - 18:45 - Китай 518053,  - Приём.
- - - - -
30/10/2014 - 13:14 - Китай CNSZXD,  - Экспорт.
- - - - -
01/11/2014 - 16:12 - Москва PCI-7, 104007 - Обработка. Прибыло на территорию РФ
- - - - -
02/11/2014 - 10:41 - Мр Лц Внуково цех-1, 102976 - Импорт.
- - - - -
02/11/2014 - 10:46 - Мр Лц Внуково цех-1, 102976 - Приём на таможню.
- - - - -
02/11/2014 - 10:47 - Мр Лц Внуково цех-1, 102976 - Таможенное оформление. Выпуск таможни
- - - - -
02/11/2014 - 19:24 - Мр Лц Внуково цех-1, 102976 - Обработка. Покинуло место международного обмена
- - - - -
05/11/2014 - 04:44 - Волгоград МСЦ УОПП, 400963 - Обработка. Покинуло сортировочный центр
Аватар Lupo_Alberto

/tmp/ ./post-tracking.py RC516146191HK  
  File "./post-tracking.py", line 24
    print "Трек-номер: ", t
                       ^
SyntaxError: Missing parentheses in call to 'print'
Аватар Lupo_Alberto

/tmp/ python2 post-tracking.py RC516146191HK
Трек-номер:  RC516146191HK

Надо было версию Python'а указать.

Аватар xxblx

Так я же в описании скрипта написал, что нужен Python 2, в т.ч. здесь в тексте записи это есть

Цитата:
Post-Tracking.py - cкрипт на Python2, позволяющий в GNU/Linux через терминал проверять статус трек-номера посылки. Скрипт использует API сайта postabot.ru.

С Python3 я даже не проверял работоспособность.
Аватар -=Serj=-

xxblx, пара замечаний по коду: 1. Хороший тон вместо f = open(filename) использовать with open(filename) as f: тут можно почитать, например http://effbot.org/zone/python-with-statement.htm 2. В строке #34, видимо, ошибка - ты сравниваешь список со строкой.

Аватар xxblx

-=Serj=-, за замечания спасибо. Про with open(filename) учту на будущее.
В строке 34 ошибки нет, сравниваются строки. В 31 открывается с readlines файл track_lst = open(f).readlines(), т.е. track_lst - список со строковыми переменными, каждая строковая переменная == строка из файла.
Если, например, добавить print type(line) или print type(line[-1:]) (без разницы на самом деле, но раз уже не всю строку сравниваем, то и тип не у всей проверим) перед if, выдаст <type 'str'>.

Аватар -=Serj=-

А, line же строка, тогда да. Но, как я понял, нужен последний символ в строке? Тогда логичнее line[-1] вместо line[-1:].
ЗЫ. Вообще, вместо строк 34-37 предлагаю просто check_track(line.strip()) :)

Аватар xxblx

Да, нужно проверять на что строка заканчивается, чтобы "\n" не цеплять. [-1] или [-1:] - эффект и смысл-то одинаковый обе записи несут. А вот за strip() отдельное спасибо, я что-то и не подумал о нем, с ним можно сократить 4-е строки до 1-ой =)
Сейчас подправляю и залью в репозиторий исправленный вариант.

Добавить комментарий