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

From KDE UserBase Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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 і скрипту. Зараз же ви можете скористатися прикладами цих файлів для вже створених записів джерел даних.