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"
