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;

Reply via email to