Plasma/Public Transport/Lav serviceudbydere

From KDE UserBase Wiki
Revision as of 08:56, 31 December 2010 by Claus chr (talk | contribs) (Importing a new version from external source)
Other languages:

Lav en ny serviceudbyder

Filnavnene begynder med landekoden efterfulgt af et understregningstegn og et kort navn (og selvfølgelig en filtypebetegnelse). Filnavnet begynder med landekoden eller "international" eller "unknown" fulgt af "_" og et kort navn på serviceudbyderen, fx "de_db", "ch_ssb", "sk_atlas" og "international_flightstats". XML-filerne ender med ".xml".


XML-filen

XML-filen linker til scriptfilen, som skal bruges of indeholder en "rå url", som navnet på stoppestedet og anden information indsættes i.


Scriptfilen

Scriptfilen skal som minimum indeholde en funktion ved navn "parseTimetable" med ét argument. Hele HTML-indholdet overføres til scriptet igennem dette argument. Det er op til scriptet at fortolke dokumentet. Her er en liste med funktioner, som Public Transports data-motor kalder for at lade scriptet fortolke et dokument.

  • parseTimetable( html ) (Bruges til at fortolke dokumenter med ankomster og afgange)
  • parseJourneys( html ) (Bruges til at fortolke dokumenter med rejser)
  • parsePossibleStops( html ) (Bruges til at fortolke dokumenter med forslag)


Hjælpefunktioner

Der er en hjælpeobjekt kaldet "helper", som scriptet kan bruge. Det har følgende funktioner:

  • trim( string ) (Fjerner ' ' fra begyndelsen og enden af den givne streng)
  • stripTags( string ) (Fjerner alle tags fra den givne streng, dvs. fjerner <...> or </...>)
  • camelCase( string ) (Første bogstav i hvert ord bliver stort, alle de andre bliver små)
  • extractBlock( string, beginString, endString ) (Returnerer stringen imellem den første forekomst af beginString og den første forekomst af endString eller en tom streng, hvis beginString eller endString ikke findes i strengen. For eksempel vil extractBlock("<b>Bold Text</b>", "<b>", "</b>") returnere "Bold Text")
  • matchTime( string, formatString ) (Søger efter et streng, som angiver tid i det givne format, fx "hh:mm" og returnerer to heltal, timen og minutterne)
  • formatTime( hour, minute, formatString ) (Formatterer den givne tid ved brug af den givne formatString)
  • duration( sTime1, sTime2, formatString ) (Returnerer varigheden i minutter fra sTime1 til sTime2, som er tidsstrenge i det givne format)
  • addMinsToTime( sTime, minsToAdd, formatString ) (Fortolker den givne tid ved brug af formatString, lægger minsToAdd minutter til og formatterer den igen ved brug af formatString)
  • splitSkipEmptyParts( string, separator ) (Opsplitter den givne streng ved den givne separator, idet tomme dele springes over)


Add Parsed Departures to the Result Set

There is an object named "timetableData" given to the script. To add a parsed departure to the result set do something like this:

// Add departure
 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 );

This will add a departure of the tram line "N6", departing at 1:30 with the target "Bremen Hbf".


Information Types

Here is a list of all information types you can add to the timetableData object for a departure/arrival/journey:

  • DepartureDate (The date of the departure)
  • DepartureHour (Mandatory for departures/arrivals/journeys, the hour of the departure)
  • DepartureMinute (Mandatory for departures/arrivals/journeys, the minute of the departure)
  • TransportLine (Mandatory for departures/arrivals, The name of the public transport line, e.g. "4", "6S", "S 5", "RB 24122")
  • Target (Mandatory for departures/arrivals, The target of a journey / of a public transport line)
  • TypeOfVehicle (The type of vehicle)
  • FlightNumber (Same as TransportLine, used for flights)
  • Platform (The platform at which the vehicle departs/arrives)
  • Delay (The delay of a public transport vehicle)
  • DelayReason (The reason of a delay)
  • JourneyNews (Can contain delay / delay reason / other news)
  • JourneyNewsOther (Other news (not delay / delay reason))
  • JourneyNewsLink (Contains a link to an html page with journey news. The url of the accessor is prepended, if a relative path has been matched (starting with "/"))
  • DepartureHourPrognosis (The prognosis for the departure hour, which is the departure hour plus the delay)
  • DepartureMinutePrognosis (The prognosis for the departure minute, which is the departure minute plus the delay)
  • Operator (The company that is responsible for the journey)
  • DepartureAMorPM (Used to match the string "am" or "pm" for the departure time)
  • DepartureAMorPMPrognosis (Used to match the string "am" or "pm" for the prognosis departure time)
  • ArrivalAMorPM (Used to match the string "am" or "pm" for the arrival time)
  • Status (The current status of the departure/arrival. Currently only used for planes)
  • DepartureYear (The year of the departure, to be used when the year is separated from the date)
  • RouteStops (A list of stops of the departure/arrival to its destination stop or a list of stops of the journey from its start to its destination stop. If RouteStops and RouteTimes are both set, they should contain the same number of elements. And elements with equal indices should be associated (the times at which the vehicle is at the stops). For journeys RouteTimesDeparture and RouteTimesArrival should be used instead of RouteTimes)
  • RouteTimes (A list of times of the departure/arrival to its destination stop. If RouteStops and RouteTimes are both set, they should contain the same number of elements. And elements with equal indices should be associated (the times at which the vehicle is at the stops))
  • RouteTimesDeparture (A list of departure times of the journey. If RouteStops and RouteTimesDeparture are both set, the latter should contain one elements less (because the last stop has no departure, only an arrival time). Elements with equal indices should be associated (the times at which the vehicle departs from the stops))
  • RouteTimesArrival (A list of arrival times of the journey. If RouteStops and RouteTimesArrival are both set, the latter should contain one elements less (because the first stop has no arrival, only a departure time). Elements with equal indices should be associated (the times at which the vehicle arrives at the stops))
  • RouteExactStops (The number of exact route stops. The route stop list isn't complete from the last exact route stop)
  • RouteTypesOfVehicles (The types of vehicles used for each "sub-journey" of a journey)
  • RouteTransportLines (The transport lines used for each "sub-journey" of a journey)
  • RoutePlatformsDeparture (The platforms of departures used for each "sub-journey" of a journey)
  • RoutePlatformsArrival (The platforms of arrivals used for each "sub-journey" of a journey)
  • RouteTimesDepartureDelay (A list of delays in minutes for each departure time of a route (RouteTimesDeparture))
  • RouteTimesArrivalDelay (A list of delays in minutes for each arrival time of a route (RouteTimesArrival))

These information elements only apply to journeys:

  • Duration (The duration of a journey)
  • StartStopName (The name of the starting stop of a journey)
  • StartStopID (The ID of the starting stop of a journey)
  • TargetStopName (The name of the target stop of a journey)
  • TargetStopID (The ID of the target stop of a journey)
  • ArrivalDate (The date of the arrival)
  • ArrivalHour (Mandatory for journeys, The hour of the arrival)
  • ArrivalMinute (Mandatory for journeys, The minute of the arrival)
  • Changes (The number of changes between different vehicles in a journey)
  • TypesOfVehicleInJourney (A list of vehicle types used in a journey)
  • Pricing (Information about the pricing of a journey)

These information elements only apply to stop suggestions:

  • StopName (Mandatory for stop suggestions, The name of a stop / station)
  • StopID (The ID of a stop / station)
  • StopWeight (The weight of a stop suggestion)

Information

There will be templates for an XML and a script file later. Until then, you can check out the existing service providers.