--- /dev/null
+# -*- coding: UTF-8 -*-
+
+import urllib2
+from urllib2 import URLError
+
+
+from timetable_parser import StanTimetableParser
+
+class STAN:
+
+ RSS_URL = 'http://www.reseau-stan.com/rss'
+
+ def lines(self):
+
+ return [
+ { 'id': 158,
+ 'name': u"Nancy République / Champigneulles",
+ 'numbers': ["321"]
+ },
+ { 'id': 144,
+ 'name': u"Nancy République / Bouxières-aux-Dames",
+ 'numbers': ["322"]
+ },
+ { 'id': 146,
+ 'name': u"Nancy République / Frouard Le Nid",
+ 'numbers': ["323"]
+ },
+ { 'id': 148,
+ 'name': u"Nancy République / Pompey Les Vannes",
+ 'numbers': ["324"]
+ },
+ { 'id': 150,
+ 'name': u"Nancy République / Pompey Fonds de Lavaux",
+ 'numbers': ["325"]
+ },
+ { 'id': 145,
+ 'name': u"Vandoeuvre Vélodrome / Chaligny",
+ 'numbers': ["511"]
+ },
+ { 'id': 147,
+ 'name': u"Vandoeuvre Vélodrome / Pont Saint-Vincent",
+ 'numbers': ["512"]
+ },
+ { 'id': 149,
+ 'name': u"Vandoeuvre Vélodrome / Messein",
+ 'numbers': ["514"]
+ },
+ { 'id': 151,
+ 'name': u"Nancy Place Carnot / Chaligny",
+ 'numbers': ["521"]
+ },
+ { 'id': 153,
+ 'name': u"Nancy Place Carnot / Pont Saint-Vincent",
+ 'numbers': ["522"]
+ },
+ { 'id': 155,
+ 'name': u"Nancy Place Carnot / Bainville-sur-Madon",
+ 'numbers': ["523"]
+ },
+ { 'id': 152,
+ 'name': u"Nancy République / Saint-Nicolas Le Nid",
+ 'numbers': ["621"]
+ },
+ { 'id': 157,
+ 'name': u"Nancy République / Saint-Nicolas République",
+ 'numbers': ["622"]
+ },
+ { 'id': 156,
+ 'name': u"Nancy République / Dombasle Stand",
+ 'numbers': ["623"]
+ },
+ { 'id': 154,
+ 'name': u"Nancy République / Dombasle Maroc",
+ 'numbers': ["624"]
+ },
+ { 'id': 126,
+ 'name': u"Vandoeuvre Parc des Expositions / Nancy République",
+ 'numbers': ["129"]
+ },
+ { 'id': 133,
+ 'name': u"Ligne 80",
+ 'numbers': ["80"]
+ },
+ { 'id': 138,
+ 'name': u"Vandoeuvre CHU Brabois / Essey Mouzimpré",
+ 'numbers': ["Tram 1"]
+ },
+ { 'id': 141,
+ 'name': u"Vandoeuvre CHU Brabois / Centre d\'accueil - Villers les Essarts",
+ 'numbers': ["Ptit Stan Vilers"]
+ },
+ { 'id': 143,
+ 'name': u"Vandoeuvre CHU Brabois / Vandoeuvre Nations - Médecine préventive ",
+ 'numbers': ["Ptit Stan Vandoeuvre"]
+ },
+ { 'id': 140,
+ 'name': u"Laxou Sapinière / Laxou Provinces",
+ 'numbers': ["Ptit Stan Laxou"]
+ },
+ { 'id': 142,
+ 'name': u"Nancy Carnot",
+ 'numbers': ["Ptit Stan Colline"]
+ },
+ { 'id': 134,
+ 'name': u"Malzéville Sadi Carnot - Nancy Cimetière du Sud",
+ 'numbers': ["Minibus"]
+ },
+ { 'id': 159,
+ 'name': u"StanU",
+ 'numbers': ["110"]
+ },
+ { 'id': 112,
+ 'name': u"Maxéville Champ le Boeuf - Nancy Haut du Lièvre / Jarville Sion",
+ 'numbers': ["111", "112"]
+ },
+ { 'id': 96,
+ 'name': u"Houdemont / Vandoeuvre Charmois",
+ 'numbers': ["114"]
+ },
+ { 'id': 98,
+ 'name': u"Ludres / Villers Lycée Stanislas",
+ 'numbers': ["115"]
+ },
+ { 'id': 101,
+ 'name': u"Fléville Fleurychamp - Heillecourt / Villers Lycée Stanislas",
+ 'numbers': ["116"]
+ },
+ { 'id': 103,
+ 'name': u"Nancy Beauregard / Nancy République",
+ 'numbers': ["121"]
+ },
+ { 'id': 135,
+ 'name': u"Villers Clairlieu / Nancy République",
+ 'numbers': ["122", "126"]
+ },
+ { 'id': 106,
+ 'name': u"Vandoeuvre Nations / Nancy République",
+ 'numbers': ["123"]
+ },
+ { 'id': 109,
+ 'name': u"Laxou Mouzon / Nancy République",
+ 'numbers': ["124"]
+ },
+ { 'id': 118,
+ 'name': u"Laxou Provinces / Seichamps",
+ 'numbers': ["130"]
+ },
+ { 'id': 95,
+ 'name': u"Maxéville Mairie / Jarville Sion - Heillecourt - Fléville De la Noue",
+ 'numbers': ["131", "132", "133"]
+ },
+ { 'id': 97,
+ 'name': u"Villers Lycée Stanislas / Maxéville Lafayette - Malzéville Savlons",
+ 'numbers': ["134", "135"]
+ },
+ { 'id': 100,
+ 'name': u"Nancy Cours Léopold / Laneuveville - La Madeleine",
+ 'numbers': ["136", "137"]
+ },
+ { 'id': 102,
+ 'name': u"Laxou Champ le Boeuf / Vandoeurvre Roberval",
+ 'numbers': ["138"]
+ },
+ { 'id': 104,
+ 'name': u"Nancy Cours Léopold / Ludres",
+ 'numbers': ["139"]
+ },
+ { 'id': 114,
+ 'name': u"Malzéville / Saulxures Forêt - Art sur Meurthe",
+ 'numbers': ["141", "142"]
+ },
+ { 'id': 108,
+ 'name': u"Malzéville Pixérécourt / Saulxures",
+ 'numbers': ["161"]
+ },
+ { 'id': 116,
+ 'name': u"Essey C.E.S / Gérard Barrois Stade Marcel Picot",
+ 'numbers': ["162"]
+ },
+ { 'id': 107,
+ 'name': u"Dommartemont / Jarville Sion",
+ 'numbers': ["163"]
+ },
+ { 'id': 110,
+ 'name': u"Essey Mouzimpré / Seichamps - Pulnoy (Lignes accessibles PMR)",
+ 'numbers': ["171", "172"]
+ }
+ ]
+
+
+ def stations(self):
+ '''
+ Extract from http://www.reseau-stan.com/horaires_arret/index7f96.html?rub_code=28
+ and ...... lieux publics
+ '''
+ return {
+ }
+
+
+ def search(self, from_location, from_city, to_location, to_city, datetime, restrict=68):
+ cached_result = self.cached_search(from_location, from_city, to_location, to_city, datetime, restrict)
+ if cached_search is not None:
+ return cached_result
+
+ '''
+ POST to http://www.reseau-stan.com/ri/index.asp
+ from_location: keywordsDep
+ from_city: comDep
+ to_location: keywordsArr
+ to_city: comArr
+ date: laDate (11/03/2009)
+ hour: lHeure (13 = 13h)
+ minute: laMinute
+ restrict: typeDate (68 = partir apres, 65 = arriver avant)
+ '''
+ pass
+
+
+ def cached_search(self, from_location, from_city, to_location, to_city, datetime, restrict=68):
+ cache_id = '-'.join([ from_location, from_city, to_location, to_city, datetime, restrict ])
+ pass
+
+ def load_timetable(self, lineid, date, hour):
+ parser = StanTimetableParser()
+ timetable_raw_html_file = None
+ try:
+ timetable_raw_html_file = self.load_timetable_remote(lineid, date, hour)
+ except URLError, e:
+ print e
+
+ parser.feed(timetable_raw_html_file)
+ parser.close()
+ return parser.result
+
+ def load_timetable_remote(self, lineid, date, hour):
+ url = 'http://www.reseau-stan.com/horaires_ligne/index.asp?rub_code=6&thm_id=7&gpl_id=0&lign_id=%s' % lineid
+ print url
+ response = urllib2.urlopen(url)
+ return response.read()