Last active
January 21, 2017 12:02
-
-
Save andrewshulgin/bba50a7ef6a09cb55e6d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python2 | |
# -*- coding: utf-8 -*- | |
import sys, signal, httplib, urllib, json | |
# Ловим ^C | |
def user_interrupt(signal, frame): | |
sys.exit(0) | |
signal.signal(signal.SIGINT,user_interrupt) | |
kiev = "2200001" | |
lvov = "2218000" | |
odessa = "2208001" | |
departSt = kiev | |
arriveSt = odessa | |
departDt = "04.05.2013" | |
# Запрос | |
params = urllib.urlencode({ | |
# ID станции отправления | |
"station_id_from": departSt, | |
# ID станции прибытия | |
"station_id_till": arriveSt, | |
# Дата отправления ЧЧ.ММ.ГГГГ | |
"date_dep": departDt, | |
# Время отправления | |
"time_dep": "00:00" | |
}) | |
# Обязательные хедеры | |
headers = { | |
"Content-type": "application/x-www-form-urlencoded", | |
"GV-Ajax": "1", | |
"GV-Referer": "http://booking.uz.gov.ua/ru/" | |
} | |
# Хост | |
conn = httplib.HTTPConnection("booking.uz.gov.ua:80") | |
# Адрес, куда отправляем запрос | |
conn.request("POST", "/ru/purchase/search/", params, headers) | |
response = conn.getresponse() | |
# Если HTTP ошибка, показываем это | |
if response.status != 200: | |
print "Error:", response.status, response.reason | |
sys.exit(0) | |
data = response.read() | |
conn.close() | |
# Парсим JSON | |
data = json.loads(data) | |
# Если ошибка БД (нету поездов итдитп), показываем это | |
if data['error'] == True: | |
print "Error:", data['value'] | |
sys.exit(0) | |
# Считаем поезда | |
numTrains = len(data['value']) | |
# Для каждого поезда показываем | |
for train in xrange(0,numTrains): | |
# № поезда | |
# Начальная | |
# Тире | |
# Конечная | |
print data['value'][train]['num'], data['value'][train]['from']['station'], "-", data['value'][train]['till']['station'] | |
# Часы отправления с выбранной станции | |
departHr = str(data['value'][train]['from']['date_format']['hours']).zfill(2) | |
# Минуты отправления с выбранной станции | |
departMn = str(data['value'][train]['from']['date_format']['minutes']).zfill(2) | |
# Часы прибытия на выбранную станцию | |
arriveHr = str(data['value'][train]['till']['date_format']['hours']).zfill(2) | |
# Минуты прибытия на выбранную станцию | |
arriveMn = str(data['value'][train]['till']['date_format']['minutes']).zfill(2) | |
print(departHr+":"+departMn) | |
print(arriveHr+":"+arriveMn) | |
# Считаем классы | |
numClasses = len(data['value'][train]['types']) | |
# Для каждого класса показываем | |
for carClass in xrange(0,numClasses): | |
# Шифр класса (Л = Люкс, К = Купе, С1 = 1 Класс в общем вагоне) | |
# Количество свободных мест | |
print data['value'][train]['types'][carClass]['letter'], data['value'][train]['types'][carClass]['places'] | |
# Для пущего удобства принтим пустую разделительную линию между поездами | |
if train < numTrains-1: | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment