From 04244da09cc61841842ba76cab9f2c0b67b38354 Mon Sep 17 00:00:00 2001 From: Bezleputh Date: Tue, 4 Nov 2014 10:13:56 +0100 Subject: [PATCH] [transilien] fix ambiguous departure/arrival in roadmap --- modules/transilien/browser.py | 5 ++++- modules/transilien/pages.py | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/modules/transilien/browser.py b/modules/transilien/browser.py index 5f24ed31..7021e77d 100644 --- a/modules/transilien/browser.py +++ b/modules/transilien/browser.py @@ -42,6 +42,8 @@ class Transilien(PagesBrowser): dep = self.get_stations(departure, False).next().name arr = self.get_stations(arrival, False).next().name self.roadmap_page.go(url='init').request_roadmap(dep, arr, filters.arrival_time) + if self.page.is_ambiguous(): + self.page.fix_ambiguity() return self.page.get_roadmap() def get_stations(self, pattern, only_station=True): @@ -61,7 +63,8 @@ class Transilien(PagesBrowser): _date = datetime.strftime(date, "%d/%m/%Y-%H:%M") - self.horaires_page.go(station=station.replace(' ', '-'), arrival=arrival_id, station2=station_id, arrival2=arrival, date=_date) + self.horaires_page.go(station=station.replace(' ', '-'), arrival=arrival_id, station2=station_id, + arrival2=arrival, date=_date) return self.page.get_departures(station, arrival_name, date) return [] else: diff --git a/modules/transilien/pages.py b/modules/transilien/pages.py index 8e833a62..6d4533b8 100644 --- a/modules/transilien/pages.py +++ b/modules/transilien/pages.py @@ -60,8 +60,21 @@ class Child(Filter): class RoadMapPage(HTMLPage): def request_roadmap(self, station, arrival, arrival_date): form = self.get_form('//form[@id="cRechercheItineraire"]') - form['depart'] = station - form['arrivee'] = arrival + form['depart'] = '%s' % station + form['arrivee'] = '%s' % arrival + form.submit() + + def is_ambiguous(self): + return self.doc.xpath('//select[@id="gare_arrivee_ambigu"] | //select[@id="gare_depart_ambigu"]') + + def fix_ambiguity(self): + form = self.get_form('//form[@id="cRechercheItineraire"]') + if self.doc.xpath('//select[@id="gare_arrivee_ambigu"]'): + form['coordArrivee'] = self.doc.xpath('//select[@id="gare_arrivee_ambigu"]/option[@cat="STOP_AREA"]/@value')[0] + + if self.doc.xpath('//select[@id="gare_depart_ambigu"]'): + form['coordDepart'] = self.doc.xpath('//select[@id="gare_depart_ambigu"]/option[@cat="STOP_AREA"]/@value')[0] + form.submit() def get_roadmap(self):