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-09-15 22:02:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kitinerary (Old)
 and      /work/SRC/openSUSE:Factory/.kitinerary.new.1766 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kitinerary"

Fri Sep 15 22:02:05 2023 rev:65 rq:1111189 version:23.08.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/kitinerary/kitinerary.changes    2023-08-31 
13:44:49.758317461 +0200
+++ /work/SRC/openSUSE:Factory/.kitinerary.new.1766/kitinerary.changes  
2023-09-15 22:03:00.823854852 +0200
@@ -1,0 +2,21 @@
+Tue Sep 12 11:56:02 UTC 2023 - Christophe Marin <[email protected]>
+
+- Update to 23.08.1
+  * New bugfix release
+  * For more details please see:
+  * https://kde.org/announcements/gear/23.08.1/
+- Changes since 23.08.0:
+  * Also allow direct extraction from SNCF Secutix barcodes
+  * Correctly update the search offset in the MAV extractor
+  * Handle more cases of ZSSK network tickets
+  * Correctly import buses from DB online tickets
+  * Add Slovak Lines PDF ticket extractor script
+  * Add premiumkino Apple Wallet pass extractor script
+  * Handle more end of validtity variants in RCT2 tickets
+  * Fall back to the second RCT2 title line if the first one is empty 
(kde#472916)
+  * Handle Amtrak tickets with unreserved seats
+  * Add British Airways boarding pass extractor script
+  * Add extractor script for Aer Lingus PDF boarding passes
+  * Increase upper aspect ratio limit for PDF417 barcodes
+
+-------------------------------------------------------------------

Old:
----
  kitinerary-23.08.0.tar.xz
  kitinerary-23.08.0.tar.xz.sig

New:
----
  kitinerary-23.08.1.tar.xz
  kitinerary-23.08.1.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kitinerary.spec ++++++
--- /var/tmp/diff_new_pack.sAj0zF/_old  2023-09-15 22:03:02.343909201 +0200
+++ /var/tmp/diff_new_pack.sAj0zF/_new  2023-09-15 22:03:02.343909201 +0200
@@ -19,7 +19,7 @@
 %define libname libKPimItinerary5
 %bcond_without released
 Name:           kitinerary
-Version:        23.08.0
+Version:        23.08.1
 Release:        0
 Summary:        Data model and extraction system for travel reservations
 License:        LGPL-2.1-or-later


++++++ kitinerary-23.08.0.tar.xz -> kitinerary-23.08.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/CMakeLists.txt 
new/kitinerary-23.08.1/CMakeLists.txt
--- old/kitinerary-23.08.0/CMakeLists.txt       2023-08-17 17:51:21.000000000 
+0200
+++ new/kitinerary-23.08.1/CMakeLists.txt       2023-09-11 17:49:23.000000000 
+0200
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 
 cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
-set(PIM_VERSION "5.24.0")
+set(PIM_VERSION "5.24.1")
 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.0")
-set(PIM_PKPASS "5.24.0")
+set(KMIME_VERSION "5.24.1")
+set(PIM_PKPASS "5.24.1")
 
 find_package(KPim${KF_MAJOR_VERSION}Mime ${KMIME_VERSION} CONFIG REQUIRED)
 find_package(KPimPkPass ${PIM_PKPASS} CONFIG REQUIRED)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/po/zh_CN/kitinerary.po 
new/kitinerary-23.08.1/po/zh_CN/kitinerary.po
--- old/kitinerary-23.08.0/po/zh_CN/kitinerary.po       2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/po/zh_CN/kitinerary.po       2023-09-11 
17:49:23.000000000 +0200
@@ -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-08-02 12:43\n"
+"PO-Revision-Date: 2023-09-02 02:59\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.0/src/cli/org.kde.kitinerary-extractor.appdata.xml 
new/kitinerary-23.08.1/src/cli/org.kde.kitinerary-extractor.appdata.xml
--- old/kitinerary-23.08.0/src/cli/org.kde.kitinerary-extractor.appdata.xml     
2023-08-17 17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/cli/org.kde.kitinerary-extractor.appdata.xml     
2023-09-11 17:49:23.000000000 +0200
@@ -119,9 +119,9 @@
     <binary>kitinerary-extractor</binary>
   </provides>
   <releases>
+    <release version="5.24.1" date="2023-09-14"/>
     <release version="5.24.0" date="2023-08-24"/>
     <release version="5.23.3" date="2023-07-06"/>
     <release version="5.23.2" date="2023-06-08"/>
-    <release version="5.23.1" date="2023-05-11"/>
   </releases>
 </component>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-23.08.0/src/cli/org.kde.kitinerary-extractor.desktop 
new/kitinerary-23.08.1/src/cli/org.kde.kitinerary-extractor.desktop
--- old/kitinerary-23.08.0/src/cli/org.kde.kitinerary-extractor.desktop 
2023-08-17 17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/cli/org.kde.kitinerary-extractor.desktop 
2023-09-11 17:49:23.000000000 +0200
@@ -61,7 +61,7 @@
 GenericName[sk]=Extraktor cez príkazový riadok pre KItinerary
 GenericName[sl]=KItinerary ekstraktor ukazne vrstice
 GenericName[sv]=Kitinerary extrahering på kommandoraden
-GenericName[tr]=K Yol Kılavuzu Komut Satırı Çıkarıcı
+GenericName[tr]=K Yol Kılavuzu Komut Satırı Çıkarıcısı
 GenericName[uk]=Засіб видобування KItinerary для 
командного рядка
 GenericName[x-test]=xxKItinerary command line extractorxx
 GenericName[zh_CN]=KItinerary 命令行导出工具
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/barcodedecoder.cpp 
new/kitinerary-23.08.1/src/lib/barcodedecoder.cpp
--- old/kitinerary-23.08.0/src/lib/barcodedecoder.cpp   2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/barcodedecoder.cpp   2023-09-11 
17:49:23.000000000 +0200
@@ -37,7 +37,7 @@
 
 static constexpr const auto SQUARE_MAX_ASPECT = 1.25f;
 static constexpr const auto PDF417_MIN_ASPECT = 1.5f;
-static constexpr const auto PDF417_MAX_ASPECT = 6.0f;
+static constexpr const auto PDF417_MAX_ASPECT = 6.5f;
 static constexpr const auto ANY1D_MIN_ASPECT = 1.95f;
 static constexpr const auto ANY1D_MAX_ASPECT = 8.0f;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/aerlingus.js 
new/kitinerary-23.08.1/src/lib/scripts/aerlingus.js
--- old/kitinerary-23.08.0/src/lib/scripts/aerlingus.js 2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/aerlingus.js 2023-09-11 
17:49:23.000000000 +0200
@@ -52,3 +52,12 @@
     return reservations;
 }
 
+function extractPdfBoardingPass(pdf, node, barcode) {
+    let res = barcode.result[0];
+    const text = pdf.pages[barcode.location].text;
+    const times = text.match(/(\d\d:\d\d) +\d+[A-Z] +(\d\d:\d\d)/);
+    res.reservationFor.departureTime = JsonLd.toDateTime(times[1], 'hh:mm', 
'en');
+    res.reservationFor.boardingTime = JsonLd.toDateTime(times[2], 'hh:mm', 
'en');
+    return res;
+
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/aerlingus.json 
new/kitinerary-23.08.1/src/lib/scripts/aerlingus.json
--- old/kitinerary-23.08.0/src/lib/scripts/aerlingus.json       2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/aerlingus.json       2023-09-11 
17:49:23.000000000 +0200
@@ -4,4 +4,10 @@
         { "field": "From", "match": "aerlingus.com", "mimeType": 
"message/rfc822", "scope": "Ancestors" }
     ],
     "script": "aerlingus.js"
+},
+{
+    "mimeType": "application/pdf",
+    "filter": [  { "field": "operatingCarrierDesignator", "match": "EI", 
"mimeType": "internal/iata-bcbp", "scope": "Descendants" } ],
+    "script": "aerlingus.js",
+    "function": "extractPdfBoardingPass"
 }]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/amtrack.js 
new/kitinerary-23.08.1/src/lib/scripts/amtrack.js
--- old/kitinerary-23.08.0/src/lib/scripts/amtrack.js   2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/amtrack.js   2023-09-11 
17:49:23.000000000 +0200
@@ -15,7 +15,7 @@
         leg.reservedTicket.ticketToken = 'qrcode:' + triggerNode.content;
 
         // format variant 1
-        let train = text.substr(idx).match(/TRAIN  +\w.*?  +(.*?) 
+DEPARTS\s+ARRIVES \(\w{3} (.*)\)\n\s*(\d+)\s+(\w{3} \d{1,2}), 
(\d{4})\n\s*(.*)?\n?\s*\d+ (.*) Seats?\n?  +(\d{1,2}:\d{2} [AP]M) 
+(\d{1,2}:\d{2} [AP]M)/);
+        let train = text.substr(idx).match(/TRAIN  +\w.*?  +(.*?) 
+DEPARTS\s+ARRIVES \(\w{3} (.*)\)\n\s*(\d+)\s+(\w{3} \d{1,2}), 
(\d{4})\n?\s*(.*)?\n?\s*\d+ (?:Unreserved )?(.*) Seats?\n?  +(\d{1,2}:\d{2} 
[AP]M) +(\d{1,2}:\d{2} [AP]M)/);
         if (train) {
             leg.reservationFor.trainNumber = train[3];
             leg.reservationFor.departureTime = JsonLd.toDateTime(train[4] + ' 
' + train[5] + ' ' + train[8], 'MMM d yyyy h:mm AP', 'en');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-23.08.0/src/lib/scripts/british-airways.js 
new/kitinerary-23.08.1/src/lib/scripts/british-airways.js
--- old/kitinerary-23.08.0/src/lib/scripts/british-airways.js   1970-01-01 
01:00:00.000000000 +0100
+++ new/kitinerary-23.08.1/src/lib/scripts/british-airways.js   2023-09-11 
17:49:23.000000000 +0200
@@ -0,0 +1,13 @@
+/*
+   SPDX-FileCopyrightText: 2023 Volker Krause <[email protected]>
+   SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+function extractBoardingPass(pdf, node, barcode) {
+    const text = pdf.pages[barcode.location].text;
+    let res = barcode.result[0];
+    const times = text.match(/(\d\d:\d\d) +(\d\d:\d\d)\n/);
+    res.reservationFor.boardingTime = JsonLd.toDateTime(times[1], "hh:mm", 
"en");
+    res.reservationFor.departureTime = JsonLd.toDateTime(times[2], "hh:mm", 
"en");
+    return res;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-23.08.0/src/lib/scripts/british-airways.json 
new/kitinerary-23.08.1/src/lib/scripts/british-airways.json
--- old/kitinerary-23.08.0/src/lib/scripts/british-airways.json 1970-01-01 
01:00:00.000000000 +0100
+++ new/kitinerary-23.08.1/src/lib/scripts/british-airways.json 2023-09-11 
17:49:23.000000000 +0200
@@ -0,0 +1,13 @@
+{
+    "filter": [
+        {
+            "field": "airlineDesignatorOfBoardingPassIssuer",
+            "match": "BA",
+            "mimeType": "internal/iata-bcbp",
+            "scope": "Descendants"
+        }
+    ],
+    "function": "extractBoardingPass",
+    "mimeType": "application/pdf",
+    "script": "british-airways.js"
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-23.08.0/src/lib/scripts/deutschebahn-online-ticket.js 
new/kitinerary-23.08.1/src/lib/scripts/deutschebahn-online-ticket.js
--- old/kitinerary-23.08.0/src/lib/scripts/deutschebahn-online-ticket.js        
2023-08-17 17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/deutschebahn-online-ticket.js        
2023-09-11 17:49:23.000000000 +0200
@@ -6,7 +6,6 @@
 function parseOnlineTicket(xml)
 {
     // TODO handle multi-ticket
-    // TODO how do buses look in here?
 
     const trains = xml.root.eval('//trainlist/train');
     let result = [];
@@ -75,7 +74,11 @@
     ticket.reservedTicket.ticketNumber = 
tickets[0].eval('mtk/ot_nr_hin')[0].content;
     let mergedResult = [];
     for (let train of result) {
-        mergedResult.push(JsonLd.apply(ticket, train));
+        if (train['@type'] == 'BusReservation') {
+            
mergedResult.push(JsonLd.apply(JsonLd.trainToBusReservation(ticket), train));
+        } else {
+            mergedResult.push(JsonLd.apply(ticket, train));
+        }
     }
     return mergedResult;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/extractors.qrc 
new/kitinerary-23.08.1/src/lib/scripts/extractors.qrc
--- old/kitinerary-23.08.0/src/lib/scripts/extractors.qrc       2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/extractors.qrc       2023-09-11 
17:49:23.000000000 +0200
@@ -50,6 +50,8 @@
         <file>bookingkit.js</file>
         <file>bremer-baeder.json</file>
         <file>bremer-baeder.js</file>
+        <file>british-airways.json</file>
+        <file>british-airways.js</file>
         <file>brusselsairlines.json</file>
         <file>brusselsairlines.js</file>
         <file>brusselsairlines-receipt.js</file>
@@ -185,6 +187,8 @@
         <file>pkp.js</file>
         <file>premier-inn.json</file>
         <file>premier-inn.js</file>
+        <file>premiumkino.json</file>
+        <file>premiumkino.js</file>
         <file>pretix.json</file>
         <file>pretix.js</file>
         <file>qatar-airways.json</file>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/mav.js 
new/kitinerary-23.08.1/src/lib/scripts/mav.js
--- old/kitinerary-23.08.0/src/lib/scripts/mav.js       2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/mav.js       2023-09-11 
17:49:23.000000000 +0200
@@ -109,7 +109,7 @@
         let leg = text.substr(idx).match(/(\d\d\.\d\d\.) (\d\d:\d\d) (.*) → 
(\d\d:\d\d) (.*?)  (.*)/);
         if (!leg)
             break;
-        idx = leg.index + leg[0].length;
+        idx += leg.index + leg[0].length;
 
         let res = JsonLd.newTrainReservation();
         res.reservationFor.departureTime = JsonLd.toDateTime(leg[1] + leg[2], 
'dd.MM.hh:mm', 'hu');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/premiumkino.js 
new/kitinerary-23.08.1/src/lib/scripts/premiumkino.js
--- old/kitinerary-23.08.0/src/lib/scripts/premiumkino.js       1970-01-01 
01:00:00.000000000 +0100
+++ new/kitinerary-23.08.1/src/lib/scripts/premiumkino.js       2023-09-11 
17:49:23.000000000 +0200
@@ -0,0 +1,20 @@
+/*
+   SPDX-FileCopyrightText: 2023 Volker Krause <[email protected]>
+   SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+function extractPass(pass) {
+    let res = JsonLd.newEventReservation();
+    res.reservationFor.startDate = pass.relevantDate;
+    res.reservationFor.name = pass.field['TicketTitle'].value;
+    res.reservationFor.location.name = pass.organizationName;
+    const addr = pass.field['Back8'].value.split('\n');
+    res.reservationFor.location.address.streetAddress = addr[1];
+    res.reservationFor.location.address.addressLocality = addr[2];
+    res.reservationFor.location.geo.latitude = pass.locations[0].latitude;
+    res.reservationFor.location.geo.longitude = pass.locations[0].longitude;
+    res.reservedTicket.ticketToken = 'qrCode:' + pass.barcodes[0].message;
+    res.reservedTicket.ticketedSeat.seatSection = pass.field['Theatre'].value;
+    res.reservedTicket.ticketedSeat.seatNumber = pass.field['Seats'].value;
+    return res;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/premiumkino.json 
new/kitinerary-23.08.1/src/lib/scripts/premiumkino.json
--- old/kitinerary-23.08.0/src/lib/scripts/premiumkino.json     1970-01-01 
01:00:00.000000000 +0100
+++ new/kitinerary-23.08.1/src/lib/scripts/premiumkino.json     2023-09-11 
17:49:23.000000000 +0200
@@ -0,0 +1,13 @@
+{
+    "filter": [
+        {
+            "field": "passTypeIdentifier",
+            "match": "pass.de.premiumkino.ticket",
+            "mimeType": "application/vnd.apple.pkpass",
+            "scope": "Current"
+        }
+    ],
+    "function": "extractPass",
+    "mimeType": "application/vnd.apple.pkpass",
+    "script": "premiumkino.js"
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/slovak-lines.js 
new/kitinerary-23.08.1/src/lib/scripts/slovak-lines.js
--- old/kitinerary-23.08.0/src/lib/scripts/slovak-lines.js      2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/slovak-lines.js      2023-09-11 
17:49:23.000000000 +0200
@@ -36,3 +36,21 @@
     };
     return res;
 }
+
+function extractTicket(pdf, node, barcode) {
+    const text = pdf.pages[barcode.location].text;
+    let res = JsonLd.newBusReservation();
+    res.underName.name = text.match(/^.*?: +(.*?)  /)[1];
+    res.reservationNumber = barcode.content;
+    const dep = text.match(/Departure: +(.*) \S+, (\d\d\.\d\d\.\d{4} 
\d\d:\d\d)/);
+    res.reservationFor.departureBusStop.name = dep[1];
+    res.reservationFor.departureTime = JsonLd.toDateTime(dep[2], 'dd.MM.yyyy 
hh:mm', 'en');
+    const arr = text.match(/Arrival: +(.*) \S+, (\d\d\.\d\d\.\d{4} 
\d\d:\d\d)/);
+    res.reservationFor.arrivalBusStop.name = arr[1];
+    res.reservationFor.arrivalTime = JsonLd.toDateTime(arr[2], 'dd.MM.yyyy 
hh:mm', 'en');
+    res.reservationFor.departurePlatform = text.match(/Platform: +(\S.*)/)[1];
+    res.reservedTicket.ticketedSeat.seatNumber = text.match(/Seat: 
+(\S.*)/)[1];
+    res.reservationFor.busNumber = text.match(/Bus line no: +(.*)  /)[1];
+    res.reservedTicket.ticketToken = 'qrCode:' + barcode.content;
+    return res;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/slovak-lines.json 
new/kitinerary-23.08.1/src/lib/scripts/slovak-lines.json
--- old/kitinerary-23.08.0/src/lib/scripts/slovak-lines.json    2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/slovak-lines.json    2023-09-11 
17:49:23.000000000 +0200
@@ -1,13 +1,27 @@
-{
-    "filter": [
-        {
-            "field": "passTypeIdentifier",
-            "match": "pass.sk.slovaklines",
-            "mimeType": "application/vnd.apple.pkpass",
-            "scope": "Current"
-        }
-    ],
-    "function": "extractPass",
-    "mimeType": "application/vnd.apple.pkpass",
-    "script": "slovak-lines.js"
-}
+[
+    {
+        "filter": [
+            {
+                "field": "passTypeIdentifier",
+                "match": "pass.sk.slovaklines",
+                "mimeType": "application/vnd.apple.pkpass",
+                "scope": "Current"
+            }
+        ],
+        "function": "extractPass",
+        "mimeType": "application/vnd.apple.pkpass",
+        "script": "slovak-lines.js"
+    },
+    {
+        "filter": [
+            {
+                "match": "^\\d{12}$",
+                "mimeType": "text/plain",
+                "scope": "Descendants"
+            }
+        ],
+        "function": "extractTicket",
+        "mimeType": "application/pdf",
+        "script": "slovak-lines.js"
+    }
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/sncf.js 
new/kitinerary-23.08.1/src/lib/scripts/sncf.js
--- old/kitinerary-23.08.0/src/lib/scripts/sncf.js      2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/sncf.js      2023-09-11 
17:49:23.000000000 +0200
@@ -249,11 +249,11 @@
     return reservations;
 }
 
-function parseSecutixPdf(pdf, node, triggerNode)
+function parseSecutix(barcode)
 {
     // see 
https://community.kde.org/KDE_PIM/KItinerary/SNCF_Barcodes#SNCF_Secutix_Tickets
-    var res = JsonLd.newTrainReservation();
-    var code = ByteArray.decodeLatin1(triggerNode.content.slice(260));
+    let res = JsonLd.newTrainReservation();
+    const code = ByteArray.decodeLatin1(barcode.slice(260));
     res.reservationFor.provider.identifier = 'uic:' + code.substr(4, 4);
     res.reservationNumber = code.substr(8, 9);
     res.reservationFor.departureStation.name = code.substr(17, 5);
@@ -263,14 +263,19 @@
     res.reservationFor.departureDay = JsonLd.toDateTime(code.substr(83, 8), 
"ddMMyyyy", "fr");
     res.reservedTicket.ticketedSeat.seatingType = code.substr(91, 1);
     res.reservedTicket.ticketNumber = code.substr(8, 9);
-    res.reservedTicket.ticketToken = "aztecbin:" + 
ByteArray.toBase64(triggerNode.content);
+    res.reservedTicket.ticketToken = "aztecbin:" + ByteArray.toBase64(barcode);
     res.underName.familyName = code.substr(116, 19);
     res.underName.givenName = code.substr(135, 19);
     res.programMembershipUsed.programName = tariffs[code.substr(92, 4)];
+    return res;
+}
 
-    var text = pdf.pages[triggerNode.location].text;
-    var pnr = text.match(res.reservationNumber + '[^\n]* ([A-Z0-9]{6})\n');
-    var layoutVersion = 1;
+function parseSecutixPdf(pdf, node, triggerNode)
+{
+    let res = triggerNode.result[0];
+    const text = pdf.pages[triggerNode.location].text;
+    let pnr = text.match(res.reservationNumber + '[^\n]* ([A-Z0-9]{6})\n');
+    let layoutVersion = 1;
     if (!pnr) {
         pnr = text.match(/(?:PAO|REF)\s*:\s*([A-Z0-9]{6,8})\n/);
         layoutVersion = 2;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/sncf.json 
new/kitinerary-23.08.1/src/lib/scripts/sncf.json
--- old/kitinerary-23.08.0/src/lib/scripts/sncf.json    2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/sncf.json    2023-09-11 
17:49:23.000000000 +0200
@@ -47,6 +47,18 @@
             {
                 "match": "^2200",
                 "mimeType": "application/octet-stream",
+                "scope": "Current"
+            }
+        ],
+        "function": "parseSecutix",
+        "mimeType": "application/octet-stream",
+        "script": "sncf.js"
+    },
+    {
+        "filter": [
+            {
+                "match": "^2200",
+                "mimeType": "application/octet-stream",
                 "scope": "Descendants"
             }
         ],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/zssk.js 
new/kitinerary-23.08.1/src/lib/scripts/zssk.js
--- old/kitinerary-23.08.0/src/lib/scripts/zssk.js      2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/zssk.js      2023-09-11 
17:49:23.000000000 +0200
@@ -26,8 +26,10 @@
     res.reservationFor.departureStation.name = payload[6];
     res.reservationFor.arrivalStation.name = payload[7];
     const trainNum = payload[8].match(/(\d+)\[(?:(\d)\.tr\.|\*)]/);
-    res.reservationFor.trainNumber = trainNum[1];
-    res.reservedTicket.ticketedSeat.seatingType = trainNum[2];
+    if (trainNum) {
+        res.reservationFor.trainNumber = trainNum[1];
+        res.reservedTicket.ticketedSeat.seatingType = trainNum[2];
+    }
     res.reservationFor.departureTime = parseDateTime(payload[9]);
     res.underName.name = payload[11];
     res.programMembershipUsed.membershipNumber = payload[20];
@@ -59,6 +61,10 @@
 }
 
 function parseDomesticPdf(pdf, node, triggerNode) {
+    if (triggerNode.result[0]['@type'] == 'Ticket') {
+        return triggerNode.result;
+    }
+
     const text = pdf.pages[triggerNode.location].text;
     // TODO multi-leg support?
     const leg = text.match(/\d{2}\.\d{2}.\d{2} +\d{2}:\d{2} +.*  -> .* 
+(\d{2}\.\d{2}\.\d{2} +\d{2}:\d{2})/);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/scripts/zssk.json 
new/kitinerary-23.08.1/src/lib/scripts/zssk.json
--- old/kitinerary-23.08.0/src/lib/scripts/zssk.json    2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/scripts/zssk.json    2023-09-11 
17:49:23.000000000 +0200
@@ -14,7 +14,7 @@
     {
         "filter": [
             {
-                "match": "^\\x04\\x01",
+                "match": "^\\x04..\\x78\\x9c",
                 "mimeType": "application/octet-stream",
                 "scope": "Descendants"
             }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/uic9183/rct2ticket.cpp 
new/kitinerary-23.08.1/src/lib/uic9183/rct2ticket.cpp
--- old/kitinerary-23.08.0/src/lib/uic9183/rct2ticket.cpp       2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/uic9183/rct2ticket.cpp       2023-09-11 
17:49:23.000000000 +0200
@@ -193,7 +193,8 @@
 
     // somewhat standard compliant layout
     if (d->layout.text(0, 15, 3, 1).trimmed().isEmpty()) {
-        return d->layout.text(0, 18, 33, 1).trimmed();
+        const auto s = d->layout.text(0, 18, 33, 1).trimmed();
+        return s.isEmpty() ? d->layout.text(1, 18, 33, 1).trimmed() : s;
     }
 
     // "creative" layout
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-23.08.0/src/lib/uic9183/uic9183parser.cpp 
new/kitinerary-23.08.1/src/lib/uic9183/uic9183parser.cpp
--- old/kitinerary-23.08.0/src/lib/uic9183/uic9183parser.cpp    2023-08-17 
17:51:21.000000000 +0200
+++ new/kitinerary-23.08.1/src/lib/uic9183/uic9183parser.cpp    2023-09-11 
17:49:23.000000000 +0200
@@ -354,7 +354,6 @@
     // CD vender block
     if (const auto b = findBlock<Vendor1154UTBlock>(); b.isValid()) {
         const auto subBlock = b.findSubBlock("DO");
-        qDebug() << subBlock.toString();
         if (!subBlock.isNull()) {
             return QDateTime::fromString(subBlock.toString(), 
QStringLiteral("dd.MM.yyyy hh:mm"));
         }
@@ -362,12 +361,13 @@
 
 
     // RCT2 RPT according to ERA TAP TSI Annex B.6
-    if (const auto rct2 = rct2Ticket(); rct2.isValid() && (rct2.type() == 
Rct2Ticket::RailPass || rct2.type() == Rct2Ticket::Unknown)) {
+    if (const auto rct2 = rct2Ticket(); rct2.isValid()) {
         const auto validityRange = ticketLayout().text(3, 1, 36, 1).trimmed();
         const auto idx = std::max(validityRange.lastIndexOf(QLatin1Char(' ')), 
validityRange.lastIndexOf(QLatin1Char('-')));
         if (idx > 0) {
             return QDateTime(QDate::fromString(validityRange.mid(idx + 1), 
QStringLiteral("dd.MM.yyyy")), {23, 59, 59});
         }
+        return rct2.outboundArrivalTime();
     }
 
     return {};

Reply via email to