Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

Commit 1ed96df9 authored by Volker Krause's avatar Volker Krause

Add extractor for Swiss flight booking confirmations

parent 8c4c79d0
[
{
"@type": "FlightReservation",
"reservationFor": {
"@type": "Flight",
"airline": {
"@type": "Airline",
"iataCode": "LX"
},
"arrivalAirport": {
"@type": "Airport",
"iataCode": "ZRH",
"name": "Zürich"
},
"arrivalTime": "2017-09-10T08:15:00",
"departureAirport": {
"@type": "Airport",
"iataCode": "TXL",
"name": "Berlin"
},
"departureTime": "2017-09-10T06:45:00",
"flightNumber": "963"
},
"reservationNumber": "XXX007"
},
{
"@type": "FlightReservation",
"reservationFor": {
"@type": "Flight",
"airline": {
"@type": "Airline",
"iataCode": "LX"
},
"arrivalAirport": {
"@type": "Airport",
"iataCode": "TXL",
"name": "Berlin"
},
"arrivalTime": "2017-09-15T22:15:00",
"departureAirport": {
"@type": "Airport",
"iataCode": "ZRH",
"name": "Zürich"
},
"departureTime": "2017-09-15T20:50:00",
"flightNumber": "962"
},
"reservationNumber": "XXX007"
}
]
// technically this is HTML, but it contains soooo much style sheet noise I didn't want to check that in, so this is preprocssed content already
Vielen Dank, Ihre Buchung ist bestätigt.
Vielen Dank, Ihre Buchung ist bestätigt. Buchungsreferenz: XXX007 Sehr geehrter Herr Doe
Danke, dass Sie mit uns fliegen. Ihre Buchungsdetails finden Sie untenstehend. Eine gute Reise und bis bald. Mit Ihrer Buchungsreferenz können Sie jederzeit Ihre Buchungen bearbeiten . Wenn Sie ein elektronisches e-Ticket wünschen, können Sie es unter Elektronische Dokumente bestellen Fluginformationen Hinflug Berlin (TXL) - Zürich (ZRH) So 10.09.2017 06:45 TXL 08:15 ZRH Reisedauer 1h 30m LX 963 Classic - K Durchgeführt von SWISS Rückflug Zürich (ZRH) - Berlin (TXL) Fr 15.09.2017 20:50 ZRH 22:15 TXL Reisedauer 1h 25m LX 962 Classic - T Durchgeführt von SWISS Bitte beachten Sie • Je nach gewähltem Tarif ist nur die Mitnahme von Handgepäck im Ticket inbegriffen. Überprüfen Sie die Konditionen Ihres Tarifs. • Nach geltendem EU-Recht haben Sie das Recht den Namen und die Adresse einer zusätzlichen Kontaktperson bei SWISS anzugeben. Gepäckinformationen Berlin (TXL) - Zürich (ZRH) So 10.09.2017 1 Erwachsener Freigepäck (inkl.) 1 Gepäckstück à 23kg Total 1 Gepäckstück à 23kg Zürich (ZRH) - Berlin (TXL) Fr 15.09.2017 1 Erwachsener Freigepäck (inkl.) 1 Gepäckstück à 23kg Total 1 Gepäckstück à 23kg Gepäckregeln Aufgegebenes Gepäck Übergepäck Gepäckgebühren auf Codeshare und Interline Partner Gewählte Leistungen Name E-Ticket Services Preis in EUR John Doe 1234567850627 Flugtarif 42,00 Internationaler Zuschlag 42,00 Flughafentaxen 42,40 SWISS Service Fee 0,00 OPC 2,50 Sitzreservation 0,00 999,90 Gesamtpreis EUR 999,90
Quicklinks Buchung verwalten Reisevorbereitung An Bord Zürich entdecken Mietwagen Profitieren Sie jetzt von einer grossen Auswahl an Mietwagen. Mit SWISS zu günstigen Preisen buchen. Jetzt buchen Hotel Angebote Finden Sie mit SWISS das perfekte Hotel zu günstigen Preisen. Jetzt buchen Aktivitäten Die besten Angebote für Aktivitäten an Ihrem Reiseziel. Jetzt buchen Rechtliches | Beförderungsbestimmungen | Kontakt
......@@ -10,5 +10,7 @@
<file>eurowings.js</file>
<file>fcmtravel.json</file>
<file>fcmtravel.js</file>
<file>swiss.json</file>
<file>swiss.js</file>
</qresource>
</RCC>
/*
Copyright (c) 2017 Volker Krause <vkrause@kde.org>
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
*/
function main(text) {
var reservations = new Array();
var bookingRef = text.match(/Buchungsreferenz: ([A-Z0-9]{6})/);
var pos = 0;
while (true) {
var flight = text.substr(pos).match(/Hinflug|Rückflug/);
if (!flight)
break;
var index = flight.index + flight[0].length;
var res = JsonLd.newObject("FlightReservation");
res.reservationNumber = bookingRef[1];
res.reservationFor = JsonLd.newObject("Flight");
var leg = text.substr(pos + index).match(/ +(.+?) \(([A-Z]{3})\) - (.+?) \(([A-Z]{3})\) +[A-Z][a-z] (\d{2}.\d{2}.\d{4}) +(\d{2}:\d{2}) +[A-Z]{3} +(\d{2}:\d{2}) .*? ([A-Z0-9]{2}) (\d{3,4})/);
if (!leg)
break;
index += leg.index + leg[0].length;
res.reservationFor.departureAirport = JsonLd.newObject("Airport");
res.reservationFor.departureAirport.name = leg[1];
res.reservationFor.departureAirport.iataCode = leg[2];
res.reservationFor.arrivalAirport = JsonLd.newObject("Airport");
res.reservationFor.arrivalAirport.name = leg[3];
res.reservationFor.arrivalAirport.iataCode = leg[4];
res.reservationFor.departureTime = JsonLd.toDateTime(leg[5] + ' ' + leg[6], "dd.MM.yyyy hh:mm", "en");
res.reservationFor.arrivalTime = JsonLd.toDateTime(leg[5] + ' ' + leg[7], "dd.MM.yyyy hh:mm", "en");
res.reservationFor.flightNumber = leg[9];
res.reservationFor.airline = JsonLd.newObject("Airline");
res.reservationFor.airline.iataCode = leg[8];
// TODO: parse the operated by part to fill in airline name
reservations.push(res);
if (index == 0)
break;
pos += index;
}
return reservations;
}
{
"filter": [
{ "header": "From", "match": "noreply@swiss.com" }
],
"script": "swiss.js"
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment