Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kitinerary for openSUSE:Factory checked in at 2023-12-09 22:50:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kitinerary (Old) and /work/SRC/openSUSE:Factory/.kitinerary.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kitinerary" Sat Dec 9 22:50:34 2023 rev:68 rq:1131867 version:23.08.4 Changes: -------- --- /work/SRC/openSUSE:Factory/kitinerary/kitinerary.changes 2023-11-10 12:31:03.583462435 +0100 +++ /work/SRC/openSUSE:Factory/.kitinerary.new.25432/kitinerary.changes 2023-12-09 22:51:34.507921655 +0100 @@ -1,0 +2,19 @@ +Tue Dec 5 14:19:44 UTC 2023 - Christophe Marin <[email protected]> + +- Update to 23.08.4 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/23.08.4/ +- Changes since 23.08.3: + * Fix Motel One checkin time when running in a different timezone + * Add Motel One pkpass extractor script + * Add stand-alone filter condition for SAS itinerary PDFs + * Handle another Flixbus Unicode station icon variant + * Ignore ERA FCB UIC station codes in Germany + * Use the entire UIC 918.3 station object, not just the identifier + * Fix ERA FCB arrival time parsing + * Support Dutch-language Eurostar (Thalys) tickets + * Increase the maximum document size thresholds + * Add basic support for 12go.asia PDFs + +------------------------------------------------------------------- Old: ---- kitinerary-23.08.3.tar.xz kitinerary-23.08.3.tar.xz.sig New: ---- kitinerary-23.08.4.tar.xz kitinerary-23.08.4.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kitinerary.spec ++++++ --- /var/tmp/diff_new_pack.QsSn0F/_old 2023-12-09 22:51:35.815969657 +0100 +++ /var/tmp/diff_new_pack.QsSn0F/_new 2023-12-09 22:51:35.819969804 +0100 @@ -19,7 +19,7 @@ %define libname libKPimItinerary5 %bcond_without released Name: kitinerary -Version: 23.08.3 +Version: 23.08.4 Release: 0 Summary: Data model and extraction system for travel reservations License: LGPL-2.1-or-later ++++++ kitinerary-23.08.3.tar.xz -> kitinerary-23.08.4.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/CMakeLists.txt new/kitinerary-23.08.4/CMakeLists.txt --- old/kitinerary-23.08.3/CMakeLists.txt 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/CMakeLists.txt 2023-12-05 04:07:54.000000000 +0100 @@ -3,7 +3,7 @@ # SPDX-License-Identifier: BSD-3-Clause cmake_minimum_required(VERSION 3.16 FATAL_ERROR) -set(PIM_VERSION "5.24.3") +set(PIM_VERSION "5.24.4") project(KItinerary VERSION ${PIM_VERSION}) set(KF_MIN_VERSION "5.91.0") @@ -48,8 +48,8 @@ find_package(SharedMimeInfo 1.3 REQUIRED) endif() -set(KMIME_VERSION "5.24.3") -set(PIM_PKPASS "5.24.3") +set(KMIME_VERSION "5.24.4") +set(PIM_PKPASS "5.24.4") find_package(KPim${KF_MAJOR_VERSION}Mime ${KMIME_VERSION} CONFIG REQUIRED) find_package(KPimPkPass ${PIM_PKPASS} CONFIG REQUIRED) Binary files old/kitinerary-23.08.3/autotests/extractordata/motel-one/20231130-motel-one-synthetic.pkpass and new/kitinerary-23.08.4/autotests/extractordata/motel-one/20231130-motel-one-synthetic.pkpass differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/autotests/extractordata/motel-one/20231130-motel-one-synthetic.pkpass.json new/kitinerary-23.08.4/autotests/extractordata/motel-one/20231130-motel-one-synthetic.pkpass.json --- old/kitinerary-23.08.3/autotests/extractordata/motel-one/20231130-motel-one-synthetic.pkpass.json 1970-01-01 01:00:00.000000000 +0100 +++ new/kitinerary-23.08.4/autotests/extractordata/motel-one/20231130-motel-one-synthetic.pkpass.json 2023-12-05 04:07:54.000000000 +0100 @@ -0,0 +1,40 @@ +[ + { + "@context": "http://schema.org", + "@type": "LodgingReservation", + "checkinTime": { + "@type": "QDateTime", + "@value": "2023-11-30T15:00:00+01:00", + "timezone": "Europe/Berlin" + }, + "checkoutTime": { + "@type": "QDateTime", + "@value": "2023-12-01T12:00:00+01:00", + "timezone": "Europe/Berlin" + }, + "modifiedTime": "2018-01-01T00:00:00", + "pkpassPassTypeIdentifier": "pass.com.motel-one.booking", + "pkpassSerialNumber": "MO-${10 alnum}", + "potentialAction": [ + { + "@type": "UpdateAction", + "target": "https://booking.motel-one.com/de/reservation/$serialNumber" + } + ], + "reservationFor": { + "@type": "LodgingBusiness", + "address": { + "@type": "PostalAddress", + "addressCountry": "DE", + "addressLocality": "Berlin", + "postalCode": "10557", + "streetAddress": "InvalidenstraÃe 54" + }, + "email": "[email protected]", + "name": "Berlin-Hauptbahnhof", + "telephone": "+49 30 3641005-0" + }, + "reservationNumber": "$serialNumber", + "reservationStatus": "http://schema.org/ReservationConfirmed" + } +] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/po/sk/kitinerary.po new/kitinerary-23.08.4/po/sk/kitinerary.po --- old/kitinerary-23.08.3/po/sk/kitinerary.po 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/po/sk/kitinerary.po 2023-12-05 04:07:54.000000000 +0100 @@ -1,19 +1,19 @@ # translation of kitinerary.po to Slovak -# Roman PaholÃk <[email protected]>, 2018, 2022. +# SPDX-FileCopyrightText: 2018, 2022, 2023 Roman PaholÃk <[email protected]> # Matej Mrenica <[email protected]>, 2019, 2020. msgid "" msgstr "" "Project-Id-Version: kitinerary\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-07-20 00:46+0000\n" -"PO-Revision-Date: 2022-04-09 20:14+0200\n" +"PO-Revision-Date: 2023-12-04 17:31+0100\n" "Last-Translator: Roman Paholik <[email protected]>\n" "Language-Team: Slovak <[email protected]>\n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 21.12.3\n" +"X-Generator: Lokalize 23.08.3\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: calendarhandler.cpp:160 @@ -91,15 +91,14 @@ msgstr "Autobus %1 z %2 do %3" #: calendarhandler.cpp:306 -#, fuzzy, kde-format -#| msgid "Train %1 from %2 to %3" +#, kde-format msgid "Ferry from %1 to %2" -msgstr "Vlak %1 z %2 do %3" +msgstr "Trajekt z %1 do %2" #: calendarhandler.cpp:319 #, kde-format msgid "Ticket number: %1" -msgstr "" +msgstr "ÄÃslo lÃstka: %1" #: calendarhandler.cpp:329 #, kde-format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/po/zh_CN/kitinerary.po new/kitinerary-23.08.4/po/zh_CN/kitinerary.po --- old/kitinerary-23.08.3/po/zh_CN/kitinerary.po 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/po/zh_CN/kitinerary.po 2023-12-05 04:07:54.000000000 +0100 @@ -3,7 +3,7 @@ "Project-Id-Version: kdeorg\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-07-20 00:46+0000\n" -"PO-Revision-Date: 2023-10-21 13:57\n" +"PO-Revision-Date: 2023-11-25 02:32\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/cli/org.kde.kitinerary-extractor.appdata.xml new/kitinerary-23.08.4/src/cli/org.kde.kitinerary-extractor.appdata.xml --- old/kitinerary-23.08.3/src/cli/org.kde.kitinerary-extractor.appdata.xml 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/src/cli/org.kde.kitinerary-extractor.appdata.xml 2023-12-05 04:07:54.000000000 +0100 @@ -119,9 +119,9 @@ <binary>kitinerary-extractor</binary> </provides> <releases> + <release version="5.24.4" date="2023-12-07"/> <release version="5.24.3" date="2023-11-09"/> <release version="5.24.2" date="2023-10-12"/> <release version="5.24.1" date="2023-09-14"/> - <release version="5.24.0" date="2023-08-24"/> </releases> </component> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/engine/extractordocumentnodefactory.cpp new/kitinerary-23.08.4/src/lib/engine/extractordocumentnodefactory.cpp --- old/kitinerary-23.08.3/src/lib/engine/extractordocumentnodefactory.cpp 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/engine/extractordocumentnodefactory.cpp 2023-12-05 04:07:54.000000000 +0100 @@ -33,7 +33,7 @@ enum { MinDocumentSize = 4, - MaxDocumentSize = 4000000, + MaxDocumentSize = 10000000, }; namespace KItinerary { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/era/fcbticket.cpp new/kitinerary-23.08.4/src/lib/era/fcbticket.cpp --- old/kitinerary-23.08.3/src/lib/era/fcbticket.cpp 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/era/fcbticket.cpp 2023-12-05 04:07:54.000000000 +0100 @@ -440,7 +440,7 @@ QDateTime Fcb::ReservationData::arrivalDateTime(const QDateTime &issueingDateTime) const { - if (!arrivalDateIsSet()) { + if (!arrivalTimeIsSet()) { return {}; } const auto departureDt = departureDateTime(issueingDateTime); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/processors/pdfdocumentprocessor.cpp new/kitinerary-23.08.4/src/lib/processors/pdfdocumentprocessor.cpp --- old/kitinerary-23.08.3/src/lib/processors/pdfdocumentprocessor.cpp 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/processors/pdfdocumentprocessor.cpp 2023-12-05 04:07:54.000000000 +0100 @@ -25,7 +25,7 @@ enum { MaxPageCount = 10, // maximum in the current test set is 6 - MaxFileSize = 4000000, // maximum in the current test set is 980kB + MaxFileSize = 10000000, // maximum in the current test set is ~9MB }; PdfDocumentProcessor::PdfDocumentProcessor() = default; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/processors/uic9183documentprocessor.cpp new/kitinerary-23.08.4/src/lib/processors/uic9183documentprocessor.cpp --- old/kitinerary-23.08.3/src/lib/processors/uic9183documentprocessor.cpp 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/processors/uic9183documentprocessor.cpp 2023-12-05 04:07:54.000000000 +0100 @@ -91,6 +91,19 @@ return {}; } +static void fixFcbStationCode(TrainStation &station) +{ + // UIC codes in Germany are wildly unreliable, there seem to be different + // code tables in use by different operators, so we unfortunately have to ignore + // those entirely + if (station.identifier().startsWith(QLatin1String("uic:80"))) { + PostalAddress addr; + addr.setAddressCountry(QStringLiteral("DE")); + station.setAddress(addr); + station.setIdentifier(QString()); + } +} + void Uic9183DocumentProcessor::preExtract(ExtractorDocumentNode &node, [[maybe_unused]] const ExtractorEngine *engine) const { const auto p = node.content<Uic9183Parser>(); @@ -204,11 +217,13 @@ TrainStation dep; dep.setName(irt.fromStationNameUTF8); dep.setIdentifier(FcbUtil::fromStationIdentifier(irt)); + fixFcbStationCode(dep); trip.setDepartureStation(dep); TrainStation arr; arr.setName(irt.toStationNameUTF8); arr.setIdentifier(FcbUtil::toStationIdentifier(irt)); + fixFcbStationCode(arr); trip.setArrivalStation(arr); trip.setDepartureTime(irt.departureDateTime(issueDt)); @@ -225,7 +240,7 @@ if (irt.placesIsSet()) { s.setSeatSection(QString::fromUtf8(irt.places.coach)); QStringList l; - for (auto b : irt.places.placeIA5) + for (const auto &b : irt.places.placeIA5) l.push_back(QString::fromUtf8(b)); for (auto i : irt.places.placeNum) l.push_back(QString::number(i)); @@ -265,10 +280,12 @@ // TODO station identifier TrainStation dep; dep.setName(trainLink.fromStationNameUTF8); + fixFcbStationCode(dep); trip.setDepartureStation(dep); TrainStation arr; arr.setName(trainLink.toStationNameUTF8); + fixFcbStationCode(arr); trip.setArrivalStation(arr); trip.setDepartureTime(trainLink.departureDateTime(issueDt)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/scripts/12go.js new/kitinerary-23.08.4/src/lib/scripts/12go.js --- old/kitinerary-23.08.3/src/lib/scripts/12go.js 1970-01-01 01:00:00.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/scripts/12go.js 2023-12-05 04:07:54.000000000 +0100 @@ -0,0 +1,25 @@ +/* + SPDX-FileCopyrightText: 2023 Volker Krause <[email protected]> + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +function extractPdf(pdf) { + let res = JsonLd.newBusReservation(); + const text = pdf.pages[0].text; + const bookingId = text.match(/ID # ([^\d]*)(\d+)/); + res.reservationNumber = bookingId[1] + bookingId[2]; + res.reservedTicket.ticketToken = 'qrCode:' + bookingId[2]; + res.reservationFor.departureBusStop.name = text.match(/From: (.*?) /)[1]; + res.reservationFor.arrivalBusStop.name = text.match(/To: (.*?) /)[1]; + const dt = text.match(/(\d+ \S{3} \d{4}) (\d\d:\d\d).*(\d\d:\d\d)/); + res.reservationFor.departureTime = JsonLd.toDateTime(dt[1] + dt[2], 'dd MMM yyyyhh:mm', 'en'); + res.reservationFor.arrivalTime = JsonLd.toDateTime(dt[1] + dt[3], 'dd MMM yyyyhh:mm', 'en'); + const loc = text.match(/(\d+\.\d+) (\d+\.\d+)\n(.*)\n/); + res.reservationFor.departureBusStop.geo.latitude = loc[1]; + res.reservationFor.departureBusStop.geo.longitude = loc[2]; + const addr = loc[3].split(','); + res.reservationFor.departureBusStop.address.addressCountry = addr[addr.length - 1]; + res.reservationFor.departureBusStop.address.addressLocality = addr[addr.length - 2]; + res.reservationFor.departureBusStop.address.streetAddress = addr.slice(0, addr.length -2).join(','); + return res; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/scripts/12go.json new/kitinerary-23.08.4/src/lib/scripts/12go.json --- old/kitinerary-23.08.3/src/lib/scripts/12go.json 1970-01-01 01:00:00.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/scripts/12go.json 2023-12-05 04:07:54.000000000 +0100 @@ -0,0 +1,12 @@ +{ + "filter": [ + { + "match": "12Go Asia Pte\\.", + "mimeType": "text/plain", + "scope": "Children" + } + ], + "function": "extractPdf", + "mimeType": "application/pdf", + "script": "12go.js" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/scripts/deutschebahn.js new/kitinerary-23.08.4/src/lib/scripts/deutschebahn.js --- old/kitinerary-23.08.3/src/lib/scripts/deutschebahn.js 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/scripts/deutschebahn.js 2023-12-05 04:07:54.000000000 +0100 @@ -141,8 +141,8 @@ // for outward journeys we have station ids from the UIC 918-3 code if (uic918ticket && header[1] !== "Rück") { - reservations[0].reservationFor.departureStation.identifier = uic918ticket.outboundDepartureStation.identifier; - reservations[reservations.length - 1].reservationFor.arrivalStation.identifier = uic918ticket.outboundArrivalStation.identifier; + reservations[0].reservationFor.departureStation = JsonLd.apply(JsonLd.toJson(uic918ticket.outboundDepartureStation), reservations[0].reservationFor.departureStation); + reservations[reservations.length - 1].reservationFor.arrivalStation = JsonLd.apply(JsonLd.toJson(uic918ticket.outboundArrivalStation), reservations[reservations.length - 1].reservationFor.arrivalStation); returnResIndex = reservations.length; } else { // propagate station ids from outward to return journey diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/scripts/extractors.qrc new/kitinerary-23.08.4/src/lib/scripts/extractors.qrc --- old/kitinerary-23.08.3/src/lib/scripts/extractors.qrc 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/scripts/extractors.qrc 2023-12-05 04:07:54.000000000 +0100 @@ -4,6 +4,8 @@ --> <RCC> <qresource prefix="/org.kde.pim/kitinerary/extractors"> + <file>12go.json</file> + <file>12go.js</file> <file>accor.json</file> <file>accor.js</file> <file>acprail.json</file> @@ -161,6 +163,8 @@ <file>mav.js</file> <file>meetup.json</file> <file>meetup.js</file> + <file>motel-one.json</file> + <file>motel-one.js</file> <file>nationalexpress.json</file> <file>nationalexpress.js</file> <file>nationalrail.json</file> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/scripts/flixbus.js new/kitinerary-23.08.4/src/lib/scripts/flixbus.js --- old/kitinerary-23.08.3/src/lib/scripts/flixbus.js 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/scripts/flixbus.js 2023-12-05 04:07:54.000000000 +0100 @@ -63,7 +63,7 @@ let reservations = []; while (true) { const times = timeColumn.substr(idxTime).match(/(\d\d:\d\d)\n([^:]*?\n)?([^:]*?\n)?(\d\d:\d\d)/); - const stations = stationColumn.substr(idxStations).match(/(.*)\n[î¤»î¥ î¥¯]+(.*)(?:\n|,\n +(.*)\n)(?:î ©.*\n(?:.*\n)*)?.*(?:Bus|Autobus|Zug) +(.*)\n.*(?:Direction|à destination de|Kierunek|richting|Richtung) (.*)\n(.*)\n(?:[î¤»î¥ î¥¯]+(.*?)(?:\n|,\n +(.*)\n))?/); + const stations = stationColumn.substr(idxStations).match(/(.*)\n[î¤»î¥ î¥¯î¦]+(.*)(?:\n|,\n +(.*)\n)(?:î ©.*\n(?:.*\n)*)?.*(?:Bus|Autobus|Zug) +(.*)\n.*(?:Direction|à destination de|Kierunek|richting|Richtung) (.*)\n(.*)\n(?:[î¤»î¥ î¥¯î¦]+(.*?)(?:\n|,\n +(.*)\n))?/); if (!times || !stations) { break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/scripts/motel-one.js new/kitinerary-23.08.4/src/lib/scripts/motel-one.js --- old/kitinerary-23.08.3/src/lib/scripts/motel-one.js 1970-01-01 01:00:00.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/scripts/motel-one.js 2023-12-05 04:07:54.000000000 +0100 @@ -0,0 +1,21 @@ +/* + SPDX-FileCopyrightText: 2023 Volker Krause <[email protected]> + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +function extractPkPass(pass) { + let res = JsonLd.newLodgingReservation(); + res.reservationNumber = pass.field['booking-nr'].value; + res.checkinTime = pass.relevantDate.toJSON(); + const depDate = pass.field['booking-date'].value.match(/ - (\d\d\.\d\d\.\d\d)/); + const depTime = pass.field['back_reservation'].value.match(/Check-out:.* (\d\d:\d\d)/); + res.checkoutTime = JsonLd.toDateTime(depDate[1] + ' ' + depTime[1], 'dd.MM.yy hh:mm', 'en'); + res.reservationFor.name = pass.field['hotel-name'].value; + const addr = pass.field['back_hotel_contact'].value.split('\n'); + res.reservationFor.address.streetAddress = addr[1]; + res.reservationFor.address.addressLocality = addr[2]; + res.reservationFor.telephone = addr[4].match(/: (.*)/)[1]; + res.reservationFor.email = addr[3].match(/: (.*)/)[1]; + res.modifyReservationUrl = pass.field['back_booking_link'].value.match(/(https:.*?)>/)[1]; + return res; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/scripts/motel-one.json new/kitinerary-23.08.4/src/lib/scripts/motel-one.json --- old/kitinerary-23.08.3/src/lib/scripts/motel-one.json 1970-01-01 01:00:00.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/scripts/motel-one.json 2023-12-05 04:07:54.000000000 +0100 @@ -0,0 +1,13 @@ +{ + "filter": [ + { + "field": "passTypeIdentifier", + "match": "pass.com.motel-one.booking", + "mimeType": "application/vnd.apple.pkpass", + "scope": "Current" + } + ], + "function": "extractPkPass", + "mimeType": "application/vnd.apple.pkpass", + "script": "motel-one.js" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/scripts/sas.json new/kitinerary-23.08.4/src/lib/scripts/sas.json --- old/kitinerary-23.08.3/src/lib/scripts/sas.json 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/scripts/sas.json 2023-12-05 04:07:54.000000000 +0100 @@ -8,7 +8,10 @@ }, { "mimeType": "application/pdf", - "filter": [ { "field": "From", "match": "[email protected]", "mimeType": "message/rfc822", "scope": "Ancestors" } ], + "filter": [ + { "field": "From", "match": "[email protected]", "mimeType": "message/rfc822", "scope": "Ancestors" }, + { "field": "title", "match": "^Report1$", "mimeType": "application/pdf", "scope": "Current" } + ], "script": "sas-receipt.js" } ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/scripts/thalys.js new/kitinerary-23.08.4/src/lib/scripts/thalys.js --- old/kitinerary-23.08.3/src/lib/scripts/thalys.js 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/scripts/thalys.js 2023-12-05 04:07:54.000000000 +0100 @@ -65,20 +65,20 @@ const depDay = page.text.match(/\d\d\/\d{2}\/\d{4} +(\d{2})\/(\d{2})\/(\d{4})/); res.reservationFor.departureDay = depDay[3] + '-' + depDay[2] + '-' + depDay[1] + 'T00:00:00'; - const dep = page.textInRect(0.0, 0.15, 0.35, 0.3).match(/([\s\S]+)\n(?:DÃPART Ã|ABFAHRT|DEPARTURE AT)\n(\d\d:\d\d)/); + const dep = page.textInRect(0.0, 0.15, 0.35, 0.3).match(/([\s\S]+)\n(?:DÃPART Ã|ABFAHRT|DEPARTURE AT|VERTREK OM)\n(\d\d:\d\d)/); res.reservationFor.departureStation.name = dep[1]; res.reservationFor.departureTime = res.reservationFor.departureDay.substr(0, 11) + dep[2]; - const arr = page.textInRect(0.35, 0.15, 0.65, 0.3).match(/([\s\S]+)\n(?:ARRIVÃE Ã|ANKUNFT|ARRIVAL AT)\n(\d\d:\d\d)/); + const arr = page.textInRect(0.35, 0.15, 0.65, 0.3).match(/([\s\S]+)\n(?:ARRIVÃE Ã|ANKUNFT|ARRIVAL AT|AANKOMST OM)\n(\d\d:\d\d)/); res.reservationFor.arrivalStation.name = arr[1]; res.reservationFor.arrivalTime = res.reservationFor.departureDay.substr(0, 11) + arr[2]; - const passenger = page.textInRect(0.0, 0.0, 0.35, 0.1).match(/(?:PASSAGER|FAHRGAST|PASSENGER)\n(.*)\n/); + const passenger = page.textInRect(0.0, 0.0, 0.35, 0.1).match(/(?:PASSAGER|FAHRGAST|PASSENGER|REIZIGER)\n(.*)\n/); res.underName.name = passenger[1]; res.reservationNumber = page.textInRect(0.8, 0.0, 1.0, 0.2).match(/PNR\n([A-Z0-9]+)/)[1]; // there is always a 17 digit number in ssb.type1OpenText - but what is that if no membership program is used?? - if (page.text.match("MEMBERSHIP ")) + if (page.text.match(/(?:MEMBERSHIP |LOYALTYNUMMER)/)) res.programMembershipUsed.membershipNumber = triggerNode.content.type1OpenText.match(/(\d{17})/)[1]; return res; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-23.08.3/src/lib/uic9183/uic9183parser.cpp new/kitinerary-23.08.4/src/lib/uic9183/uic9183parser.cpp --- old/kitinerary-23.08.3/src/lib/uic9183/uic9183parser.cpp 2023-11-04 16:12:50.000000000 +0100 +++ new/kitinerary-23.08.4/src/lib/uic9183/uic9183parser.cpp 2023-12-05 04:07:54.000000000 +0100 @@ -446,6 +446,19 @@ return {}; } +static void fixFcbStationCode(TrainStation &station) +{ + // UIC codes in Germany are wildly unreliable, there seem to be different + // code tables in use by different operators, so we unfortunately have to ignore + // those entirely + if (station.identifier().startsWith(QLatin1String("uic:80"))) { + PostalAddress addr; + addr.setAddressCountry(QStringLiteral("DE")); + station.setAddress(addr); + station.setIdentifier(QString()); + } +} + TrainStation Uic9183Parser::outboundDepartureStation() const { TrainStation station; @@ -480,6 +493,7 @@ station.setName(nrt.fromStationNameUTF8); station.setIdentifier(FcbUtil::fromStationIdentifier(nrt)); } + fixFcbStationCode(station); } return station; @@ -518,6 +532,7 @@ station.setName(nrt.toStationNameUTF8); station.setIdentifier(FcbUtil::toStationIdentifier(nrt)); } + fixFcbStationCode(station); } return station; @@ -557,6 +572,7 @@ } } } + fixFcbStationCode(station); } return station; @@ -596,6 +612,7 @@ } } } + fixFcbStationCode(station); } return station;
