diff --git a/README.md b/README.md index 07759d3..7cf7c8e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Israel Rail API + [![image](https://img.shields.io/pypi/v/israel-rail-api.svg)](https://pypi.org/project/israel-rail-api/) [![image](https://img.shields.io/pypi/l/israel-rail-api.svg)](https://pypi.org/project/israel-rail-api/) [![Build Status](https://travis-ci.org/sh0oki/israel-rail-api.svg?branch=master)](https://travis-ci.org/sh0oki/israel-rail-api) @@ -8,19 +9,21 @@ This is a unofficial wrapping of the API of Israeli Rail network in Python. Use this script for checking your own train schedule, integrating with Alexa, and so on! ## Installing -Tested with Python 3.6, should probably work fine with other versions too. - pip install israel-rail-api +Tested with Python 3.11, should probably work fine with other versions too. + + pip install israel-rail-api ## Usage - import israelrailapi - s = israelrailapi.TrainSchedule() - print(s.query('Tel Aviv University', 'Jerusalem Yitzhak Navon')) - + + import israelrailapi + s = israelrailapi.TrainSchedule() + print(s.query('Tel Aviv University', 'Jerusalem Yitzhak Navon')) + A simple test, to make sure the script is working is included in `schedule.py`: - python schedule.py "tel aviv hahagana" "ben gurion airport" 2018-12-24 0900 - + python3 schedule.py "tel aviv hahagana" "ben gurion airport" 2023-06-24 0900 ## Contributing -We'd love your contributions! Fire up a (tested!) Pull request and we'll be happy to approve it. + +We'd love your contributions! Fire up a (tested!) Pull request, and we'll be happy to approve it. diff --git a/israelrailapi/api.py b/israelrailapi/api.py index e814299..2dc8fee 100644 --- a/israelrailapi/api.py +++ b/israelrailapi/api.py @@ -1,29 +1,37 @@ -import requests import time -USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 ' \ - 'Safari/537.36' -API_BASE = 'https://www.rail.co.il/apiinfo/api/Plan' -DEFAULT_HEADERS = {'User-Agent': USER_AGENT} +import requests + +from train_station import station_name_to_id + +# API key bundled in main.js of rail.co.il +API_KEY = "4b0d355121fe4e0bb3d86e902efe9f20" + +USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 ' \ + 'Safari/605.1.15' +API_BASE = 'https://israelrail.azurefd.net/rjpa-prod/api/v1' +DEFAULT_HEADERS = {'User-Agent': USER_AGENT, + "ocp-apim-subscription-key": API_KEY} class TrainRoutePart(object): def __init__(self, data): self.data = data - self.src = data['OrignStation'] - self.dst = data['DestinationStation'] - self.arrival = data['ArrivalTime'] - self.departure = data['DepartureTime'] - self.platform = data['Platform'] - self.dst_platform = data['DestPlatform'] + self.src = data['orignStation'] + self.dst = data['destinationStation'] + self.arrival = data['arrivalTime'] + self.departure = data['departureTime'] + self.platform = data['originPlatform'] + self.dst_platform = data['destPlatform'] @staticmethod def parse_time(t): return time.strptime(t, "%d/%m/%Y %H:%M:%S") def __repr__(self): - return "%s (%s) to %s (%s)" % (self.src, self.departure, self.dst, self.arrival) + return "%s (%s) to %s (%s)" % ( + station_name_to_id(self.src), self.departure, station_name_to_id(self.dst), self.arrival) class TrainRoute(object): @@ -48,7 +56,10 @@ def __repr__(self): class IsraelRailApi(object): - def __init__(self, url, params, headers=DEFAULT_HEADERS): + def __init__(self, url, params, headers=None): + self.arguments = None + if headers is None: + headers = DEFAULT_HEADERS self.url = '/'.join((API_BASE, url)) self.params = params self.headers = headers @@ -71,20 +82,26 @@ def parse(self, result): return result def request(self, **kwargs): - arguments = self.prepare_arguments(kwargs) - return self.parse(requests.get(self.url, params=arguments, headers=self.headers)) + self.arguments = self.prepare_arguments(kwargs) + return self.parse(requests.get(self.url, params=self.arguments, headers=self.headers)) class GetRoutesApi(IsraelRailApi): def __init__(self): - super().__init__('GetRoutes', - {'OId': {}, 'TId': {}, - 'Date': {}, - 'Hour': {'default': '0900'}, - 'isGoing': {'default': 'true', 'required': False} + super().__init__('timetable/searchTrainLuzForDateTime', + {'fromStation': {}, 'toStation': {}, + 'date': {}, + 'hour': {'default': '09:00'}, + 'scheduleType': {'default': 1}, + 'systemType': {"default": 2}, + "languageId": {"default": "English"} }) def parse(self, raw_result): raw_result.raise_for_status() - routes = raw_result.json()['Data']['Routes'] - return [TrainRoute(r['Train']) for r in routes] + result = raw_result.json()['result'] + size = result['numOfResultsToShow'] + index = result['startFromIndex'] + + routes = result['travels'][index: index + size] + return [TrainRoute(r['trains']) for r in routes] diff --git a/israelrailapi/schedule.py b/israelrailapi/schedule.py index ff9c6c1..2931da8 100644 --- a/israelrailapi/schedule.py +++ b/israelrailapi/schedule.py @@ -1,13 +1,14 @@ import logging -import time import sys +import time -from israelrailapi.train_station import translate_station -from israelrailapi.api import GetRoutesApi +from api import GetRoutesApi +from train_station import translate_station class TrainSchedule(object): - def query(self, src_station, dst_station, start_date=None, start_hour=None): + @staticmethod + def query(src_station, dst_station, start_date=None, start_hour=None): src_station = translate_station(src_station) dst_station = translate_station(dst_station) if start_date is None: @@ -15,12 +16,14 @@ def query(self, src_station, dst_station, start_date=None, start_hour=None): if start_hour is None: start_hour = "09:00" start_date = start_date.strip().replace('-', '').replace('/', '').replace('.', '') - start_hour = start_hour.strip().replace(':', '') + start_hour = start_hour.strip().replace(':', '').replace('-', '') + start_hour = f"{start_hour[:2]}:{start_hour[2:]}" + start_date = f"{start_date[:4]}-{start_date[4:6]}-{start_date[6:8]}" logging.info("Query: %s->%s (%s %s)" % (src_station, dst_station, start_date, start_hour)) - result = GetRoutesApi().request(OId=src_station, TId=dst_station, - Date=start_date, Hour=start_hour) + result = GetRoutesApi().request(fromStation=src_station, toStation=dst_station, + date=start_date, hour=start_hour) logging.info(result) return result @@ -28,7 +31,8 @@ def query(self, src_station, dst_station, start_date=None, start_hour=None): if '__main__' == __name__: logging.basicConfig(level=logging.DEBUG) t = TrainSchedule() - if len(sys.argv) >= 4: - t.query(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) + if len(sys.argv) == 5: + q = t.query(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) + print(q) else: - print("Usage: %s " % (sys.argv[0], )) + print("Usage: %s " % (sys.argv[0],)) diff --git a/israelrailapi/stations.py b/israelrailapi/stations.py index e50e3d4..9b16315 100644 --- a/israelrailapi/stations.py +++ b/israelrailapi/stations.py @@ -1,5 +1,179 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -STATIONS = {'3700': {'Id': '3', 'Heb': 'תל אביב - סבידור מרכז', 'Eng': 'Tel Aviv-Savidor Center', 'Rus': 'Тель-Авив - Мерказ - Центральная', 'Arb': 'تل ابيب – ساڤيدور المركز'}, '3500': {'Id': '3', 'Heb': 'הרצליה', 'Eng': 'Hertsliya', 'Rus': 'Герцлия', 'Arb': 'هرتسليا'}, '3400': {'Id': '3', 'Heb': 'בית יהושע', 'Eng': "Bet Yehoshu'a", 'Rus': 'Бейт-Иегошуа ', 'Arb': 'بيت يهوشوع'}, '3300': {'Id': '3', 'Heb': 'נתניה', 'Eng': 'Netanya', 'Rus': 'Нетания', 'Arb': 'نتانيا'}, '3100': {'Id': '3', 'Heb': 'חדרה - מערב', 'Eng': 'Hadera-West', 'Rus': 'Хадера - Маарав', 'Arb': 'الخضيرة - غرب '}, '2800': {'Id': '2', 'Heb': 'בנימינה', 'Eng': 'Binyamina', 'Rus': 'Биньямина', 'Arb': 'بنيامينا'}, '2820': {'Id': '2', 'Heb': 'קיסריה - פרדס חנה', 'Eng': 'Caesarea-Pardes Hana', 'Rus': 'Кейсария - Пардес-Хана', 'Arb': 'قيساريا - بارديس حنا'}, '2500': {'Id': '2', 'Heb': 'עתלית', 'Eng': 'Atlit', 'Rus': 'Атлит', 'Arb': 'عتليت'}, '2200': {'Id': '2', 'Heb': 'חיפה - בת גלים', 'Eng': 'Haifa-Bat Galim', 'Rus': 'Хайфа - Бат-Галим', 'Arb': 'حيفا - بات چاليم'}, '1300': {'Id': '1', 'Heb': 'חוצות המפרץ', 'Eng': 'Hutsot HaMifrats', 'Rus': 'Хоцот ха-Мифрац ', 'Arb': 'حوتسوت همفراتس'}, '700': {'Id': '7', 'Heb': 'קריית חיים', 'Eng': 'Kiryat Hayim', 'Rus': 'Кирьят-Хаим', 'Arb': 'كريات حاييم'}, '1400': {'Id': '1', 'Heb': 'קריית מוצקין', 'Eng': 'Kiryat Motzkin', 'Rus': 'Кирьят-Моцкин', 'Arb': 'كريات موتسكين'}, '1500': {'Id': '1', 'Heb': 'עכו', 'Eng': 'Ako', 'Rus': 'Акко ', 'Arb': 'عكا'}, '2300': {'Id': '2', 'Heb': "חיפה - חוף הכרמל (ש' רזיאל)", 'Eng': 'Haifa-Hof HaKarmel (Razi`el)', 'Rus': 'Хайфа Хоф ха-Кармель', 'Arb': 'حيفا - شاطئ الكرمل'}, '8700': {'Id': '8', 'Heb': "כפר סבא - נורדאו (א' קוסטיוק)", 'Eng': 'Kfar Sava-Nordau (A.Kostyuk)', 'Rus': 'Кфар-Саба – Нордау (А. Костюк)', 'Arb': 'كفار سابا - نورداو'}, '1600': {'Id': '1', 'Heb': 'נהריה', 'Eng': 'Nahariya', 'Rus': 'Нагария', 'Arb': 'نهاريا'}, '6500': {'Id': '6', 'Heb': 'ירושלים - גן החיות התנכי', 'Eng': 'Jerusalem-Biblical Zoo', 'Rus': 'Иерусалим – зоопарк', 'Arb': 'القدس - حديقة الحيوان التوراتية'}, '6300': {'Id': '6', 'Heb': 'בית שמש', 'Eng': 'Bet Shemesh', 'Rus': 'Бейт Шемеш', 'Arb': 'بيت شيمش'}, '7000': {'Id': '7', 'Heb': 'קריית גת', 'Eng': 'Kiryat Gat', 'Rus': 'Кирьят-Гат ', 'Arb': 'كريات چات'}, '5000': {'Id': '5', 'Heb': 'לוד', 'Eng': 'Lod', 'Rus': 'Лод', 'Arb': 'اللد'}, '7300': {'Id': '7', 'Heb': 'באר שבע- צפון/אוניברסיטה', 'Eng': "Be'er Sheva-North/University", 'Rus': 'Беер-Шева Цафон', 'Arb': 'بئر السبع - شمال/الجامعة'}, '4800': {'Id': '4', 'Heb': 'כפר חב"ד', 'Eng': 'Kfar Habad', 'Rus': 'Кфар ХАБАД', 'Arb': 'كفار حباد'}, '4600': {'Id': '4', 'Heb': 'תל אביב - השלום', 'Eng': 'Tel Aviv-HaShalom', 'Rus': 'Тель-Авив - ха-Шалом', 'Arb': 'تل أبيب - السلام'}, '2100': {'Id': '2', 'Heb': 'חיפה- מרכז השמונה', 'Eng': 'Haifa Center-HaShmona', 'Rus': 'Хайфа - Мерказ - Центральная', 'Arb': 'حيفا المركز - هشمونا'}, '5010': {'Id': '5', 'Heb': 'רמלה', 'Eng': 'Ramla', 'Rus': 'Рамле', 'Arb': 'الرملة'}, '8800': {'Id': '8', 'Heb': 'ראש העין - צפון', 'Eng': "Rosh Ha'Ayin-North", 'Rus': 'Рош ха-Айн Цафон', 'Arb': 'روش هعاين - شمال'}, '5300': {'Id': '5', 'Heb': 'באר יעקב', 'Eng': "Be'er Ya'akov", 'Rus': 'Беер-Яаков', 'Arb': 'بئير يعكوف'}, '5200': {'Id': '5', 'Heb': "רחובות (א' הדר) ", 'Eng': 'Rehovot (E. Hadar)', 'Rus': 'Реховот- им. А. Хадара', 'Arb': 'رحوڤوت'}, '5410': {'Id': '5', 'Heb': 'יבנה מזרח', 'Eng': 'Yavne-East', 'Rus': 'Явне-Восток', 'Arb': 'ياڤنه - شرق'}, '9100': {'Id': '9', 'Heb': 'ראשון לציון - הראשונים', 'Eng': 'Rishon LeTsiyon-HaRishonim', 'Rus': 'Ришон ле-Цион - Ха-Ришоним ', 'Arb': 'ريشون لتسيون - هريشونيم'}, '5800': {'Id': '5', 'Heb': "אשדוד עד הלום (מ' בר כוכבא)", 'Eng': 'Ashdod-Ad Halom (M.Bar Kochva)', 'Rus': 'Ашдод-ад-Халом (М. Бар Кохва)', 'Arb': 'أشدود - عاد هلوم'}, '4250': {'Id': '4', 'Heb': 'פתח תקווה - סגולה', 'Eng': 'Petah Tikva-Segula', 'Rus': 'Петах-Тиква - Сгула', 'Arb': 'بيتح تكڤا - سچوله'}, '4100': {'Id': '4', 'Heb': 'בני ברק', 'Eng': 'Bnei Brak', 'Rus': 'Бней-Брак', 'Arb': 'بني براك'}, '3600': {'Id': '3', 'Heb': 'תל אביב - אוניברסיטה', 'Eng': 'Tel Aviv-University', 'Rus': 'Тель-Авив - Университет', 'Arb': 'تل أبيب - الجامعة'}, '7320': {'Id': '7', 'Heb': 'באר שבע - מרכז', 'Eng': "Be'er Sheva-Center", 'Rus': 'Беер-Шева Мерказ', 'Arb': 'بئر السبع - المركز'}, '1220': {'Id': '1', 'Heb': 'מרכזית המפרץ (לב המפרץ)', 'Eng': 'HaMifrats Central Station', 'Rus': 'Центральная станция Ха-Мифрац', 'Arb': 'همفراتس المركزية'}, '4900': {'Id': '4', 'Heb': 'תל אביב - ההגנה', 'Eng': 'Tel Aviv-HaHagana', 'Rus': 'Тель-Авив - ха-Хагана ', 'Arb': 'تل أبيب - ههچناه'}, '8600': {'Id': '8', 'Heb': 'נמל תעופה בן גוריון', 'Eng': 'Ben Gurion Airport', 'Rus': 'Бен-Гурион Аэропорт', 'Arb': 'مطار بن چوريون'}, '6700': {'Id': '6', 'Heb': 'ירושלים - מלחה', 'Eng': 'Jerusalem-Malha', 'Rus': 'Иерусалим - Малха', 'Arb': 'القدس - المالحه'}, '5900': {'Id': '5', 'Heb': 'אשקלון', 'Eng': 'Ashkelon', 'Rus': 'Ашкелон ', 'Arb': 'أشكلون'}, '7500': {'Id': '7', 'Heb': 'דימונה', 'Eng': 'Dimona', 'Rus': 'Димона', 'Arb': 'ديمونا'}, '9200': {'Id': '9', 'Heb': 'הוד השרון - סוקולוב', 'Eng': 'Hod HaSharon-Sokolov', 'Rus': 'Ход Хашарон - Соколов', 'Arb': 'هود هشارون - سوكولوڤ'}, '4170': {'Id': '4', 'Heb': 'פתח תקווה - קריית אריה', 'Eng': 'Petah Tikva-Kiryat Arye', 'Rus': 'Петах Тиква – Кирьят Арье', 'Arb': 'بيتح تكڤا - كريات أريه'}, '5150': {'Id': '5', 'Heb': 'לוד גני אביב', 'Eng': 'Lod-Gane Aviv', 'Rus': 'Лод - Ганей Авив', 'Arb': 'اللد - چاني أڤيڤ'}, '8550': {'Id': '8', 'Heb': 'להבים - רהט', 'Eng': 'Lehavim-Rahat', 'Rus': 'Леавим - Рахат', 'Arb': 'لهاڤيم - رهط'}, '300': {'Id': '3', 'Heb': 'פאתי מודיעין', 'Eng': "Pa'ate Modi'in", 'Rus': 'Патей Модиин', 'Arb': 'بأتي موديعين'}, '400': {'Id': '4', 'Heb': 'מודיעין - מרכז', 'Eng': "Modi'in-Center", 'Rus': 'Модиин центр ', 'Arb': 'موديعين - المركز'}, '4640': {'Id': '4', 'Heb': 'צומת חולון', 'Eng': 'Holon Junction', 'Rus': 'Холон - Развязка Холон', 'Arb': 'مفترق حولون'}, '4660': {'Id': '4', 'Heb': 'חולון - וולפסון', 'Eng': 'Holon-Wolfson', 'Rus': 'Холон - Вольфсон', 'Arb': 'حولون - ڤولفسون'}, '4680': {'Id': '4', 'Heb': 'בת ים - יוספטל', 'Eng': 'Bat Yam-Yoseftal', 'Rus': 'Бат Ям - Йосеф Таль', 'Arb': 'بات يام - يوسفطال'}, '4690': {'Id': '4', 'Heb': 'בת ים - קוממיות', 'Eng': 'Bat Yam-Komemiyut', 'Rus': 'Бат Ям - Комемуют', 'Arb': 'بات يام - كوميميوت'}, '9800': {'Id': '9', 'Heb': 'ראשון לציון-משה דיין', 'Eng': 'Rishon LeTsiyon-Moshe Dayan', 'Rus': 'Ришон-Ле-Цион станция им. Моше Даяна', 'Arb': 'ريشون لتسيون -موشي ديان'}, '9000': {'Id': '9', 'Heb': 'יבנה מערב', 'Eng': 'Yavne-West', 'Rus': 'Явне-Запад', 'Arb': 'ياڤني - غرب'}, '9600': {'Id': '9', 'Heb': 'שדרות', 'Eng': 'Sderot', 'Rus': 'Сдерот', 'Arb': 'سديروت'}, '9650': {'Id': '9', 'Heb': 'נתיבות', 'Eng': 'Netivot', 'Rus': 'Нетивот', 'Arb': 'نتيفوت'}, '9700': {'Id': '9', 'Heb': 'אופקים', 'Eng': 'Ofakim', 'Rus': 'Офаким', 'Arb': 'أوفاكيم'}, '3310': {'Id': '3', 'Heb': 'נתניה - ספיר', 'Eng': 'Netanya-Sapir', 'Rus': 'Нетания – Сапир', 'Arb': 'نتانيا - سبير'}, '1240': {'Id': '1', 'Heb': 'יקנעם - כפר יהושע', 'Eng': "Yokne'am-Kfar Yehoshu'a", 'Rus': 'Йокнеам – Кфар-Иегошуа', 'Arb': 'يوكنعام – كفار يهوشوع'}, '1250': {'Id': '1', 'Heb': 'מגדל העמק - כפר ברוך', 'Eng': "Migdal Ha'emek-Kfar Barukh", 'Rus': 'Мигдаль-Ха-Эмек – Кфар Барух', 'Arb': 'مجدال هعيمك – كفار باروخ'}, '1260': {'Id': '1', 'Heb': 'עפולה ר.איתן', 'Eng': 'Afula R.Eitan', 'Rus': 'Афула Р. Эйтан', 'Arb': 'العفولة ر. ايتان'}, '1280': {'Id': '1', 'Heb': 'בית שאן', 'Eng': "Beit She'an", 'Rus': 'Бейт Шеан', 'Arb': 'بيت شآن'}, '1820': {'Id': '1', 'Heb': 'אחיהוד', 'Eng': 'Ahihud', 'Rus': 'Ахихуд', 'Arb': 'احيهود'}, '1840': {'Id': '1', 'Heb': 'כרמיאל', 'Eng': 'Karmiel', 'Rus': 'Кармиэль', 'Arb': 'كرميئيل'}, '2940': {'Id': '2', 'Heb': 'רעננה מערב', 'Eng': "Ra'anana West", 'Rus': 'Раанана-Вест', 'Arb': 'رعنانا ويست'}, '2960': {'Id': '2', 'Heb': 'רעננה דרום', 'Eng': "Ra'anana South", 'Rus': 'Раанана Южный', 'Arb': 'رعنانا الجنوبية'}, '6150': {'Id': '6', 'Heb': 'קרית מלאכי - יואב', 'Eng': 'Kiryat Malakhi – Yoav', 'Rus': 'Кирьят Малахи-Йоав', 'Arb': 'كريات ملاخي – يوآڤ'}, '680': {'Id': '6', 'Heb': 'ירושלים - יצחק נבון', 'Eng': 'Jerusalem - Yitzhak Navon', 'Rus': 'Иерусалим - Ицхак Навон', 'Arb': 'أورشليم – يتسحاق ناڤون'}} -STATION_INDEX = {'3': '3310', 'תל אביב סבידור מרכז': '3700', 'tel aviv savidor center': '3700', 'тель авив мерказ центральная': '3700', 'تل ابيب – ساڤيدور المركز': '3700', 'הרצליה': '3500', 'hertsliya': '3500', 'герцлия': '3500', 'هرتسليا': '3500', 'בית יהושע': '3400', 'bet yehoshua': '3400', 'бейт иегошуа': '3400', 'بيت يهوشوع': '3400', 'נתניה': '3300', 'netanya': '3300', 'нетания': '3300', 'نتانيا': '3300', 'חדרה מערב': '3100', 'hadera west': '3100', 'хадера маарав': '3100', 'الخضيرة غرب': '3100', '2': '2960', 'בנימינה': '2800', 'binyamina': '2800', 'биньямина': '2800', 'بنيامينا': '2800', 'קיסריה פרדס חנה': '2820', 'caesarea pardes hana': '2820', 'кейсария пардес хана': '2820', 'قيساريا بارديس حنا': '2820', 'עתלית': '2500', 'atlit': '2500', 'атлит': '2500', 'عتليت': '2500', 'חיפה בת גלים': '2200', 'haifa bat galim': '2200', 'хайфа бат галим': '2200', 'حيفا بات چاليم': '2200', '1': '1840', 'חוצות המפרץ': '1300', 'hutsot hamifrats': '1300', 'хоцот ха мифрац': '1300', 'حوتسوت همفراتس': '1300', '7': '7500', 'קריית חיים': '700', 'kiryat hayim': '700', 'кирьят хаим': '700', 'كريات حاييم': '700', 'קריית מוצקין': '1400', 'kiryat motzkin': '1400', 'кирьят моцкин': '1400', 'كريات موتسكين': '1400', 'עכו': '1500', 'ako': '1500', 'акко': '1500', 'عكا': '1500', 'חיפה חוף הכרמל (ש רזיאל)': '2300', 'haifa hof hakarmel (razi`el)': '2300', 'хайфа хоф ха кармель': '2300', 'حيفا شاطئ الكرمل': '2300', '8': '8550', 'כפר סבא נורדאו (א קוסטיוק)': '8700', 'kfar sava nordau (a.kostyuk)': '8700', 'кфар саба – нордау (а. костюк)': '8700', 'كفار سابا نورداو': '8700', 'נהריה': '1600', 'nahariya': '1600', 'нагария': '1600', 'نهاريا': '1600', '6': '680', 'ירושלים גן החיות התנכי': '6500', 'jerusalem biblical zoo': '6500', 'иерусалим – зоопарк': '6500', 'القدس حديقة الحيوان التوراتية': '6500', 'בית שמש': '6300', 'bet shemesh': '6300', 'бейт шемеш': '6300', 'بيت شيمش': '6300', 'קריית גת': '7000', 'kiryat gat': '7000', 'кирьят гат': '7000', 'كريات چات': '7000', '5': '5150', 'לוד': '5000', 'lod': '5000', 'лод': '5000', 'اللد': '5000', 'באר שבע צפון/אוניברסיטה': '7300', 'beer sheva north/university': '7300', 'беер шева цафон': '7300', 'بئر السبع شمال/الجامعة': '7300', '4': '4690', 'כפר חב"ד': '4800', 'kfar habad': '4800', 'кфар хабад': '4800', 'كفار حباد': '4800', 'תל אביב השלום': '4600', 'tel aviv hashalom': '4600', 'тель авив ха шалом': '4600', 'تل أبيب السلام': '4600', 'חיפה מרכז השמונה': '2100', 'haifa center hashmona': '2100', 'хайфа мерказ центральная': '2100', 'حيفا المركز هشمونا': '2100', 'רמלה': '5010', 'ramla': '5010', 'рамле': '5010', 'الرملة': '5010', 'ראש העין צפון': '8800', 'rosh haayin north': '8800', 'рош ха айн цафон': '8800', 'روش هعاين شمال': '8800', 'באר יעקב': '5300', 'beer yaakov': '5300', 'беер яаков': '5300', 'بئير يعكوف': '5300', 'רחובות (א הדר)': '5200', 'rehovot (e. hadar)': '5200', 'реховот им. а. хадара': '5200', 'رحوڤوت': '5200', 'יבנה מזרח': '5410', 'yavne east': '5410', 'явне восток': '5410', 'ياڤنه شرق': '5410', '9': '9700', 'ראשון לציון הראשונים': '9100', 'rishon letsiyon harishonim': '9100', 'ришон ле цион ха ришоним': '9100', 'ريشون لتسيون هريشونيم': '9100', 'אשדוד עד הלום (מ בר כוכבא)': '5800', 'ashdod ad halom (m.bar kochva)': '5800', 'ашдод ад халом (м. бар кохва)': '5800', 'أشدود عاد هلوم': '5800', 'פתח תקווה סגולה': '4250', 'petah tikva segula': '4250', 'петах тиква сгула': '4250', 'بيتح تكڤا سچوله': '4250', 'בני ברק': '4100', 'bnei brak': '4100', 'бней брак': '4100', 'بني براك': '4100', 'תל אביב אוניברסיטה': '3600', 'tel aviv university': '3600', 'тель авив университет': '3600', 'تل أبيب الجامعة': '3600', 'באר שבע מרכז': '7320', 'beer sheva center': '7320', 'беер шева мерказ': '7320', 'بئر السبع المركز': '7320', 'מרכזית המפרץ (לב המפרץ)': '1220', 'hamifrats central station': '1220', 'центральная станция ха мифрац': '1220', 'همفراتس المركزية': '1220', 'תל אביב ההגנה': '4900', 'tel aviv hahagana': '4900', 'тель авив ха хагана': '4900', 'تل أبيب ههچناه': '4900', 'נמל תעופה בן גוריון': '8600', 'ben gurion airport': '8600', 'бен гурион аэропорт': '8600', 'مطار بن چوريون': '8600', 'ירושלים מלחה': '6700', 'jerusalem malha': '6700', 'иерусалим малха': '6700', 'القدس المالحه': '6700', 'אשקלון': '5900', 'ashkelon': '5900', 'ашкелон': '5900', 'أشكلون': '5900', 'דימונה': '7500', 'dimona': '7500', 'димона': '7500', 'ديمونا': '7500', 'הוד השרון סוקולוב': '9200', 'hod hasharon sokolov': '9200', 'ход хашарон соколов': '9200', 'هود هشارون سوكولوڤ': '9200', 'פתח תקווה קריית אריה': '4170', 'petah tikva kiryat arye': '4170', 'петах тиква – кирьят арье': '4170', 'بيتح تكڤا كريات أريه': '4170', 'לוד גני אביב': '5150', 'lod gane aviv': '5150', 'лод ганей авив': '5150', 'اللد چاني أڤيڤ': '5150', 'להבים רהט': '8550', 'lehavim rahat': '8550', 'леавим рахат': '8550', 'لهاڤيم رهط': '8550', 'פאתי מודיעין': '300', 'paate modiin': '300', 'патей модиин': '300', 'بأتي موديعين': '300', 'מודיעין מרכז': '400', 'modiin center': '400', 'модиин центр': '400', 'موديعين المركز': '400', 'צומת חולון': '4640', 'holon junction': '4640', 'холон развязка холон': '4640', 'مفترق حولون': '4640', 'חולון וולפסון': '4660', 'holon wolfson': '4660', 'холон вольфсон': '4660', 'حولون ڤولفسون': '4660', 'בת ים יוספטל': '4680', 'bat yam yoseftal': '4680', 'бат ям йосеф таль': '4680', 'بات يام يوسفطال': '4680', 'בת ים קוממיות': '4690', 'bat yam komemiyut': '4690', 'бат ям комемуют': '4690', 'بات يام كوميميوت': '4690', 'ראשון לציון משה דיין': '9800', 'rishon letsiyon moshe dayan': '9800', 'ришон ле цион станция им. моше даяна': '9800', 'ريشون لتسيون موشي ديان': '9800', 'יבנה מערב': '9000', 'yavne west': '9000', 'явне запад': '9000', 'ياڤني غرب': '9000', 'שדרות': '9600', 'sderot': '9600', 'сдерот': '9600', 'سديروت': '9600', 'נתיבות': '9650', 'netivot': '9650', 'нетивот': '9650', 'نتيفوت': '9650', 'אופקים': '9700', 'ofakim': '9700', 'офаким': '9700', 'أوفاكيم': '9700', 'נתניה ספיר': '3310', 'netanya sapir': '3310', 'нетания – сапир': '3310', 'نتانيا سبير': '3310', 'יקנעם כפר יהושע': '1240', 'yokneam kfar yehoshua': '1240', 'йокнеам – кфар иегошуа': '1240', 'يوكنعام – كفار يهوشوع': '1240', 'מגדל העמק כפר ברוך': '1250', 'migdal haemek kfar barukh': '1250', 'мигдаль ха эмек – кфар барух': '1250', 'مجدال هعيمك – كفار باروخ': '1250', 'עפולה ר.איתן': '1260', 'afula r.eitan': '1260', 'афула р. эйтан': '1260', 'العفولة ر. ايتان': '1260', 'בית שאן': '1280', 'beit shean': '1280', 'бейт шеан': '1280', 'بيت شآن': '1280', 'אחיהוד': '1820', 'ahihud': '1820', 'ахихуд': '1820', 'احيهود': '1820', 'כרמיאל': '1840', 'karmiel': '1840', 'кармиэль': '1840', 'كرميئيل': '1840', 'רעננה מערב': '2940', 'raanana west': '2940', 'раанана вест': '2940', 'رعنانا ويست': '2940', 'רעננה דרום': '2960', 'raanana south': '2960', 'раанана южный': '2960', 'رعنانا الجنوبية': '2960', 'קרית מלאכי יואב': '6150', 'kiryat malakhi – yoav': '6150', 'кирьят малахи йоав': '6150', 'كريات ملاخي – يوآڤ': '6150', 'ירושלים יצחק נבון': '680', 'jerusalem yitzhak navon': '680', 'иерусалим ицхак навон': '680', 'أورشليم – يتسحاق ناڤون': '680'} +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +STATIONS = {'3700': {'Heb': 'תל אביב - סבידור מרכז', 'Eng': 'Tel Aviv-Savidor Center', + 'Rus': 'Тель-Авив - Мерказ - Центральная', 'Arb': 'تل ابيب – ساڤيدور المركز'}, + '3500': {'Heb': 'הרצליה', 'Eng': 'Hertsliya', 'Rus': 'Герцлия', 'Arb': 'هرتسليا'}, + '3400': {'Heb': 'בית יהושע', 'Eng': "Bet Yehoshu'a", 'Rus': 'Бейт-Иегошуа ', 'Arb': 'بيت يهوشوع'}, + '3300': {'Heb': 'נתניה', 'Eng': 'Netanya', 'Rus': 'Нетания', 'Arb': 'نتانيا'}, + '3100': {'Heb': 'חדרה - מערב', 'Eng': 'Hadera-West', 'Rus': 'Хадера - Маарав', 'Arb': 'الخضيرة - غرب '}, + '2800': {'Heb': 'בנימינה', 'Eng': 'Binyamina', 'Rus': 'Биньямина', 'Arb': 'بنيامينا'}, + '2820': {'Heb': 'קיסריה - פרדס חנה', 'Eng': 'Caesarea-Pardes Hana', 'Rus': 'Кейсария - Пардес-Хана', + 'Arb': 'قيساريا - بارديس حنا'}, + '2500': {'Heb': 'עתלית', 'Eng': 'Atlit', 'Rus': 'Атлит', 'Arb': 'عتليت'}, + '2200': {'Heb': 'חיפה - בת גלים', 'Eng': 'Haifa-Bat Galim', 'Rus': 'Хайфа - Бат-Галим', + 'Arb': 'حيفا - بات چاليم'}, + '1300': {'Heb': 'חוצות המפרץ', 'Eng': 'Hutsot HaMifrats', 'Rus': 'Хоцот ха-Мифрац ', + 'Arb': 'حوتسوت همفراتس'}, + '700': {'Heb': 'קריית חיים', 'Eng': 'Kiryat Hayim', 'Rus': 'Кирьят-Хаим', 'Arb': 'كريات حاييم'}, + '1400': {'Heb': 'קריית מוצקין', 'Eng': 'Kiryat Motzkin', 'Rus': 'Кирьят-Моцкин', 'Arb': 'كريات موتسكين'}, + '1500': {'Heb': 'עכו', 'Eng': 'Ako', 'Rus': 'Акко ', 'Arb': 'عكا'}, + '2300': {'Heb': "חיפה - חוף הכרמל (ש' רזיאל)", 'Eng': 'Haifa-Hof HaKarmel (Razi`el)', + 'Rus': 'Хайфа Хоф ха-Кармель', 'Arb': 'حيفا - شاطئ الكرمل'}, + '8700': {'Heb': "כפר סבא - נורדאו (א' קוסטיוק)", 'Eng': 'Kfar Sava-Nordau (A.Kostyuk)', + 'Rus': 'Кфар-Саба – Нордау (А. Костюк)', 'Arb': 'كفار سابا - نورداو'}, + '1600': {'Heb': 'נהריה', 'Eng': 'Nahariya', 'Rus': 'Нагария', 'Arb': 'نهاريا'}, + '6500': {'Heb': 'ירושלים - גן החיות התנכי', 'Eng': 'Jerusalem-Biblical Zoo', 'Rus': 'Иерусалим – зоопарк', + 'Arb': 'القدس - حديقة الحيوان التوراتية'}, + '6300': {'Heb': 'בית שמש', 'Eng': 'Bet Shemesh', 'Rus': 'Бейт Шемеш', 'Arb': 'بيت شيمش'}, + '7000': {'Heb': 'קריית גת', 'Eng': 'Kiryat Gat', 'Rus': 'Кирьят-Гат ', 'Arb': 'كريات چات'}, + '5000': {'Heb': 'לוד', 'Eng': 'Lod', 'Rus': 'Лод', 'Arb': 'اللد'}, + '7300': {'Heb': 'באר שבע- צפון/אוניברסיטה', 'Eng': "Be'er Sheva-North/University", 'Rus': 'Беер-Шева Цафон', + 'Arb': 'بئر السبع - شمال/الجامعة'}, + '4800': {'Heb': 'כפר חב"ד', 'Eng': 'Kfar Habad', 'Rus': 'Кфар ХАБАД', 'Arb': 'كفار حباد'}, + '4600': {'Heb': 'תל אביב - השלום', 'Eng': 'Tel Aviv-HaShalom', 'Rus': 'Тель-Авив - ха-Шалом', + 'Arb': 'تل أبيب - السلام'}, + '2100': {'Heb': 'חיפה- מרכז השמונה', 'Eng': 'Haifa Center-HaShmona', 'Rus': 'Хайфа - Мерказ - Центральная', + 'Arb': 'حيفا المركز - هشمونا'}, + '5010': {'Heb': 'רמלה', 'Eng': 'Ramla', 'Rus': 'Рамле', 'Arb': 'الرملة'}, + '8800': {'Heb': 'ראש העין - צפון', 'Eng': "Rosh Ha'Ayin-North", 'Rus': 'Рош ха-Айн Цафон', + 'Arb': 'روش هعاين - شمال'}, + '5300': {'Heb': 'באר יעקב', 'Eng': "Be'er Ya'akov", 'Rus': 'Беер-Яаков', 'Arb': 'بئير يعكوف'}, + '5200': {'Heb': "רחובות (א' הדר) ", 'Eng': 'Rehovot (E. Hadar)', 'Rus': 'Реховот- им. А. Хадара', + 'Arb': 'رحوڤوت'}, + '5410': {'Heb': 'יבנה מזרח', 'Eng': 'Yavne-East', 'Rus': 'Явне-Восток', 'Arb': 'ياڤنه - شرق'}, + '9100': {'Heb': 'ראשון לציון - הראשונים', 'Eng': 'Rishon LeTsiyon-HaRishonim', + 'Rus': 'Ришон ле-Цион - Ха-Ришоним ', 'Arb': 'ريشون لتسيون - هريشونيم'}, + '5800': {'Heb': "אשדוד עד הלום (מ' בר כוכבא)", 'Eng': 'Ashdod-Ad Halom (M.Bar Kochva)', + 'Rus': 'Ашдод-ад-Халом (М. Бар Кохва)', 'Arb': 'أشدود - عاد هلوم'}, + '4250': {'Heb': 'פתח תקווה - סגולה', 'Eng': 'Petah Tikva-Segula', 'Rus': 'Петах-Тиква - Сгула', + 'Arb': 'بيتح تكڤا - سچوله'}, + '4100': {'Heb': 'בני ברק', 'Eng': 'Bnei Brak', 'Rus': 'Бней-Брак', 'Arb': 'بني براك'}, + '3600': {'Heb': 'תל אביב - אוניברסיטה', 'Eng': 'Tel Aviv-University', 'Rus': 'Тель-Авив - Университет', + 'Arb': 'تل أبيب - الجامعة'}, + '7320': {'Heb': 'באר שבע - מרכז', 'Eng': "Be'er Sheva-Center", 'Rus': 'Беер-Шева Мерказ', + 'Arb': 'بئر السبع - المركز'}, + '1220': {'Heb': 'מרכזית המפרץ (לב המפרץ)', 'Eng': 'HaMifrats Central Station', + 'Rus': 'Центральная станция Ха-Мифрац', 'Arb': 'همفراتس المركزية'}, + '4900': {'Heb': 'תל אביב - ההגנה', 'Eng': 'Tel Aviv-HaHagana', 'Rus': 'Тель-Авив - ха-Хагана ', + 'Arb': 'تل أبيب - ههچناه'}, + '8600': {'Heb': 'נמל תעופה בן גוריון', 'Eng': 'Ben Gurion Airport', 'Rus': 'Бен-Гурион Аэропорт', + 'Arb': 'مطار بن چوريون'}, + '6700': {'Heb': 'ירושלים - מלחה', 'Eng': 'Jerusalem-Malha', 'Rus': 'Иерусалим - Малха', + 'Arb': 'القدس - المالحه'}, + '5900': {'Heb': 'אשקלון', 'Eng': 'Ashkelon', 'Rus': 'Ашкелон ', 'Arb': 'أشكلون'}, + '7500': {'Heb': 'דימונה', 'Eng': 'Dimona', 'Rus': 'Димона', 'Arb': 'ديمونا'}, + '9200': {'Heb': 'הוד השרון - סוקולוב', 'Eng': 'Hod HaSharon-Sokolov', 'Rus': 'Ход Хашарон - Соколов', + 'Arb': 'هود هشارون - سوكولوڤ'}, + '4170': {'Heb': 'פתח תקווה - קריית אריה', 'Eng': 'Petah Tikva-Kiryat Arye', + 'Rus': 'Петах Тиква – Кирьят Арье', 'Arb': 'بيتح تكڤا - كريات أريه'}, + '5150': {'Heb': 'לוד גני אביב', 'Eng': 'Lod-Gane Aviv', 'Rus': 'Лод - Ганей Авив', + 'Arb': 'اللد - چاني أڤيڤ'}, + '8550': {'Heb': 'להבים - רהט', 'Eng': 'Lehavim-Rahat', 'Rus': 'Леавим - Рахат', 'Arb': 'لهاڤيم - رهط'}, + '300': {'Heb': 'פאתי מודיעין', 'Eng': "Pa'ate Modi'in", 'Rus': 'Патей Модиин', 'Arb': 'بأتي موديعين'}, + '400': {'Heb': 'מודיעין - מרכז', 'Eng': "Modi'in-Center", 'Rus': 'Модиин центр ', + 'Arb': 'موديعين - المركز'}, + '4640': {'Heb': 'צומת חולון', 'Eng': 'Holon Junction', 'Rus': 'Холон - Развязка Холон', + 'Arb': 'مفترق حولون'}, + '4660': {'Heb': 'חולון - וולפסון', 'Eng': 'Holon-Wolfson', 'Rus': 'Холон - Вольфсон', + 'Arb': 'حولون - ڤولفسون'}, + '4680': {'Heb': 'בת ים - יוספטל', 'Eng': 'Bat Yam-Yoseftal', 'Rus': 'Бат Ям - Йосеф Таль', + 'Arb': 'بات يام - يوسفطال'}, + '4690': {'Heb': 'בת ים - קוממיות', 'Eng': 'Bat Yam-Komemiyut', 'Rus': 'Бат Ям - Комемуют', + 'Arb': 'بات يام - كوميميوت'}, + '9800': {'Heb': 'ראשון לציון-משה דיין', 'Eng': 'Rishon LeTsiyon-Moshe Dayan', + 'Rus': 'Ришон-Ле-Цион станция им. Моше Даяна', 'Arb': 'ريشون لتسيون -موشي ديان'}, + '9000': {'Heb': 'יבנה מערב', 'Eng': 'Yavne-West', 'Rus': 'Явне-Запад', 'Arb': 'ياڤني - غرب'}, + '9600': {'Heb': 'שדרות', 'Eng': 'Sderot', 'Rus': 'Сдерот', 'Arb': 'سديروت'}, + '9650': {'Heb': 'נתיבות', 'Eng': 'Netivot', 'Rus': 'Нетивот', 'Arb': 'نتيفوت'}, + '9700': {'Heb': 'אופקים', 'Eng': 'Ofakim', 'Rus': 'Офаким', 'Arb': 'أوفاكيم'}, + '3310': {'Heb': 'נתניה - ספיר', 'Eng': 'Netanya-Sapir', 'Rus': 'Нетания – Сапир', 'Arb': 'نتانيا - سبير'}, + '1240': {'Heb': 'יקנעם - כפר יהושע', 'Eng': "Yokne'am-Kfar Yehoshu'a", 'Rus': 'Йокнеам – Кфар-Иегошуа', + 'Arb': 'يوكنعام – كفار يهوشوع'}, + '1250': {'Heb': 'מגדל העמק - כפר ברוך', 'Eng': "Migdal Ha'emek-Kfar Barukh", + 'Rus': 'Мигдаль-Ха-Эмек – Кфар Барух', 'Arb': 'مجدال هعيمك – كفار باروخ'}, + '1260': {'Heb': 'עפולה ר.איתן', 'Eng': 'Afula R.Eitan', 'Rus': 'Афула Р. Эйтан', + 'Arb': 'العفولة ر. ايتان'}, + '1280': {'Heb': 'בית שאן', 'Eng': "Beit She'an", 'Rus': 'Бейт Шеан', 'Arb': 'بيت شآن'}, + '1820': {'Heb': 'אחיהוד', 'Eng': 'Ahihud', 'Rus': 'Ахихуд', 'Arb': 'احيهود'}, + '1840': {'Heb': 'כרמיאל', 'Eng': 'Karmiel', 'Rus': 'Кармиэль', 'Arb': 'كرميئيل'}, + '2940': {'Heb': 'רעננה מערב', 'Eng': "Ra'anana West", 'Rus': 'Раанана-Вест', 'Arb': 'رعنانا ويست'}, + '2960': {'Heb': 'רעננה דרום', 'Eng': "Ra'anana South", 'Rus': 'Раанана Южный', 'Arb': 'رعنانا الجنوبية'}, + '6150': {'Heb': 'קרית מלאכי - יואב', 'Eng': 'Kiryat Malakhi – Yoav', 'Rus': 'Кирьят Малахи-Йоав', + 'Arb': 'كريات ملاخي – يوآڤ'}, + '680': {'Heb': 'ירושלים - יצחק נבון', 'Eng': 'Jerusalem - Yitzhak Navon', 'Rus': 'Иерусалим - Ицхак Навон', + 'Arb': 'أورشليم – يتسحاق ناڤون'}} +STATION_INDEX = {'תל אביב סבידור מרכז': '3700', 'tel aviv savidor center': '3700', + 'тель авив мерказ центральная': '3700', 'تل ابيب – ساڤيدور المركز': '3700', 'הרצליה': '3500', + 'hertsliya': '3500', 'герцлия': '3500', 'هرتسليا': '3500', 'בית יהושע': '3400', 'bet yehoshua': '3400', + 'бейт иегошуа': '3400', 'بيت يهوشوع': '3400', 'נתניה': '3300', 'netanya': '3300', 'нетания': '3300', + 'نتانيا': '3300', 'חדרה מערב': '3100', 'hadera west': '3100', 'хадера маарав': '3100', + 'الخضيرة غرب': '3100', 'בנימינה': '2800', 'binyamina': '2800', 'биньямина': '2800', 'بنيامينا': '2800', + 'קיסריה פרדס חנה': '2820', 'caesarea pardes hana': '2820', 'кейсария пардес хана': '2820', + 'قيساريا بارديس حنا': '2820', 'עתלית': '2500', 'atlit': '2500', 'атлит': '2500', 'عتليت': '2500', + 'חיפה בת גלים': '2200', 'haifa bat galim': '2200', 'хайфа бат галим': '2200', 'حيفا بات چاليم': '2200', + 'חוצות המפרץ': '1300', 'hutsot hamifrats': '1300', 'хоцот ха мифрац': '1300', 'حوتسوت همفراتس': '1300', + 'קריית חיים': '700', 'kiryat hayim': '700', 'кирьят хаим': '700', 'كريات حاييم': '700', + 'קריית מוצקין': '1400', 'kiryat motzkin': '1400', 'кирьят моцкин': '1400', 'كريات موتسكين': '1400', + 'עכו': '1500', 'ako': '1500', 'акко': '1500', 'عكا': '1500', 'חיפה חוף הכרמל (ש רזיאל)': '2300', + 'haifa hof hakarmel (razi`el)': '2300', 'хайфа хоф ха кармель': '2300', 'حيفا شاطئ الكرمل': '2300', + 'כפר סבא נורדאו (א קוסטיוק)': '8700', 'kfar sava nordau (a.kostyuk)': '8700', + 'кфар саба – нордау (а. костюк)': '8700', 'كفار سابا نورداو': '8700', 'נהריה': '1600', + 'nahariya': '1600', 'нагария': '1600', 'نهاريا': '1600', 'ירושלים גן החיות התנכי': '6500', + 'jerusalem biblical zoo': '6500', 'иерусалим – зоопарк': '6500', + 'القدس حديقة الحيوان التوراتية': '6500', 'בית שמש': '6300', 'bet shemesh': '6300', + 'бейт шемеш': '6300', 'بيت شيمش': '6300', 'קריית גת': '7000', 'kiryat gat': '7000', + 'кирьят гат': '7000', 'كريات چات': '7000', 'לוד': '5000', 'lod': '5000', 'лод': '5000', 'اللد': '5000', + 'באר שבע צפון/אוניברסיטה': '7300', 'beer sheva north/university': '7300', 'беер шева цафон': '7300', + 'بئر السبع شمال/الجامعة': '7300', 'כפר חב"ד': '4800', 'kfar habad': '4800', 'кфар хабад': '4800', + 'كفار حباد': '4800', 'תל אביב השלום': '4600', 'tel aviv hashalom': '4600', + 'тель авив ха шалом': '4600', 'تل أبيب السلام': '4600', 'חיפה מרכז השמונה': '2100', + 'haifa center hashmona': '2100', 'хайфа мерказ центральная': '2100', 'حيفا المركز هشمونا': '2100', + 'רמלה': '5010', 'ramla': '5010', 'рамле': '5010', 'الرملة': '5010', 'ראש העין צפון': '8800', + 'rosh haayin north': '8800', 'рош ха айн цафон': '8800', 'روش هعاين شمال': '8800', 'באר יעקב': '5300', + 'beer yaakov': '5300', 'беер яаков': '5300', 'بئير يعكوف': '5300', 'רחובות (א הדר)': '5200', + 'rehovot (e. hadar)': '5200', 'реховот им. а. хадара': '5200', 'رحوڤوت': '5200', 'יבנה מזרח': '5410', + 'yavne east': '5410', 'явне восток': '5410', 'ياڤنه شرق': '5410', 'ראשון לציון הראשונים': '9100', + 'rishon letsiyon harishonim': '9100', 'ришон ле цион ха ришоним': '9100', + 'ريشون لتسيون هريشونيم': '9100', 'אשדוד עד הלום (מ בר כוכבא)': '5800', + 'ashdod ad halom (m.bar kochva)': '5800', 'ашдод ад халом (м. бар кохва)': '5800', + 'أشدود عاد هلوم': '5800', 'פתח תקווה סגולה': '4250', 'petah tikva segula': '4250', + 'петах тиква сгула': '4250', 'بيتح تكڤا سچوله': '4250', 'בני ברק': '4100', 'bnei brak': '4100', + 'бней брак': '4100', 'بني براك': '4100', 'תל אביב אוניברסיטה': '3600', 'tel aviv university': '3600', + 'тель авив университет': '3600', 'تل أبيب الجامعة': '3600', 'באר שבע מרכז': '7320', + 'beer sheva center': '7320', 'беер шева мерказ': '7320', 'بئر السبع المركز': '7320', + 'מרכזית המפרץ (לב המפרץ)': '1220', 'hamifrats central station': '1220', + 'центральная станция ха мифрац': '1220', 'همفراتس المركزية': '1220', 'תל אביב ההגנה': '4900', + 'tel aviv hahagana': '4900', 'тель авив ха хагана': '4900', 'تل أبيب ههچناه': '4900', + 'נמל תעופה בן גוריון': '8600', 'ben gurion airport': '8600', 'бен гурион аэропорт': '8600', + 'مطار بن چوريون': '8600', 'ירושלים מלחה': '6700', 'jerusalem malha': '6700', 'иерусалим малха': '6700', + 'القدس المالحه': '6700', 'אשקלון': '5900', 'ashkelon': '5900', 'ашкелон': '5900', 'أشكلون': '5900', + 'דימונה': '7500', 'dimona': '7500', 'димона': '7500', 'ديمونا': '7500', 'הוד השרון סוקולוב': '9200', + 'hod hasharon sokolov': '9200', 'ход хашарон соколов': '9200', 'هود هشارون سوكولوڤ': '9200', + 'פתח תקווה קריית אריה': '4170', 'petah tikva kiryat arye': '4170', 'петах тиква – кирьят арье': '4170', + 'بيتح تكڤا كريات أريه': '4170', 'לוד גני אביב': '5150', 'lod gane aviv': '5150', + 'лод ганей авив': '5150', 'اللد چاني أڤيڤ': '5150', 'להבים רהט': '8550', 'lehavim rahat': '8550', + 'леавим рахат': '8550', 'لهاڤيم رهط': '8550', 'פאתי מודיעין': '300', 'paate modiin': '300', + 'патей модиин': '300', 'بأتي موديعين': '300', 'מודיעין מרכז': '400', 'modiin center': '400', + 'модиин центр': '400', 'موديعين المركز': '400', 'צומת חולון': '4640', 'holon junction': '4640', + 'холон развязка холон': '4640', 'مفترق حولون': '4640', 'חולון וולפסון': '4660', + 'holon wolfson': '4660', 'холон вольфсон': '4660', 'حولون ڤولفسون': '4660', 'בת ים יוספטל': '4680', + 'bat yam yoseftal': '4680', 'бат ям йосеф таль': '4680', 'بات يام يوسفطال': '4680', + 'בת ים קוממיות': '4690', 'bat yam komemiyut': '4690', 'бат ям комемуют': '4690', + 'بات يام كوميميوت': '4690', 'ראשון לציון משה דיין': '9800', 'rishon letsiyon moshe dayan': '9800', + 'ришон ле цион станция им. моше даяна': '9800', 'ريشون لتسيون موشي ديان': '9800', 'יבנה מערב': '9000', + 'yavne west': '9000', 'явне запад': '9000', 'ياڤني غرب': '9000', 'שדרות': '9600', 'sderot': '9600', + 'сдерот': '9600', 'سديروت': '9600', 'נתיבות': '9650', 'netivot': '9650', 'нетивот': '9650', + 'نتيفوت': '9650', 'אופקים': '9700', 'ofakim': '9700', 'офаким': '9700', 'أوفاكيم': '9700', + 'נתניה ספיר': '3310', 'netanya sapir': '3310', 'нетания – сапир': '3310', 'نتانيا سبير': '3310', + 'יקנעם כפר יהושע': '1240', 'yokneam kfar yehoshua': '1240', 'йокнеам – кфар иегошуа': '1240', + 'يوكنعام – كفار يهوشوع': '1240', 'מגדל העמק כפר ברוך': '1250', 'migdal haemek kfar barukh': '1250', + 'мигдаль ха эмек – кфар барух': '1250', 'مجدال هعيمك – كفار باروخ': '1250', 'עפולה ר.איתן': '1260', + 'afula r.eitan': '1260', 'афула р. эйтан': '1260', 'العفولة ر. ايتان': '1260', 'בית שאן': '1280', + 'beit shean': '1280', 'бейт шеан': '1280', 'بيت شآن': '1280', 'אחיהוד': '1820', 'ahihud': '1820', + 'ахихуд': '1820', 'احيهود': '1820', 'כרמיאל': '1840', 'karmiel': '1840', 'кармиэль': '1840', + 'كرميئيل': '1840', 'רעננה מערב': '2940', 'raanana west': '2940', 'раанана вест': '2940', + 'رعنانا ويست': '2940', 'רעננה דרום': '2960', 'raanana south': '2960', 'раанана южный': '2960', + 'رعنانا الجنوبية': '2960', 'קרית מלאכי יואב': '6150', 'kiryat malakhi – yoav': '6150', + 'кирьят малахи йоав': '6150', 'كريات ملاخي – يوآڤ': '6150', 'ירושלים יצחק נבון': '680', + 'jerusalem yitzhak navon': '680', 'иерусалим ицхак навон': '680', 'أورشليم – يتسحاق ناڤون': '680'} diff --git a/israelrailapi/train_station.py b/israelrailapi/train_station.py index f9e1ce8..d5292d0 100644 --- a/israelrailapi/train_station.py +++ b/israelrailapi/train_station.py @@ -4,6 +4,7 @@ from israelrailapi.stations import STATIONS, STATION_INDEX except ImportError: logging.warning("Unable to load station list") + from stations import STATIONS, STATION_INDEX def cleanup_name(n): @@ -24,6 +25,9 @@ def translate_station(station_name): return lookup_station(station_name) +def station_name_to_id(station_id, default_language='Eng'): + return STATIONS[str(station_id)][default_language] + + if __name__ == '__main__': print(STATION_INDEX) -