Skip to content
Stanley edited this page Jul 3, 2011 · 4 revisions

Tematem mojej pracy było napisanie uniwersalnego parsera rozkładów jazdy komunikacji miejskiej, który będzie potrafił przekonwertować je do przyjaznego formatu, niezależnie od źródła danych. Po stworzeniu takiej bazy danych programiści powinni mieć możliwość bez przeszkód tworzyć oprogramowanie wykorzystujące zgromadzone dane.

Zakres projektu

Wyciąganie, z oficjalnych stron internetowych polskich przewoźników miejskich, rozkładów jazdy i konwertowanie ich do przyjaznego formatu JSON. Program ma być kompatybilny w każdym typem rozkładów jazdy w języku HTML, a dodanie kolejnych miast ma nie wymagać niczego więcej, niż dodania paru linii konfiguracji.

Specyfikacja techniczna

Projekt został napisany w języku JavaScript i wykorzystuje framework node.js i jego biblioteki:

  • jsdom - drzewo DOM w języku JavaScript,
  • sizzle - implementacja selektorów, CSS3 w języku JavaScript,
  • couchdb - komunikacja z bazą danych.

Wygenerowane dane zapisywane są w dokumentowej bazie danych CouchDB, która udostępnia RESTful HTTP API, co daje niezależnym programistom natychmiastowy dostęp do danych.

Konfiguracja

Aby dodać nowe źródło rozkładów należy dodać do pliku konfiguracyjnego wpis z następującymi informacjami:

  • code - identyfikator bazy danych,
  • server - źródło danych, serwer HTTP,
  • home - URL strony z wykazem wszystkich linii,
  • encoding - kodowanie znaków na stronie,
  • get - tablica haszująca z selektorami CSS,
    • lines - linki do trasy linii,
    • timetables - linki do rozkładów jazdy linii,
    • opposite - (opcjonalnie) link do przeciwnej linii (tylko jeżeli nie jest zawarta w lines),
    • expiration - tekst zawierający informacje o dacie ważności rozkładu wraz z formatem (RegExp),
    • line_no - numer linii,
    • stop_name - nazwa przystanku,
    • route - trasa lub przystanek docelowy,
    • context - zbiór liści na drzewie DOM zawierający jedną z poniższych informacji,
    • days - opis dnia w którym obowiązuje rozkład,
    • hours - godzina odjazdu,
    • minutes - minuty lub minuta odjazdu.
Clone this wiki locally