Плазма/Громадський транспорт/Створення нових записів джерел даних

From KDE UserBase Wiki
This page is a translated version of the page Plasma/Public Transport/CreateServiceProviders and the translation is 100% complete.
Other languages:

Створення нового запису джерела даних

Назви файлів мають починатися з коду країни, потім слід використати символ підкреслювання і вказати скорочену назву джерела (звичайно ж, не слід забувати про суфікс назви). Початком назви файла може бути код країни, "international" або "unknown", потім має бути "_" і скорочена назва джерела даних. Приклади: "de_db", "ch_sbb", "sk_atlas", "international_flightstats". Назва файла XML має завершуватися суфіксом ".xml".


Файл XML

Файл XML має посилатися на файл скрипту, який слід використати і у якому має міститися «шаблон адреси», до якого програма додаватиме назву зупинки та інші вказівки щодо надання даних.


Файл скрипту

У файлі скрипту має бути принаймні одна функція, що називається "parseTimetable" і приймає один аргумент. Через цей аргумент функції має передаватися код HTML повністю. Обробку коду виконує сам скрипт. Нижче наведено список функцій, які використовують рушій даних PublicTransport для обробки документа скриптом:

  • parseTimetable( html ) (використовується для обробки документів щодо відправлення-прибуття)
  • parseJourneys( html ) (використовується для обробки документів маршрутів)
  • parsePossibleStops( html ) (використовується для обробки документів пропозицій щодо зупинок)


Допоміжні функції

Передбачено допоміжний об’єкт з назвою "helper", який можна використовувати у скрипті. Частиною об’єкта є такі функції:

  • trim( рядок ) (вилучає « » з початку та кінця вказаного рядка)
  • stripTags( рядок ) (вилучає всі теґи з вказаного рядка, тобто вилучає <...> або </...>)
  • camelCase( рядок ) (змінює регістр літер так, щоб перший символ кожного зі слід був великою літерою, а решта символів – малими літерами)
  • extractBlock( рядок, рядок_початку, рядок_кінця ) (повертає рядок між першим входженням рядок_початку і першим входженням рядок_кінця або порожній рядок, якщо у рядку не вдасться знайти підрядків рядок_початку і рядок_кінця. Наприклад, extractBlock("<b>Текст жирним</b>", "<b>", "</b>") поверне "Текст жирним")
  • matchTime( рядок, форматування ) (пошук рядка часу у вказаному форматі, наприклад, "hh:mm" повертає список з двох цілих чисел: значень годин і хвилин)
  • formatTime( година, хвилина, форматування ) (створює рядок часу у вказаному форматуванні)
  • duration( sTime1, sTime2, форматування ) (повертає тривалість періоду часу між sTime1 і sTime2, рядками часу у вказаному форматуванні)
  • addMinsToTime( sTime, кількість_доданих_хвилин, форматування ) (обробляє вказаний рядок часу відповідно до вказаного форматування, додає кількість_доданих_хвилин і повертає дані відповідно до форматування)
  • splitSkipEmptyParts( рядок, роздільник ) (поділяє вказаний рядок за роздільником, порожні частини буде пропущено)


Додавання оброблених даних щодо відправлення до набору результатів

Скрипту передається об’єкт з назвою "timetableData". Щоб додати оброблені дані щодо відправлення до результату, допишіть щось подібне до наведеного нижче:

// Додавання відправлення
 timetableData.clear();
 timetableData.set( 'TransportLine', 'N6' );
 timetableData.set( 'TypeOfVehicle', 'STR' );
 timetableData.set( 'Target', 'Bremen Hbf' );
 timetableData.set( 'DepartureHour', 1 );
 timetableData.set( 'DepartureMinute', 30 );
 result.addData( timetableData );

Вказана команда додасть дані щодо відправлення трамвая маршруту "N6", що відправляється о 1:30 до кінцевої зупинки "Bremen Hbf".


Типи даних

Нижче наведено список всіх типів даних, які можна додати до об’єкта timetableData для відправлення, прибуття або маршруту:

  • DepartureDate (дата відправлення)
  • DepartureHour (обов’язковий параметр для відправлення, прибуття та маршрутів, година відправлення)
  • DepartureMinute (обов’язковий параметр для відправлення, прибуття та маршрутів, хвилина відправлення)
  • TransportLine (обов’язковий параметр для відправлення або прибуття, назва маршруту громадського транспорту, наприклад, "4", "6S", "S 5", "RB 24122")
  • Target (обов’язковий параметр для відправлення або прибуття, кінцева зупинка маршруту або рейсу громадського транспорту)
  • TypeOfVehicle (тип засобу пересування)
  • FlightNumber (те саме, що і TransportLine, використовується для авіатранспорту)
  • Platform (платформа, з якої відправляється або до якої прибуває громадський транспорт)
  • Delay (затримка громадського транспорту)
  • DelayReason (причина затримки)
  • JourneyNews (може містити дані щодо затримки, причини затримки та інші повідомлення)
  • JourneyNewsOther (інші новини)
  • JourneyNewsLink (містить посилання на сторінку html з новинами маршрутів. Додаватиметься адреса батьківської сторінки, якщо буде встановлено, що шлях до сторінки є відносним (починається з "/"))
  • DepartureHourPrognosis (ймовірна година відправлення, типова година відправлення плюс затримка)
  • DepartureMinutePrognosis (ймовірна хвилина відправлення, типова хвилина відправлення плюс затримка)
  • Operator (компанія-власник засобу пересування)
  • DepartureAMorPM (використовується для встановлення відповідності рядку "am" або "pm" для часу відправлення)
  • DepartureAMorPMPrognosis (використовується для встановлення відповідності рядку "am" або "pm" для ймовірного часу відправлення)
  • ArrivalAMorPM (використовується для встановлення відповідності рядку "am" або "pm" для часу прибуття)
  • Status (поточний стан відправлення-прибуття. Використовується для літаків)
  • DepartureYear (рік відправлення, буде використано, якщо у даті вказано рік)
  • RouteStops (список зупинок прибуття-відправлення до зупинки призначення або список зупинок маршруту від початкової зупинки до кінцевої. Якщо встановлено обидва значення, RouteStops і RouteTimes, ці значення мають містити однакову кількість пунктів. Пункти з однаковими номерами має бути пов’язано між собою (час, протягом якого засіб пересування перебуває на зупинці). Для маршрутів слід використовувати RouteTimesDeparture і RouteTimesArrival, а не RouteTimes)
  • RouteTimes (Список часів прибуття-відправлення до зупинки призначення. Якщо встановлено обидва значення, RouteStops і RouteTimes, ці значення мають містити однакову кількість пунктів. Пункти з однаковими номерами має бути пов’язано між собою (час, протягом якого засіб пересування перебуває на зупинці))
  • RouteTimesDeparture (Список часів відправлення для маршруту. Якщо встановлено обидва значення, RouteStops і RouteTimesDeparture, ці значення мають містити однакову кількість пунктів. Пункти з однаковими номерами має бути пов’язано між собою (час, протягом якого засіб пересування перебуває на зупинці).)
  • RouteTimesArrival (Список часів прибуття для маршруту. Якщо встановлено обидва значення, RouteStops і RouteTimesArrival, останнє зі значень має містити на один пункт менше (оскільки у першої зупинки немає часу прибуття, лише час відправлення). Пункти з однаковими номерами має бути пов’язано між собою (час, протягом якого засіб пересування перебуває на зупинці).)
  • RouteExactStops (кількість обов’язкових зупинок маршруту. Список зупинок маршруту не є повним від останньої обов’язкової зупинки маршруту)
  • RouteTypesOfVehicles (типи засобів пересування, які використовуються для кожного з підмаршрутів цілого маршруту)
  • RouteTransportLines (маршрути транспорту, використані для кожного з підмаршрутів цілого маршруту)
  • RoutePlatformsDeparture (платформи відправлення, використані для кожного з підмаршрутів цілого маршруту)
  • RoutePlatformsArrival (платформи прибуття, використані для кожного з підмаршрутів цілого маршруту)
  • RouteTimesDepartureDelay (список затримок у хвилинах для кожного часу відправлення маршруту (RouteTimesDeparture))
  • RouteTimesArrivalDelay (список затримок у хвилинах для кожного часу прибуття маршруту (RouteTimesArrival))

Ці дані може бути застосовано лише до маршрутів:

  • Duration (тривалість маршруту)
  • StartStopName (назва початкової зупинки маршруту)
  • StartStopID (ідентифікатор початкової зупинки маршруту)
  • TargetStopName (назва зупинки-призначення маршруту)
  • TargetStopID (ідентифікатор зупинки-призначення маршруту)
  • ArrivalDate (дата прибуття)
  • ArrivalHour (обов’язковий параметри для маршрутів, година прибуття)
  • ArrivalMinute (обов’язковий параметри для маршрутів, хвилина прибуття)
  • Changes (кількість пересадок протягом маршруту)
  • TypesOfVehicleInJourney (список типів засобів пересування, використаних під час побудови маршруту)
  • Pricing (дані щодо вартості пересування маршрутом)

Ці дані може бути застосовано лише до пропозицій щодо зупинок:

  • StopName (обов’язковий параметр для пропозицій щодо зупинок, назва зупинки або станції)
  • StopID (ідентифікатор зупинки або станції)
  • StopWeight (рівень відповідності пропозиції щодо назви зупинки)

Інформація

Згодом тут буде наведено шаблони файлів XML і скрипту. Зараз же ви можете скористатися прикладами цих файлів для вже створених записів джерел даних.