Skip to content
This repository

Home 

Stanley edited this page · 4 revisions

Pages 1

Clone this wiki locally

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.

Podsumowanie

Uważam, że stworzona przeze mnie aplikacja może okazać się bardzo przydatna, gdyż spełnia wszystkie rygorystyczne założenia początkowe. W idealnym świecie nie istnieją programy implementujące tzw. inżynierię odwrotną, ale w rzeczywistości żaden przewoźnik nie udostępnia interface-ów programistycznych i uzyskanie różnych, ważnych, danych staje się skomplikowane, dlatego uważam że warto im w tym pomóc.

Something went wrong with that request. Please try again.