Journal Le train c'est bien ... quand ça roule.

Posté par .
Tags : aucun
16
22
mar.
2010
Bonjour à tous,
j'ai développé un petit logiciel pour connaître les horaires de train (pour demain en l'occurrence ça sera plutôt des bus) pour une gare donnée.
Vous trouverez ça ici: [http://download.tuxfamily.org/widgetter/widget_ter.tgz]
Pour l'essayer: qmake && make && ./Widget_TER

Je me suis appuyé sur la version fournie par la SNCF pour les systèmes d'exploitation privateurs qui est ici: [http://www.ter-sncf.com/Regions/midi_pyrenees/Fr/Se_deplacer(...)]
Ce sont de simples requêtes HTTP avec des champs bien définis, même pas besoin de documentation ;)
Bon courage à ceux qui vont voyager en train demain.
  • # Documentation de l'API

    Posté par . Évalué à 5.

    Il serait à mon sens judicieux d'essayer de documenter leur API (même si c'est pas franchement notre boulot), ca permettrai à chacun de construire dessus.

    Car j'ai été essayé de faire mumuse avec des requètes GET en HTTP et c'est pas si intuitif que ça, ou alors nous n'avons pas la même intuition. Y a t'il des codes d'erreur, comment accède t'on aux retards des trains, sous quel format est le retour ?

    Autrement c'est une bonne initiative.
    • [^] # Re: Documentation de l'API

      Posté par . Évalué à 9.

      Plus généralement, c'est fort dommage les interfaces Web sans API permettant d'automatiser la collecte d'info.
      Quand il s'agit d'un service financé par de la publicité ça se comprend parfaitement, mais pour:
      - les horaires de la SNCF,
      - les débats de l'AN,
      - les textes sur Légifrance,
      - les horaires des transports en commun de chaque grande agglomération,

      bref, pour tout ce qui ne génère pas directement de l'argent grâce au trafic sur le site Web, une API permettant d'obtenir les infos sans devoir tomber d'accord avec le webmaster sur ce qu'est l'ergonomie, ce serait cool.

      THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.

    • [^] # Re: Documentation de l'API

      Posté par (page perso) . Évalué à 2.

      Les retours sont sous la forme de champs nom=valeur séparés par le signe &. Entrée et sortie en UTF-8.

      Rechercher une gare :

      http://widget.canaltp.fr/Prochains_departs_15122009/dev/gare(...)

      Arguments en GET :
      txtrech = nom de la gare à chercher

      Retour :
      liste des gares trouvées sous la forme ID => nom de la gare

      Voir les trains à venir dans une gare :

      http://widget.canaltp.fr/Prochains_departs_15122009/dev/inde(...)

      Arguments à passer en GET :
      gare = ID de la gare
      nbredepart = nombre de trains à récupérer

      Retourne :
      nomgare = nom de la gare
      info* = infos diverses
      ligne[0-9]+ = infos sur les prochains trains sous forme de CSV "type de train;;heure de départ;gares desservies;;"

      Et voilà :)

      Vu la lenteur du truc j'ai peur que leur petite API ne tienne pas la charge de beaucoup de requêtes, soyez prudents quand même.

      « Je vois bien à quels excès peut conduire une démocratie d'opinion débridée, je le vis tous les jours. » (Nicolas Sarkozy)

      • [^] # Re: Documentation de l'API

        Posté par . Évalué à 1.

        Voir les trains à venir dans une gare :

        http://widget.canaltp.fr/Prochains_departs_15122009/dev/inde(...)

        Arguments à passer en GET :
        gare = ID de la gare
        nbredepart = nombre de trains à récupérer


        On peut aussi en plus préciser l'heure de départ avec les arguments 'datedepart' et 'heuredep'

        Retourne :
        nomgare = nom de la gare
        info* = infos diverses
        ligne[0-9]+ = infos sur les prochains trains sous forme de CSV "type de train;;heure de départ;gares desservies;;"


        les 2 derniers champs (après gares desservies) sont le retard et la cause du retard, je ne sais pas à quoi correspond le champ qui se trouve après 'type de train', je ne l'ai jamais vu rempli...

        Vu la lenteur du truc j'ai peur que leur petite API ne tienne pas la charge de beaucoup de requêtes, soyez prudents quand même.

        Ouais ça rame, mais ça a l'air de fonctionner quand même, on ne se prend pas de timeout ou d'erreur 500... c'est déjà ça.
  • # Pb d'encoding...

    Posté par . Évalué à 4.

    Je viens (rapidement) de tester ton appli et j'ai remarqué un pb d'encoding dans le message expliquant la cause du retard : j'obtiens un losange noir avec un ? blanc, qui précède le texte "Pb gestion trafic".
    • [^] # Re: Pb d'encoding...

      Posté par . Évalué à 1.

      Oui, j'avais vu ça, il y a un caractère bizarre dans la réponse (0xa0 qui correspond à un espace insécable), il faudra que je le vire.
  • # Le train, c'est sympa…

    Posté par . Évalué à 2.

    … quand tu le prends pas : http://www.bide-et-musique.com/song/8398.html
    • [^] # Re: Le train, c'est sympa…

      Posté par (page perso) . Évalué à -2.

      Oh ça peut être sympa aussi de le prendre. Ce matin j'ai fait collé serré avec une charmante jeune femme.
      Bon j'etais seul trouver ça agréable, elle, elle regardait n'importe où ailleurs mais jamais elle n'a posé les yeux sur moi...
  • # +1+1+1+1+1+1+1+1

    Posté par (page perso) . Évalué à 1.

    Super idée, réalisation pratique. Merci, tu tombes à pic, comme ça je saurai si je dois m'habiller demain matin -c'est la grève mondiale !
    • [^] # Re: +1+1+1+1+1+1+1+1

      Posté par (page perso) . Évalué à 3.

      Hm, quand je fais une recherche depuis ma gare, Sens (89100) je ne vois pas mon train de demain matin. Je me dis, tant mieux, il ne sera pas en retard.
      Mais si je recherche sa gare de départ (Dijon Ville), il est déjà annoncé avec une heure de retard. Serait-ce en réalité le train de ce matin -parfaitement ponctuel ?
      • [^] # Re: +1+1+1+1+1+1+1+1

        Posté par (page perso) . Évalué à 3.

        bin dans le doute, préviens avant de ne pas venir :) (ou plus tard)
        • [^] # Re: +1+1+1+1+1+1+1+1

          Posté par (page perso) . Évalué à 3.

          Plus besoin de prévenir : j'envoie l'url du tar.gz !

          Encore merci à FreeFlight, ça marche du tonnerrois.
          • [^] # Re: +1+1+1+1+1+1+1+1

            Posté par . Évalué à 1.

            Avec plaisir ... tu as bien de la chance, moi je n'ai aucun train qui circule aujourd'hui, que des bus.
  • # Très bonne idée !

    Posté par . Évalué à 1.

    N'oublions pas qu'il existe le très connu site de la Deutsch Bahn : http://reiseauskunft.bahn.de/bin/query.exe/fn

    Vu le niveau ahurissant de qualité des sites de la SNCF toutes les alternatives sont intéressantes !
  • # Il y a aussi

    Posté par (page perso) . Évalué à 2.

    Les même informations en ligne. Par exemple départ de Lyon part dieu :

    http://www.gares-en-mouvement.com/infos_temps_reel.php?gare=(...)

    après le site est parfois très lent.
    • [^] # Re: Il y a aussi

      Posté par . Évalué à 1.

      Le site gare en mouvement propose moins de gares que le widget prochains départs (surtout les petites gares).

      Voici une interface que j'ai faite sur le même principe il y a quelque temps (en php, à mettre sur le réseau de votre entreprise ;) ) :

      [http://github.com/rgenoud/prochains_departs]
      • [^] # Re: Il y a aussi

        Posté par . Évalué à 1.

        Un détail :
        généralement, ce code php ne fonctionnera pas chez votre hébergeur car les requêtes vers d'autres sites sont bloquées...
  • # Reprise et améliorations

    Posté par (page perso) . Évalué à 2.

    Je viens d'y jeter un oeil et deux ou trois petites améliorations seraient intéressantes (ne serait-ce que classer les sources / utiliser un QCompleter pour les gares, signaler le transfert des données, etc...)

    Tu compte le laisser à ce niveau ou le poser sur une forge type codingteam.net (ou en autohébergé)?

    Je vais sûrement apporter les quelques modifs dont je parlais dans le tgv jeudi soir.

    Merci pour la licence GPL ;-)
    • [^] # Re: Reprise et améliorations

      Posté par . Évalué à 1.

      C'est déjà sur le SVN de tuxfamily.
      Signaler le transfert des données, je pensais le faire mais par contre utiliser un QCompleter pour les gares je ne pense pas que ça soit une bonne idée: ça rame trop... déjà que pour demander une gare c'est long. Il faudrait plutôt stocker la dernière gare utilisée via QSettings. En général on utilise toujours la même.
      Si tu comptes jouer avec le code source, récupère la dernière version du SVN.
  • # Backend weboob

    Posté par . Évalué à 8.

    Weboob est un projet encore en développement ayant pour but de créer des frontends permettant d'interragir avec des sites web.

    Un backend a été créé pour canaltp, le site d'où le programme dont parle le journal récupère les informations. La particularité de Weboob est qu'il est dès lors possible de créer divers frontends pour interagir avec des backends de tel ou tel type. Un frontend en CLI a été créé, mais il serait également possible d'en faire un pour Qt ou autre en se concentrant sur l'aspect UI en effectuant des appels simples aux backends.

    Ce qui donne :
    1 rom1@vuginas (master) ~/src/weboob $ weboob/frontends/travel/scripts/travel stations paris
    .--------------------------------.---------------------------------------------.
    | ID                             | Name                                        |
    +--------------------------------+---------------------------------------------+
    | OCE87983940                    | paris bastille                              |
    | OCE87983619                    | porte de paris                              |
    | OCE87442442                    | montauban prax paris                        |
    | OCE87547000                    | gare de Paris-Austerlitz (75000)            |
    | OCE87686667                    | gare de Paris-Bercy (75000)                 |
    | OCE87113001                    | gare de Paris-Est (75000)                   |
    | OCE87391003                    | gare de Paris-Montparnasse (75000)          |
    | OCE87271007                    | gare de Paris-Nord (75000)                  |
    | OCE87712133                    | paris l''hopital (71150)                    |
    | OCE87686006                    | gare de Paris-Gare-de-Lyon (75000)          |
    | OCE87384008                    | gare de Paris-St-Lazare (75000)             |
    | OCE87547026                    | gare de Paris-Auster.(RER C ) (75000)       |
    | OCE87391102                    | gare de Paris-Montp.3-Vaug. (75000)         |
    +--------------------------------'---------------------------------------------+
    |  13 stations listed                                                          |
    '------------------------------------------------------------------------------'
    1 rom1@vuginas (master) ~/src/weboob $ weboob/frontends/travel/scripts/travel departures OCE87391003
    .-----.-----------.-------.-----------------------.-------.--------------------.
    | ID  | Type      | Time  | Arrival               | Late  | Info               |
    +-----+-----------+-------+-----------------------+-------+--------------------+
    |   0 | Train TER | 14:33 | Nogent-le-Rotrou      |       |                    |
    |   1 | TGV       | 14:35 | Bordeaux-Saint-Jean   |       | Train supprimé;    |
    |   2 | TGV       | 15:00 | Quimper               |       |                    |
    |   3 | TGV       | 15:10 | Bordeaux-Saint-Jean   | 00:20 | Grèves SNCF;       |
    |   4 | TGV       | 15:45 | gare d'Hendaye        |       |                    |
    +-----'-----------'-------'-----------------------'-------'--------------------+
    |   5 departures listed                                                        |
    '------------------------------------------------------------------------------'
    • [^] # Re: Backend weboob

      Posté par (page perso) . Évalué à 2.

      MOREINFO
      ENOURL
      Fais un journal !
      • [^] # Re: Backend weboob

        Posté par . Évalué à 3.

        Ainsi que je l'ai dis, le projet est encore en développement et n'est pas encore franchement utilisable pleinement. Donc le journal sera fait quand il y aura quelque chose de sérieux à proposer, avec davantage de backends et de frontends fonctionnels.

        Maintenant, si tu es intéressé, je t'invite à regarder les maigres informations sur [http://weboob.org], notamment le code.
        • [^] # Re: Backend weboob

          Posté par . Évalué à 1.

          J'imagine que ça intéressera certains qu'un contributeur nommé Julien Hébert a rajouté un autre backend, pour transilien.fr cette fois, afin de lister les horaires de RER :

          1 rom1@vuginas (master) ~/src/weboob $ weboob/frontends/travel/scripts/travel departures GAW
          .-----.-----------.-------.-----------------------.-------.--------------------.
          | ID  | Type      | Time  | Arrival               | Late  | Info               |
          +-----+-----------+-------+-----------------------+-------+--------------------+
          |   0 | QURE      | 23:54 | MARNE LA VALLEE CHESSY |       | Voie 1             |
          |   1 | UPIR      | 00:07 | CERGY LE HAUT         |       | Voie 2             |
          |   2 | OPUS      | 00:09 | TORCY MARNE LA VALLEE |       | Voie 1             |
          |   3 | TETE      | 00:22 | POISSY                |       | Voie 2             |
          |   4 | UPIR      | 00:37 | CERGY LE HAUT         |       | Voie 2             |
          +-----'-----------'-------'-----------------------'-------'--------------------+
          |   5 departures listed                                                        |
          '------------------------------------------------------------------------------'

          (GAW étant le code pour la Défense)
  • # Un petit plasmoid aussi...

    Posté par . Évalué à 1.

    Bonjour à tous,

    pour les utilisateurs de KDE4.4, j'ai développé un petit plasmoid proposant à peu près les mêmes fonctionnalités.

    Ca se passe ici : [http://github.com/tolumak/train_schedule_plasmoid.git] et les instructions pour la compilation/installation sont dans le README.

    Actuellement, seulement quelques gares sont gérées (celles qui m'intéressent...) mais il est possible d'en ajouter d'autres via le fichier /usr/share/apps/train_schedule/stations.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.