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-01-07 17:16:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kitinerary (Old)
 and      /work/SRC/openSUSE:Factory/.kitinerary.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kitinerary"

Sat Jan  7 17:16:55 2023 rev:57 rq:1056533 version:22.12.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/kitinerary/kitinerary.changes    2022-12-09 
13:17:58.531063673 +0100
+++ /work/SRC/openSUSE:Factory/.kitinerary.new.1563/kitinerary.changes  
2023-01-07 17:18:06.833583064 +0100
@@ -1,0 +2,8 @@
+Tue Jan  3 10:20:15 UTC 2023 - Christophe Marin <[email protected]>
+
+- Update to 22.12.1
+  * New bugfix release
+  * For more details please see:
+  * https://kde.org/announcements/gear/22.12.1/
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ kitinerary.spec ++++++
--- /var/tmp/diff_new_pack.AfgXYu/_old  2023-01-07 17:18:08.753594519 +0100
+++ /var/tmp/diff_new_pack.AfgXYu/_new  2023-01-07 17:18:08.757594543 +0100
@@ -18,7 +18,7 @@
 
 %bcond_without released
 Name:           kitinerary
-Version:        22.12.0
+Version:        22.12.1
 Release:        0
 Summary:        Data model and extraction system for travel reservations
 License:        LGPL-2.1-or-later


++++++ kitinerary-22.12.0.tar.xz -> kitinerary-22.12.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/CMakeLists.txt 
new/kitinerary-22.12.1/CMakeLists.txt
--- old/kitinerary-22.12.0/CMakeLists.txt       2022-11-30 01:42:38.000000000 
+0100
+++ new/kitinerary-22.12.1/CMakeLists.txt       2023-01-03 01:01:08.000000000 
+0100
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 
 cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
-set(PIM_VERSION "5.22.0")
+set(PIM_VERSION "5.22.1")
 project(KItinerary VERSION ${PIM_VERSION})
 
 set(KF5_MIN_VERSION "5.91.0")
@@ -41,8 +41,8 @@
     find_package(SharedMimeInfo 1.3 REQUIRED)
 endif()
 
-set(KMIME_VERSION "5.22.0")
-set(PIM_PKPASS "5.22.0")
+set(KMIME_VERSION "5.22.1")
+set(PIM_PKPASS "5.22.1")
 
 find_package(KF5Mime ${KMIME_VERSION} CONFIG REQUIRED)
 find_package(KPimPkPass ${PIM_PKPASS} CONFIG REQUIRED)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-22.12.0/autotests/extractordata/web/mobilizon.html 
new/kitinerary-22.12.1/autotests/extractordata/web/mobilizon.html
--- old/kitinerary-22.12.0/autotests/extractordata/web/mobilizon.html   
1970-01-01 01:00:00.000000000 +0100
+++ new/kitinerary-22.12.1/autotests/extractordata/web/mobilizon.html   
2023-01-03 01:01:08.000000000 +0100
@@ -0,0 +1 @@
+<script 
type="application/ld+json">{"@context":"https://schema.org","@type":"Event","description":"Jedes
 Jahr werden weltweit 1,5 Milliarden Smartphones hergestellt und genauso viele 
mit Ablauf der Updates nach kurzer Nutzungsdauer weggeworfen. Mit Upcycling 
Android zeigt die Free Software Foundation Europe auf, wie mit Hilfe der 
Installation Freier Software Betriebssysteme Telefone durch Flashen länger 
genutzt werden können. Wir werden Beispieltelefone mitbringen, auf welchen 
Freie Software Betriebssysteme ausprobiert oder auch von den Teilnehmern selbst 
geflasht werden können. Währenddessen beantworten wir Fragen rund ums Flashen 
und zeigen mit F-Droid und microG zudem eine Welt voller Freier Software.   Der 
Workshop findet statt am 20.01.2023 von 16:00 - 20:00 Uhr im Clubraum in der 
Branddirektion der Alte Feuerwache Köln, Melchiorstraße 3, 50670 Köln. Wenn 
Sie selbst ein Handy flashen wollen, bringen Sie bitte Ihren eigenen Laptop 
mit. Wenn Sie Ihr eigenes Handy flashen w
 ollen, machen Sie bitte vorher ein Backup der Daten, die Ihnen wichtig sind. 
Plätze sind begrenzt, bitte treten sie dem Event hier bei um sich für den 
Workshop anzumelden. Für Fragen und Rückmeldungen können sie uns auch an 
[email protected] 
schreiben.","endDate":"2023-01-20T19:00:00Z","eventAttendanceMode":"https://schema.org/OfflineEventAttendanceMode","eventStatus":"https://schema.org/EventScheduled","image":["https://mobilize.berlin/media/e57fd69e0cb3b47ef0b0953e61a6f10777345b875cc1f5cdcfaf35ca56a02cde.png?name=1670592919209.png"],"location":[{"@type":"Place","address":{"@type":"PostalAddress","addressCountry":"Germany","addressLocality":"Cologne","addressRegion":"North
 Rhine-Westphalia","postalCode":"50670","streetAddress":"3 
Melchiorstraße"},"name":"Bürgerzentrum Alte 
Feuerwache"}],"maximumAttendeeCapacity":25,"name":"Upcycling Android 
Workshop","organizer":{"@type":"Person","name":"fsfe"},"performer":{"@type":"Person","name":"fsfe"},"remainingAttendeeCapacity":24,"sta
 rtDate":"2023-01-20T15:00:00Z"}</script>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-22.12.0/autotests/extractordata/web/mobilizon.html.json 
new/kitinerary-22.12.1/autotests/extractordata/web/mobilizon.html.json
--- old/kitinerary-22.12.0/autotests/extractordata/web/mobilizon.html.json      
1970-01-01 01:00:00.000000000 +0100
+++ new/kitinerary-22.12.1/autotests/extractordata/web/mobilizon.html.json      
2023-01-03 01:01:08.000000000 +0100
@@ -0,0 +1,31 @@
+[
+    {
+        "@context": "http://schema.org";,
+        "@type": "Event",
+        "description": "Jedes Jahr werden weltweit 1,5 Milliarden Smartphones 
hergestellt und genauso viele mit Ablauf der Updates nach kurzer Nutzungsdauer 
weggeworfen. Mit Upcycling Android zeigt die Free Software Foundation Europe 
auf, wie mit Hilfe der Installation Freier Software Betriebssysteme Telefone 
durch Flashen länger genutzt werden können. Wir werden Beispieltelefone 
mitbringen, auf welchen Freie Software Betriebssysteme ausprobiert oder auch 
von den Teilnehmern selbst geflasht werden können. Währenddessen beantworten 
wir Fragen rund ums Flashen und zeigen mit F-Droid und microG zudem eine Welt 
voller Freier Software.   Der Workshop findet statt am 20.01.2023 von 16:00 - 
20:00 Uhr im Clubraum in der Branddirektion der Alte Feuerwache Köln, 
Melchiorstraße 3, 50670 Köln. Wenn Sie selbst ein Handy flashen wollen, 
bringen Sie bitte Ihren eigenen Laptop mit. Wenn Sie Ihr eigenes Handy flashen 
wollen, machen Sie bitte vorher ein Backup der Daten, die Ihnen wichtig sind
 . Plätze sind begrenzt, bitte treten sie dem Event hier bei um sich für den 
Workshop anzumelden. Für Fragen und Rückmeldungen können sie uns auch an 
[email protected] schreiben.",
+        "endDate": {
+            "@type": "QDateTime",
+            "@value": "2023-01-20T20:00:00+01:00",
+            "timezone": "Europe/Berlin"
+        },
+        "image": 
"https://mobilize.berlin/media/e57fd69e0cb3b47ef0b0953e61a6f10777345b875cc1f5cdcfaf35ca56a02cde.png?name=1670592919209.png";,
+        "location": {
+            "@type": "Place",
+            "address": {
+                "@type": "PostalAddress",
+                "addressCountry": "DE",
+                "addressLocality": "Cologne",
+                "addressRegion": "North Rhine-Westphalia",
+                "postalCode": "50670",
+                "streetAddress": "3 Melchiorstraße"
+            },
+            "name": "Bürgerzentrum Alte Feuerwache"
+        },
+        "name": "Upcycling Android Workshop",
+        "startDate": {
+            "@type": "QDateTime",
+            "@value": "2023-01-20T16:00:00+01:00",
+            "timezone": "Europe/Berlin"
+        }
+    }
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/po/eu/kitinerary.po 
new/kitinerary-22.12.1/po/eu/kitinerary.po
--- old/kitinerary-22.12.0/po/eu/kitinerary.po  1970-01-01 01:00:00.000000000 
+0100
+++ new/kitinerary-22.12.1/po/eu/kitinerary.po  2023-01-03 01:01:08.000000000 
+0100
@@ -0,0 +1,189 @@
+# Translation for kitinerary.po to Euskara/Basque (eu).
+# Copyright (C) 2022 This file is copyright:
+# This file is distributed under the same license as the kitinerary package.
+# KDE euskaratzeko proiektuko arduraduna <[email protected]>.
+#
+# Translators:
+# Iñigo Salvador Azurmendi <[email protected]>, 2022.
+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-12-02 00:23+0100\n"
+"Last-Translator: Iñigo Salvador Azurmendi <[email protected]>\n"
+"Language-Team: Basque <[email protected]>\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 22.08.3\n"
+
+#: calendarhandler.cpp:160
+#, kde-format
+msgctxt "canceled train/flight/loading reservation"
+msgid "Canceled: %1"
+msgstr "Bertan behera: %1"
+
+#: calendarhandler.cpp:186
+#, kde-format
+msgid "Flight %1 from %2 to %3"
+msgstr "%1 hegaldia, %2(e)tik %3(e)ra"
+
+#: calendarhandler.cpp:205
+#, kde-format
+msgid "Boarding for flight %1"
+msgstr "%1 hegaldirako ontziratzea"
+
+#: calendarhandler.cpp:207
+#, kde-format
+msgid "Boarding for flight %1 at gate %2"
+msgstr "%1 hegaldirako ontziratzea %2 atean"
+
+#: calendarhandler.cpp:216
+#, kde-format
+msgid "Boarding time: %1"
+msgstr "Ontziratzeko ordua: %1"
+
+#: calendarhandler.cpp:219
+#, kde-format
+msgctxt "flight departure gate"
+msgid "Departure gate: %1"
+msgstr "Irteerako atea: %1"
+
+#: calendarhandler.cpp:229
+#, kde-format
+msgid "Boarding group: %1"
+msgstr "Ontziratze taldea: %1"
+
+#: calendarhandler.cpp:232 calendarhandler.cpp:264 calendarhandler.cpp:292
+#, kde-format
+msgid "Seat: %1"
+msgstr "Eserlekua: %1"
+
+#: calendarhandler.cpp:235 calendarhandler.cpp:270 calendarhandler.cpp:295
+#: calendarhandler.cpp:316 calendarhandler.cpp:362 calendarhandler.cpp:418
+#: calendarhandler.cpp:459 calendarhandler.cpp:491
+#, kde-format
+msgid "Booking reference: %1"
+msgstr "Erreserbaren erreferentzia: %1"
+
+#: calendarhandler.cpp:247
+#, kde-format
+msgid "Train %1 from %2 to %3"
+msgstr "%1 trena, %2(e)tik %3(e)ra"
+
+#: calendarhandler.cpp:256
+#, kde-format
+msgid "Departure platform: %1"
+msgstr "Irteera nasa: %1"
+
+#: calendarhandler.cpp:261
+#, kde-format
+msgid "Coach: %1"
+msgstr "Bagoia: %1"
+
+#: calendarhandler.cpp:267
+#, kde-format
+msgid "Arrival platform: %1"
+msgstr "Iritsiera nasa: %1"
+
+#: calendarhandler.cpp:281
+#, kde-format
+msgid "Bus %1 from %2 to %3"
+msgstr "%1 autobusa, %2(e)tik %3(e)ra"
+
+#: calendarhandler.cpp:306
+#, kde-format
+msgid "Ferry from %1 to %2"
+msgstr "Ferrya, %1(e)tik %2(e)ra"
+
+#: calendarhandler.cpp:319
+#, kde-format
+msgid "Ticket number: %1"
+msgstr "Tiket zenbakia: %1"
+
+#: calendarhandler.cpp:329
+#, kde-format
+msgid "Hotel reservation: %1"
+msgstr "Hoteleko erreserba: %1"
+
+#: calendarhandler.cpp:340
+#, kde-format
+msgid "Check-in: %1"
+msgstr "Helduera: %1"
+
+#: calendarhandler.cpp:343
+#, kde-format
+msgid "Check-out: %1"
+msgstr "Alde egitea: %1"
+
+#: calendarhandler.cpp:346
+#, kde-format
+msgid "Phone: %1"
+msgstr "Telefonoa: %1"
+
+#: calendarhandler.cpp:349
+#, kde-format
+msgid "Email: %1"
+msgstr "e-Posta: %1"
+
+#: calendarhandler.cpp:352
+#, kde-format
+msgid "Website: %1"
+msgstr "Webgunea: %1"
+
+#: calendarhandler.cpp:395
+#, kde-format
+msgid "Entrance for %1"
+msgstr "%1(e)rarako sarrera"
+
+#: calendarhandler.cpp:442
+#, kde-format
+msgid "Restaurant reservation: %1"
+msgstr "Jatetxeko erreserba: %1"
+
+#: calendarhandler.cpp:456
+#, kde-format
+msgid "Number of people: %1"
+msgstr "Pertsona kopurua: %1"
+
+#: calendarhandler.cpp:463 calendarhandler.cpp:495
+#, kde-format
+msgid "Under name: %1"
+msgstr "Zein izenpean: %1"
+
+#: calendarhandler.cpp:473
+#, kde-format
+msgid "Rental car reservation: %1"
+msgstr "Alokairuko autoa erreserbatzea: %1"
+
+#: calendarhandler.cpp:484
+#, kde-format
+msgid ""
+"Pickup location: %1\n"
+"%2\n"
+msgstr ""
+"Biltzeko lekua: %1\n"
+"%2\n"
+
+#: calendarhandler.cpp:488
+#, kde-format
+msgid ""
+"Dropoff location: %1\n"
+"%2\n"
+msgstr ""
+"Entregatzeko lekua: %1\n"
+"%2\n"
+
+#: calendarhandler.cpp:517
+#, kde-format
+msgid ""
+"Reservation reference: %1\n"
+"Under name: %2\n"
+"Pickup location: %3"
+msgstr ""
+"Erreserbaren erreferentzia: %1\n"
+"Zein izenpean: %2\n"
+"Biltzeko tokia: %3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/po/zh_CN/kitinerary.po 
new/kitinerary-22.12.1/po/zh_CN/kitinerary.po
--- old/kitinerary-22.12.0/po/zh_CN/kitinerary.po       2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/po/zh_CN/kitinerary.po       2023-01-03 
01:01:08.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: 2022-11-19 14:51\n"
+"PO-Revision-Date: 2022-12-24 11:44\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-22.12.0/src/cli/org.kde.kitinerary-extractor.appdata.xml 
new/kitinerary-22.12.1/src/cli/org.kde.kitinerary-extractor.appdata.xml
--- old/kitinerary-22.12.0/src/cli/org.kde.kitinerary-extractor.appdata.xml     
2022-11-30 01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/cli/org.kde.kitinerary-extractor.appdata.xml     
2023-01-03 01:01:08.000000000 +0100
@@ -17,6 +17,7 @@
   <name xml:lang="en-GB">KItinerary Command Line Extractor</name>
   <name xml:lang="es">Extractor de línea de órdenes de KItinerary</name>
   <name xml:lang="et">KItinerary käsurea hankija</name>
+  <name xml:lang="eu">KItinerary komando-lerroko erauzlea</name>
   <name xml:lang="fi">KItineraryn komentorivijäsennin</name>
   <name xml:lang="fr">Extracteur KItinerary en ligne de commande</name>
   <name xml:lang="gl">Extractor de liña de ordes de KItinerary</name>
@@ -35,7 +36,7 @@
   <name xml:lang="sk">Extraktor cez príkazový riadok pre KItinerary</name>
   <name xml:lang="sl">KItinerary ekstraktor ukazne vrstice</name>
   <name xml:lang="sv">Kitinerary extrahering på kommandoraden</name>
-  <name xml:lang="tr">KItinerary Komut Satırı Çıkarıcısı</name>
+  <name xml:lang="tr">KItinerary Komut Satırı Çıkarıcı</name>
   <name xml:lang="uk">Командний засіб видобування 
KItinerary</name>
   <name xml:lang="x-test">xxKItinerary Command Line Extractorxx</name>
   <name xml:lang="zh-CN">KItinerary 命令行导出工具</name>
@@ -49,6 +50,7 @@
   <summary xml:lang="en-GB">Command line reservation data extractor.</summary>
   <summary xml:lang="es">Extractor de línea de órdenes de reserva de 
datos.</summary>
   <summary xml:lang="et">Käsurea reserveerimisandmete hankija.</summary>
+  <summary xml:lang="eu">Komando-lerroko erreserbako datu-erauzlea.</summary>
   <summary xml:lang="fi">Komentorivin varaustietojäsennin.</summary>
   <summary xml:lang="fr">Extracteur de données de réservation en ligne de 
commande.</summary>
   <summary xml:lang="gl">Extractor de datos de reservas de liña de 
ordes.</summary>
@@ -83,6 +85,7 @@
     <p xml:lang="en-GB">Command line extractor for itinerary data, for 
integrating into 3rd party applications.</p>
     <p xml:lang="es">Extractor de línea de órdenes para datos de itinerario. 
para integración en aplicaciones de terceros.</p>
     <p xml:lang="et">Käsurea reisiandmete hankija, mida lõimida kolmanda 
poole rakendustega.</p>
+    <p xml:lang="eu">Ibilbide-datuen komando-lerroko erauzlea, hirugarrenen 
aplikazioetan bateratzeko.</p>
     <p xml:lang="fi">Komentorivijäsennin varaustiedoille kolmannen osapuolen 
sovelluksia varten.</p>
     <p xml:lang="fr">Extracteur en ligne de commande pour les données 
d'itinéraires, afin de les intégrer à des applications tierces.</p>
     <p xml:lang="gl">Extractor de liña de ordes de datos de itinerarios, para 
integrar con aplicacións de terceiros.</p>
@@ -113,9 +116,9 @@
     <binary>kitinerary-extractor</binary>
   </provides>
   <releases>
+    <release version="5.22.1" date="2023-01-05"/>
     <release version="5.22.0" date="2022-12-08"/>
     <release version="5.21.3" date="2022-11-03"/>
     <release version="5.21.2" date="2022-10-13"/>
-    <release version="5.21.1" date="2022-09-08"/>
   </releases>
 </component>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-22.12.0/src/cli/org.kde.kitinerary-extractor.desktop 
new/kitinerary-22.12.1/src/cli/org.kde.kitinerary-extractor.desktop
--- old/kitinerary-22.12.0/src/cli/org.kde.kitinerary-extractor.desktop 
2022-11-30 01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/cli/org.kde.kitinerary-extractor.desktop 
2023-01-03 01:01:08.000000000 +0100
@@ -9,6 +9,7 @@
 Name[en_GB]=KItinerary Extractor
 Name[es]=Extractor de KItinerary
 Name[et]=KItinerary hankija
+Name[eu]=KItinerary erauzlea
 Name[fi]=KItinerary-jäsennin
 Name[fr]=Extracteur KItinerary
 Name[gl]=Extractor de KItinerary
@@ -40,6 +41,7 @@
 GenericName[en_GB]=KItinerary command line extractor
 GenericName[es]=Extractor de línea de órdenes de KItinerary
 GenericName[et]=KItinerary käsurea hankija
+GenericName[eu]=KItinerary komando-lerroko erauzlea
 GenericName[fi]=KItineraryn komentorivijäsennin
 GenericName[fr]=Extracteur KItinerary en ligne de commande
 GenericName[gl]=Extractor de liña de ordes de KItinerary
@@ -57,7 +59,7 @@
 GenericName[sk]=Extraktor cez príkazový riadok pre KItinerary
 GenericName[sl]=KItinerary ekstraktor ukazne vrstice
 GenericName[sv]=Kitinerary extrahering på kommandoraden
-GenericName[tr]=KItinerary komut satırı çıkarıcısı
+GenericName[tr]=KItinerary Komut Satırı Çıkarıcı
 GenericName[uk]=Засіб видобування KItinerary для 
командного рядка
 GenericName[x-test]=xxKItinerary command line extractorxx
 GenericName[zh_CN]=KItinerary 命令行导出工具
@@ -74,6 +76,7 @@
 Comment[en_GB]=Command line reservation data extractor.
 Comment[es]=Extractor de línea de órdenes de reserva de datos
 Comment[et]=Käsurea puhkuseandmete hankija.
+Comment[eu]=Komando-lerroko erreserbako-datu erauzlea.
 Comment[fi]=Komentorivin varaustietojäsennin.
 Comment[fr]=Extracteur de données de réservation en ligne de commande.
 Comment[gl]=Extractor de datos de reservas de liña de ordes.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/src/lib/asn1/bitvectorview.cpp 
new/kitinerary-22.12.1/src/lib/asn1/bitvectorview.cpp
--- old/kitinerary-22.12.0/src/lib/asn1/bitvectorview.cpp       2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/asn1/bitvectorview.cpp       2023-01-03 
01:01:08.000000000 +0100
@@ -27,6 +27,9 @@
 {
     const auto majIdx = index / 8;
     const auto minIdx = 7 - (index % 8);
+    if (majIdx >= m_data.size()) {
+        return 0;
+    }
     return (m_data.at(majIdx) & (1 << minIdx)) >> minIdx;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/src/lib/asn1/uperdecoder.cpp 
new/kitinerary-22.12.1/src/lib/asn1/uperdecoder.cpp
--- old/kitinerary-22.12.0/src/lib/asn1/uperdecoder.cpp 2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/asn1/uperdecoder.cpp 2023-01-03 
01:01:08.000000000 +0100
@@ -55,8 +55,18 @@
     if ((len & 0x80) == 0x00) {
         return len;
     }
+    if ((len & 0xc0) == 0x80) {
+        return ((len & 0x7f) << 8) | readConstrainedWholeNumber(0, 255);
+    }
+
+    switch (len) {
+        case 0xc1: return 16384;
+        case 0xc2: return 32768;
+        case 0xc3: return 49152;
+        case 0xc4: return 65536;
+    }
 
-    setError("Encountered not implemented length determinant variant.");
+    setError("Encountered invalid length determinant.");
     return 0;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-22.12.0/src/lib/extractorpostprocessor.cpp 
new/kitinerary-22.12.1/src/lib/extractorpostprocessor.cpp
--- old/kitinerary-22.12.0/src/lib/extractorpostprocessor.cpp   2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/extractorpostprocessor.cpp   2023-01-03 
01:01:08.000000000 +0100
@@ -464,6 +464,7 @@
     ticket.setName(StringUtil::clean(ticket.name()));
     ticket.setTicketNumber(ticket.ticketNumber().simplified());
     ticket.setUnderName(processPerson(ticket.underName()));
+    ticket.setTicketedSeat(processSeat(ticket.ticketedSeat()));
     return ticket;
 }
 
@@ -478,6 +479,14 @@
     return program;
 }
 
+Seat ExtractorPostprocessorPrivate::processSeat(Seat seat) const
+{
+    seat.setSeatSection(seat.seatSection().simplified());
+    seat.setSeatRow(seat.seatRow().simplified());
+    seat.setSeatNumber(seat.seatNumber().simplified());
+    return seat;
+}
+
 template <typename T>
 T ExtractorPostprocessorPrivate::processReservation(T res) const
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-22.12.0/src/lib/extractorpostprocessor_p.h 
new/kitinerary-22.12.1/src/lib/extractorpostprocessor_p.h
--- old/kitinerary-22.12.0/src/lib/extractorpostprocessor_p.h   2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/extractorpostprocessor_p.h   2023-01-03 
01:01:08.000000000 +0100
@@ -32,6 +32,7 @@
 class ProgramMembership;
 class RentalCar;
 class RentalCarReservation;
+class Seat;
 class TaxiReservation;
 class Ticket;
 class TouristAttractionVisit;
@@ -68,6 +69,7 @@
 
     Ticket processTicket(Ticket ticket) const;
     ProgramMembership processProgramMembership(ProgramMembership program) 
const;
+    Seat processSeat(Seat seat) const;
 
     template <typename T> T processReservation(T res) const;
     Person processPerson(Person person) const;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/src/lib/jsapi/jsonld.cpp 
new/kitinerary-22.12.1/src/lib/jsapi/jsonld.cpp
--- old/kitinerary-22.12.0/src/lib/jsapi/jsonld.cpp     2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/jsapi/jsonld.cpp     2023-01-03 
01:01:08.000000000 +0100
@@ -136,7 +136,8 @@
     auto res = newObject(QStringLiteral("EventReservation"));
     res.setProperty(QStringLiteral("reservationFor"), resFor);
 
-    const auto ticket = newObject(QStringLiteral("Ticket"));
+    auto ticket = newObject(QStringLiteral("Ticket"));
+    ticket.setProperty(QStringLiteral("ticketedSeat"), 
newObject(QStringLiteral("Seat")));
     res.setProperty(QStringLiteral("reservedTicket"), ticket);
 
     const auto person = newObject(QStringLiteral("Person"));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-22.12.0/src/lib/json/jsonldimportfilter.cpp 
new/kitinerary-22.12.1/src/lib/json/jsonldimportfilter.cpp
--- old/kitinerary-22.12.0/src/lib/json/jsonldimportfilter.cpp  2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/json/jsonldimportfilter.cpp  2023-01-03 
01:01:08.000000000 +0100
@@ -65,6 +65,19 @@
     { "Winery", "FoodEstablishment" },
 };
 
+static void unpackArray(QJsonObject &obj, QLatin1String key)
+{
+    const auto val = obj.value(key);
+    if (!val.isArray()) {
+        return;
+    }
+    const auto arr = val.toArray();
+    if (arr.isEmpty()) {
+        return;
+    }
+    obj.insert(key, arr.at(0));
+}
+
 static void migrateToAction(QJsonObject &obj, const char *propName, const char 
*typeName, bool remove)
 {
     const auto value = obj.value(QLatin1String(propName));
@@ -227,10 +240,15 @@
     return actions;
 }
 
+static void filterEvent(QJsonObject &obj)
+{
+    unpackArray(obj, QLatin1String("location"));
+}
 
 // filter functions applied to objects of the corresponding (already 
normalized) type
 // IMPORTANT: keep alphabetically sorted by type!
 static constexpr const JsonLdFilterEngine::TypeFilter type_filters[] = {
+    { "Event", filterEvent },
     { "Flight", filterFlight },
     { "FoodEstablishment", filterFoodEstablishment },
 };
@@ -306,12 +324,8 @@
             res.insert(QStringLiteral("potentialAction"), 
filterActions(actions));
         }
 
-        auto image = res.value(QLatin1String("image"));
-        if (image.isArray()) {
-            res.insert(QStringLiteral("image"), image.toArray().first());
-        }
-
-        image = res.value(QLatin1String("image"));
+        unpackArray(res, QLatin1String("image"));
+        const auto image = res.value(QLatin1String("image"));
         if (image.isObject()) {
             const auto imageObject = image.toObject();
             if (imageObject.value(QLatin1String("@type")).toString() == 
QLatin1String("ImageObject")) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/src/lib/scripts/eventim.js 
new/kitinerary-22.12.1/src/lib/scripts/eventim.js
--- old/kitinerary-22.12.0/src/lib/scripts/eventim.js   2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/scripts/eventim.js   2023-01-03 
01:01:08.000000000 +0100
@@ -15,6 +15,39 @@
     const addr = loc[1].match(/(.*), (.*?)$/);
     res.reservationFor.location.address.streetAddress = addr[1];
     res.reservationFor.location.address.addressLocality = addr[2];
-    res.reservedTicket.ticketedSeat.seatNumber = 
pass.field['KEY_BACK_SEATLINE'].value;
+    res.reservedTicket.ticketedSeat.seatSection = 
pass.field['KEY_AUX_SEAT_2'].value;
+    res.reservedTicket.ticketedSeat.seatRow = 
pass.field['KEY_AUX_SEAT_3'].value;
+    res.reservedTicket.ticketedSeat.seatNumber = 
pass.field['KEY_AUX_SEAT_4'].value;
+    if (!res.reservedTicket.ticketedSeat.seatNumber) {
+        res.reservedTicket.ticketedSeat.seatNumber = 
pass.field['KEY_BACK_SEATLINE'].value;
+    }
+    return res;
+}
+
+function parseTicketDirect(pdf, node, triggerNode)
+{
+    const text = pdf.pages[0].textInRect(0.0, 0.0, 0.875, 0.5);
+
+    let res = JsonLd.newEventReservation();
+    res.reservationNumber = text.match(/Ticket Nummer: (\d+-\d+)\n/)[1];
+    const dt = text.match(/([A-Z][a-z]+, 
\d{2}\.\d{2}\.\d{4}).*\n.*(\d{2}:\d{2}) Uhr(?:.*\n.*?(\d{2}:\d{2}) Uhr.*)?/);
+
+    if (dt[3]) {
+        res.reservationFor.doorTime = JsonLd.toDateTime(dt[1] + dt[2], 'dddd, 
dd.MM.yyyyhh:mm', 'de');
+        res.reservationFor.startDate = JsonLd.toDateTime(dt[1] + dt[3], 'dddd, 
dd.MM.yyyyhh:mm', 'de');
+    } else {
+        res.reservationFor.startDate = JsonLd.toDateTime(dt[1] + dt[2], 'dddd, 
dd.MM.yyyyhh:mm', 'de');
+    }
+
+    res.reservationFor.name = text.substr(dt.index + 
dt[0].length).match(/(.+\n.*)\n/)[1];
+    res.reservedTicket.ticketToken = 'qrcode:' + text.match(/\b(\d{22})\b/)[1];
+
+    const seat = text.match(/Block: (.*) +Reihe: (.*) +Sitz: (.*)/);
+    if (seat) {
+        res.reservedTicket.ticketedSeat.seatSection = seat[1];
+        res.reservedTicket.ticketedSeat.seatRow = seat[2];
+        res.reservedTicket.ticketedSeat.seatNumber = seat[3];
+    }
+
     return res;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/src/lib/scripts/eventim.json 
new/kitinerary-22.12.1/src/lib/scripts/eventim.json
--- old/kitinerary-22.12.0/src/lib/scripts/eventim.json 2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/scripts/eventim.json 2023-01-03 
01:01:08.000000000 +0100
@@ -1,4 +1,4 @@
-{
+[{
     "filter": [
         {
             "field": "passTypeIdentifier",
@@ -10,4 +10,15 @@
     "function": "parsePkPass",
     "mimeType": "application/vnd.apple.pkpass",
     "script": "eventim.js"
-}
+},{
+    "filter": [
+        {
+            "match": "[Tt]icket[Dd]irect \\(print@home Ticket\\)",
+            "mimeType": "text/plain",
+            "scope": "Children"
+        }
+    ],
+    "function": "parseTicketDirect",
+    "mimeType": "application/pdf",
+    "script": "eventim.js"
+}]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/src/lib/scripts/mav.js 
new/kitinerary-22.12.1/src/lib/scripts/mav.js
--- old/kitinerary-22.12.0/src/lib/scripts/mav.js       2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/scripts/mav.js       2023-01-03 
01:01:08.000000000 +0100
@@ -51,6 +51,10 @@
     if (header2.getUInt8(8) == 0x81) {
         res.underName.name = ByteArray.decodeUtf8(inner.slice(19, 19 + 45));
     }
+
+    const ticketBlockOffset = header2.getUInt8(8) == 0x81 ? 87 : 23;
+    res.reservedTicket.ticketedSeat.seatingType = 
ByteArray.decodeUtf8(inner.slice(ticketBlockOffset + 96, ticketBlockOffset + 
97));
+
     res.reservedTicket.ticketToken = "pdf417bin:" + ByteArray.toBase64(data);
     return res;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/src/lib/scripts/nh-hotels.js 
new/kitinerary-22.12.1/src/lib/scripts/nh-hotels.js
--- old/kitinerary-22.12.0/src/lib/scripts/nh-hotels.js 2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/scripts/nh-hotels.js 2023-01-03 
01:01:08.000000000 +0100
@@ -21,16 +21,21 @@
 
     var res = JsonLd.newLodgingReservation();
 
-    var nameElem = doc.eval("//td[@class=\"title-hotel\"]")[0];
+    var nameElem = doc.eval("//td[@class=\"title-hotel\" or 
@class=\"hotel-title\"]")[0];
     res.reservationFor.name = nameElem.content;
 
-    var addrElem = 
nameElem.parent.nextSibling.nextSibling.nextSibling.firstChild;
+    let addrElem = doc.eval("//td[@class=\"hotel-address\"]");
+    if (addrElem.length > 0) {
+        addrElem = addrElem[0];
+    } else {
+        addrElem = 
nameElem.parent.nextSibling.nextSibling.nextSibling.firstChild;
+    }
     var addr = addrElem.content.match(/(.*), ?([^,]*)/);
     res.reservationFor.address.streetAddress = addr[1];
     res.reservationFor.address.addressLocality = addr[2];
     res.reservationFor.url = lastChild(addrElem).attribute("href");
 
-    var linkRoot = addrElem.parent.nextSibling.nextSibling;
+    var linkRoot = addrElem.parent.parent;
     var links = linkRoot.eval(".//a");
     for (var i = 0; i < links.length; ++i) {
         var url = links[i].attribute("href");
@@ -41,7 +46,6 @@
     }
 
     var bookingRef = doc.eval("//table//tr/td/table//tr/td[2]")[0];
-    console.log(bookingRef.recursiveContent)
     if (bookingRef.content) {
         res.reservationNumber = bookingRef.content;
         var bookingRow = bookingRef.parent.nextSibling.nextSibling;
@@ -56,11 +60,19 @@
         bookingRow = bookingRow.nextSibling.nextSibling;
         res.checkoutTime = 
parseDateTime(bookingRow.firstChild.nextSibling.content);
     } else {
-        res.reservationNumber = doc.eval("//td[@class='table-confirmation 
text-bold']/a")[0].content;
-
-        dts = doc.eval("//td[2]/strong");
-        res.checkinTime = parseDateTime(dts[0].content);
-        res.checkoutTime = parseDateTime(dts[1].content);
+        const resNumElem = doc.eval("//td[@class='table-confirmation 
text-bold']/a");
+        if (resNumElem.length > 0) {
+            res.reservationNumber = resNumElem[0].content;
+
+            dts = doc.eval("//td[2]/strong");
+            res.checkinTime = parseDateTime(dts[0].content);
+            res.checkoutTime = parseDateTime(dts[1].content);
+        } else {
+            const text = doc.root.recursiveContent;
+            res.reservationNumber = text.match(/Reservation number:[\n 
](\d+)/)[1];
+            res.checkinTime = parseDateTime(text.match(/Check-in:[\n 
](.*)/i)[1]);
+            res.checkoutTime = parseDateTime(text.match(/Check-out:[\n 
](.*)/i)[1]);
+        }
     }
     return res;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/src/lib/scripts/trenitalia.js 
new/kitinerary-22.12.1/src/lib/scripts/trenitalia.js
--- old/kitinerary-22.12.0/src/lib/scripts/trenitalia.js        2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/scripts/trenitalia.js        2023-01-03 
01:01:08.000000000 +0100
@@ -58,30 +58,35 @@
             res.reservationNumber = pnr[1];
         }
 
-        var train = text.match(/(?:Train|Treno|Zug): (.*)\n/);
+        const leftHeaderText = page.textInRect(0.0, 0.15, 0.33, 0.25);
+        const midHeaderText = page.textInRect(0.33, 0.15, 0.65, 0.25);
+        const rightHeaderText = page.textInRect(0.65, 0.15, 1.0, 0.25);
+
+        const train = rightHeaderText.match(/(?:Train|Treno|Zug)(?:\/Train)?:[ 
\n](.*)\n/);
         if (!train) {
             break;
         }
         res.reservationFor.trainNumber = train[1];
 
-        var departure_time = text.match(/(?:Hours|Ore|Stunden)(?:\/Time)? 
(\d{2}:\d{2}) - (\d{2}\/\d{2}\/\d{4})/)
-        var arrival_time = text.substr(departure_time.index + 
departure_time[0].length).match(/(?:Hours|Ore|Stunden)(?:\/Time)? (\d{2}:\d{2}) 
- (\d{2}\/\d{2}\/\d{4})/)
+        const departure_time = leftHeaderText.match(/(\d{2}:\d{2}) - 
(\d{2}\/\d{2}\/\d{4})/)
+        const arrival_time = midHeaderText.match(/(\d{2}:\d{2}) - 
(\d{2}\/\d{2}\/\d{4})/)
         res.reservationFor.departureTime = JsonLd.toDateTime(departure_time[2] 
+ departure_time[1], "dd/MM/yyyyhh:mm", "it");
         res.reservationFor.arrivalTime = JsonLd.toDateTime(arrival_time[2] + 
arrival_time[1], "dd/MM/yyyyhh:mm", "it");
 
-        var header = text.match(/(?:Stazione di Arrivo|Arrival station|Ankunft 
Bahnhof)/);
-        var dest = text.substr(header.index + header[0].length).match(/\n 
*((?:\w+\.? )*\w+\.?)  +((?:\w+\.? )*\w+\.?)(?:  |\n)/);
-        res.reservationFor.departureStation.name = dest[1];
-        res.reservationFor.arrivalStation.name = dest[2];
+        const dep = leftHeaderText.match(/(?:Stazione di Partenza|Departure 
station|Abfahrtsbahnhof|Gare de départ)(?:\/From)?\n+(.*)\n/);
+        res.reservationFor.departureStation.name = dep[1];
+        const arr = midHeaderText.match(/(?:Stazione di Arrivo|Arrival 
station|Ankunft Bahnhof|Gare d'arrivée)(?:\/To)?\n+(.*)\n/);
+        res.reservationFor.arrivalStation.name = arr[1];
 
-        const barcodes = node.findChildNodes({ scope: "Descendants", mimeType: 
"internal/era-ssb", field: "issuerCode", match: "83" });
+        const barcodes = node.findChildNodes({ scope: "Descendants", mimeType: 
"internal/era-ssb", field: "issuerCode", match: "83" 
}).concat(node.findChildNodes({ scope: "Descendants", mimeType: 
"internal/uic9183", field: "carrierId", match: "83" }));
         var offset = 0;
+        const passengerColumn = page.textInRect(0.0, 0.3, 0.27, 1.0);
         for (let j = 0; j < barcodes.length; ++j) {
             if (barcodes[j].location != i) {
                 continue;
             }
             let personalRes = JsonLd.clone(res);
-            var name = text.substr(offset).match(/(?:Passenger Name|Nome 
Passeggero(?:\/Passenger\n name)?).*\n(?:    .*\n)* ?((?:\w+|\-\-).*?)(?:  
|\n)/);
+            var name = passengerColumn.substr(offset).match(/(?:Passenger 
Name|Nome Passeggero|Nom du Passager)(?:\/Passenger\n *name)?.*\n(?:    .*\n)* 
*((?:\w+|\-\-).*?)(?:  |\n)/);
             offset += name.index + name[0].length;
             if (name[1] !== "--") {
                 personalRes.underName.name = name[1];
@@ -89,12 +94,16 @@
                 personalRes.underName.name = "Passenger " + (j + 1);
             }
 
-            var coach = text.match(/(?:Coaches|Carrozza|Wagen)(?:\/Coach)?: 
+(\S+)/);
+            var coach = 
text.match(/(?:Coaches|Carrozza|Wagen|Voiture)(?:\/Coach)?: +(\S+)/);
             if (coach) {
                 personalRes.reservedTicket.ticketedSeat.seatSection = coach[1];
             }
 
-            personalRes = JsonLd.apply(barcodes[j].result[0], personalRes);
+            if (barcodes[j].result[0]['@type'] == 'TrainReservation') {
+                personalRes = JsonLd.apply(barcodes[j].result[0], personalRes);
+            } else {
+                personalRes.reservedTicket = 
JsonLd.apply(barcodes[j].result[0], personalRes.reservedTicket);
+            }
             reservations.push(personalRes);
         }
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-22.12.0/src/lib/scripts/trenitalia.json 
new/kitinerary-22.12.1/src/lib/scripts/trenitalia.json
--- old/kitinerary-22.12.0/src/lib/scripts/trenitalia.json      2022-11-30 
01:42:38.000000000 +0100
+++ new/kitinerary-22.12.1/src/lib/scripts/trenitalia.json      2023-01-03 
01:01:08.000000000 +0100
@@ -10,7 +10,8 @@
     {
         "mimeType": "application/pdf",
         "filter": [
-            { "mimeType": "internal/era-ssb", "field": "issuerCode", "match": 
"83", "scope": "Descendants" }
+            { "mimeType": "internal/era-ssb", "field": "issuerCode", "match": 
"83", "scope": "Descendants" },
+            { "mimeType": "internal/uic9183", "field": "carrierId", "match": 
"83", "scope": "Descendants" }
         ],
         "script": "trenitalia.js",
         "function": "parsePdf"

Reply via email to