Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kitinerary for openSUSE:Factory checked in at 2026-06-08 14:07:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kitinerary (Old) and /work/SRC/openSUSE:Factory/.kitinerary.new.2375 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kitinerary" Mon Jun 8 14:07:16 2026 rev:98 rq:1357381 version:26.04.2 Changes: -------- --- /work/SRC/openSUSE:Factory/kitinerary/kitinerary.changes 2026-05-11 16:50:26.471696108 +0200 +++ /work/SRC/openSUSE:Factory/.kitinerary.new.2375/kitinerary.changes 2026-06-08 14:08:36.347476541 +0200 @@ -1,0 +2,14 @@ +Thu Jun 4 08:43:58 UTC 2026 - Christophe Marin <[email protected]> + +- Update to 26.04.2 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/26.04.2/ +- Changes since 26.04.1: + * Add extractor script for BDŽ (Bulgarian State Railways) PDF tickets + * Adapt to Poppler 26.06 API changes + * Fix required Qt version + * Reflect the move of KMime to Frameworks in the dependency data + * Add Condor PKPass extractor + +------------------------------------------------------------------- Old: ---- kitinerary-26.04.1.tar.xz kitinerary-26.04.1.tar.xz.sig New: ---- kitinerary-26.04.2.tar.xz kitinerary-26.04.2.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kitinerary.spec ++++++ --- /var/tmp/diff_new_pack.bthl1I/_old 2026-06-08 14:08:38.255555651 +0200 +++ /var/tmp/diff_new_pack.bthl1I/_new 2026-06-08 14:08:38.271556314 +0200 @@ -18,11 +18,11 @@ %define kf6_version 6.19.0 %define qt6_version 6.9.0 -%define kpim6_version 6.7.1 +%define kpim6_version 6.7.2 %bcond_without released Name: kitinerary -Version: 26.04.1 +Version: 26.04.2 Release: 0 Summary: Data model and extraction system for travel reservations License: LGPL-2.1-or-later ++++++ kitinerary-26.04.1.tar.xz -> kitinerary-26.04.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-26.04.1/.kde-ci.yml new/kitinerary-26.04.2/.kde-ci.yml --- old/kitinerary-26.04.1/.kde-ci.yml 2026-05-04 09:22:41.000000000 +0200 +++ new/kitinerary-26.04.2/.kde-ci.yml 2026-05-31 16:44:52.000000000 +0200 @@ -9,7 +9,7 @@ 'frameworks/kcontacts' : '@latest-kf6' 'frameworks/kcalendarcore' : '@latest-kf6' 'frameworks/kcodecs' : '@latest-kf6' - 'pim/kmime' : '@same' + 'frameworks/kmime': '@same' 'pim/kpkpass' : '@same' 'third-party/zxing-cpp': '@latest' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-26.04.1/CMakeLists.txt new/kitinerary-26.04.2/CMakeLists.txt --- old/kitinerary-26.04.1/CMakeLists.txt 2026-05-04 09:22:41.000000000 +0200 +++ new/kitinerary-26.04.2/CMakeLists.txt 2026-05-31 16:44:52.000000000 +0200 @@ -7,13 +7,13 @@ # KDE Application Version, managed by release script set (RELEASE_SERVICE_VERSION_MAJOR "26") set (RELEASE_SERVICE_VERSION_MINOR "04") -set (RELEASE_SERVICE_VERSION_MICRO "1") +set (RELEASE_SERVICE_VERSION_MICRO "2") set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") -set(PIM_VERSION "6.7.1") +set(PIM_VERSION "6.7.2") project(KItinerary VERSION ${PIM_VERSION}) -set(QT_REQUIRED_VERSION "6.7.1") +set(QT_REQUIRED_VERSION "6.7.0") set(KF_MIN_VERSION "6.22.0") find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) @@ -49,8 +49,8 @@ find_package(SharedMimeInfo 1.3 REQUIRED) endif() -set(KMIME_VERSION "6.7.1") -set(PIM_PKPASS "6.7.1") +set(KMIME_VERSION "6.7.2") +set(PIM_PKPASS "6.7.2") find_package(KPim6Mime ${KMIME_VERSION} CONFIG REQUIRED) find_package(KPim6PkPass ${PIM_PKPASS} CONFIG REQUIRED) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-26.04.1/src/cli/org.kde.kitinerary-extractor.appdata.xml new/kitinerary-26.04.2/src/cli/org.kde.kitinerary-extractor.appdata.xml --- old/kitinerary-26.04.1/src/cli/org.kde.kitinerary-extractor.appdata.xml 2026-05-04 09:22:41.000000000 +0200 +++ new/kitinerary-26.04.2/src/cli/org.kde.kitinerary-extractor.appdata.xml 2026-05-31 16:44:52.000000000 +0200 @@ -133,6 +133,7 @@ </categories> <launchable type="desktop-id">org.kde.kitinerary-extractor.desktop</launchable> <releases> + <release version="6.7.2" date="2026-06-04"/> <release version="6.7.1" date="2026-05-07"/> <release version="6.7.0" date="2026-04-16"/> <release version="6.6.3" date="2026-03-05"/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-26.04.1/src/lib/pdf/pdfdocument.cpp new/kitinerary-26.04.2/src/lib/pdf/pdfdocument.cpp --- old/kitinerary-26.04.1/src/lib/pdf/pdfdocument.cpp 2026-05-04 09:22:41.000000000 +0200 +++ new/kitinerary-26.04.2/src/lib/pdf/pdfdocument.cpp 2026-05-31 16:44:52.000000000 +0200 @@ -44,12 +44,15 @@ #if KPOPPLER_VERSION < QT_VERSION_CHECK(25, 1, 0) std::unique_ptr<GooString> s(device.getText(pageRect->x1, pageRect->y1, pageRect->x2, pageRect->y2)); m_text = QString::fromUtf8(s->c_str()); -#elif KPOPPLER_VERSION <QT_VERSION_CHECK(25, 12, 90) +#elif KPOPPLER_VERSION < QT_VERSION_CHECK(25, 12, 90) const auto s = device.getText(pageRect->x1, pageRect->y1, pageRect->x2, pageRect->y2); m_text = QString::fromUtf8(s.c_str()); -#else +#elif KPOPPLER_VERSION < QT_VERSION_CHECK(26, 5, 90) const auto s = device.getText(PDFRectangle(pageRect->x1, pageRect->y1, pageRect->x2, pageRect->y2)); m_text = QString::fromUtf8(s.c_str()); +#else + const auto s = device.getText(pageRect); + m_text = QString::fromUtf8(s.c_str()); #endif m_images = std::move(device.m_images); @@ -59,7 +62,11 @@ m_links = std::move(device.m_links); for (auto &link : m_links) { +#if KPOPPLER_VERSION < QT_VERSION_CHECK(26, 5, 90) link.convertToPageRect(pageRect); +#else + link.convertToPageRect(&pageRect); +#endif } m_loaded = true; @@ -98,16 +105,30 @@ double b; switch (page->getRotate()) { case 0: +#if KPOPPLER_VERSION < QT_VERSION_CHECK(26, 5, 90) l = ratio(pageRect->x1, pageRect->x2, left); t = ratio(pageRect->y1, pageRect->y2, top); r = ratio(pageRect->x1, pageRect->x2, right); b = ratio(pageRect->y1, pageRect->y2, bottom); +#else + l = ratio(pageRect.x1, pageRect.x2, left); + t = ratio(pageRect.y1, pageRect.y2, top); + r = ratio(pageRect.x1, pageRect.x2, right); + b = ratio(pageRect.y1, pageRect.y2, bottom); +#endif break; case 90: +#if KPOPPLER_VERSION < QT_VERSION_CHECK(26, 5, 90) l = ratio(pageRect->y1, pageRect->y2, left); t = ratio(pageRect->x1, pageRect->x2, top); r = ratio(pageRect->y1, pageRect->y2, right); b = ratio(pageRect->x1, pageRect->x2, bottom); +#else + l = ratio(pageRect.y1, pageRect.y2, left); + t = ratio(pageRect.x1, pageRect.x2, top); + r = ratio(pageRect.y1, pageRect.y2, right); + b = ratio(pageRect.x1, pageRect.x2, bottom); +#endif break; default: qCWarning(Log) << "Unsupported page rotation!" << page->getRotate(); @@ -158,8 +179,13 @@ const auto pageRect = d->m_doc->m_popplerDoc->getPage(d->m_pageNum + 1)->getCropBox(); for (const auto &img : d->m_images) { +#if KPOPPLER_VERSION < QT_VERSION_CHECK(26, 5, 90) if ((img.d->m_transform.dx() >= ratio(pageRect->x1, pageRect->x2, left) && img.d->m_transform.dx() <= ratio(pageRect->x1, pageRect->x2, right)) && (img.d->m_transform.dy() >= ratio(pageRect->y1, pageRect->y2, top) && img.d->m_transform.dy() <= ratio(pageRect->y1, pageRect->y2, bottom))) +#else + if ((img.d->m_transform.dx() >= ratio(pageRect.x1, pageRect.x2, left) && img.d->m_transform.dx() <= ratio(pageRect.x1, pageRect.x2, right)) && + (img.d->m_transform.dy() >= ratio(pageRect.y1, pageRect.y2, top) && img.d->m_transform.dy() <= ratio(pageRect.y1, pageRect.y2, bottom))) +#endif { l.push_back(QVariant::fromValue(img)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-26.04.1/src/lib/scripts/bdz.js new/kitinerary-26.04.2/src/lib/scripts/bdz.js --- old/kitinerary-26.04.1/src/lib/scripts/bdz.js 1970-01-01 01:00:00.000000000 +0100 +++ new/kitinerary-26.04.2/src/lib/scripts/bdz.js 2026-05-31 16:44:52.000000000 +0200 @@ -0,0 +1,29 @@ +// SPDX-FileCopyrightText: 2026 Volker Krause <[email protected]> +// SPDX-License-Identifier: LGPL-2.0-or-later + +function extractPdfTicket(pdf, node) { + let reservations = []; + for (page of pdf.pages) { + const text = page.text; + let res = JsonLd.newTrainReservation(); + const hdr = text.match(/\S +(\S.*)\n *№: (\d+) .*: (.*)\n/); + res.underName.name = hdr[1]; + res.reservationNumber = hdr[2]; + res.reservedTicket.name = hdr[3]; + + const leg = text.match(/(\d\d\.\d\d.\d\d) - (\d\d:\d\d) (.*) - (.*) \((.*)\) +(\d\d\.\d\d\.\d\d) - (\d\d:\d\d) +(\d)(?: +(\d+) +(\d+))?/); + + res.reservationFor.departureTime = JsonLd.toDateTime(leg[1] + leg[2], 'dd.MM.yyHH:mm', 'bg'); + res.reservationFor.departureStation.name = leg[3]; + res.reservationFor.arrivalStation.name = leg[4]; + res.reservationFor.trainNumber = leg[5]; + res.reservationFor.arrivalTime = JsonLd.toDateTime(leg[6] + leg[7], 'dd.MM.yyHH:mm', 'bg'); + res.reservedTicket.ticketedSeat.seatingType = leg[8]; + res.reservedTicket.ticketedSeat.seatSection = leg[9]; + res.reservedTicket.ticketedSeat.seatNumber = leg[10]; + const barcode = node.findChildNodes({ scope: "Descendants", mimeType: "application/octet-stream" })[0]; + res.reservedTicket.ticketToken = 'qrcodebin:' + ByteArray.toBase64(barcode.content); + reservations.push(res); + } + return reservations; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-26.04.1/src/lib/scripts/bdz.json new/kitinerary-26.04.2/src/lib/scripts/bdz.json --- old/kitinerary-26.04.1/src/lib/scripts/bdz.json 1970-01-01 01:00:00.000000000 +0100 +++ new/kitinerary-26.04.2/src/lib/scripts/bdz.json 2026-05-31 16:44:52.000000000 +0200 @@ -0,0 +1,13 @@ +{ + "filter": [ + { + "field": "title", + "match": "^tickets print$", + "mimeType": "application/pdf", + "scope": "Current" + } + ], + "function": "extractPdfTicket", + "mimeType": "application/pdf", + "script": "bdz.js" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-26.04.1/src/lib/scripts/condor.js new/kitinerary-26.04.2/src/lib/scripts/condor.js --- old/kitinerary-26.04.1/src/lib/scripts/condor.js 1970-01-01 01:00:00.000000000 +0100 +++ new/kitinerary-26.04.2/src/lib/scripts/condor.js 2026-05-31 16:44:52.000000000 +0200 @@ -0,0 +1,22 @@ +/* + * SPDX-FileCopyrightText: 2026 Kai Uwe Broulik <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +function main(pass, node) { + let res = node.result[0]; + + const boardingZoneField = pass.field["boardingZone"]; + if (boardingZoneField) { + res.boardingGroup = boardingZoneField.value; + } + + if (res.reservationFor.departureTerminal) { + const departureIata = res.reservationFor.departureAirport.iataCode; + // Condor puts airport code in terminal string, e.g. "STR | 3" + res.reservationFor.departureTerminal = res.reservationFor.departureTerminal.replace(new RegExp("^" + departureIata + " \\| "), ""); + } + + return res; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-26.04.1/src/lib/scripts/condor.json new/kitinerary-26.04.2/src/lib/scripts/condor.json --- old/kitinerary-26.04.1/src/lib/scripts/condor.json 1970-01-01 01:00:00.000000000 +0100 +++ new/kitinerary-26.04.2/src/lib/scripts/condor.json 2026-05-31 16:44:52.000000000 +0200 @@ -0,0 +1,14 @@ +[ + { + "filter": [ + { + "field": "passTypeIdentifier", + "match": "pass.com.condor.buchung", + "mimeType": "application/vnd.apple.pkpass", + "scope": "Current" + } + ], + "mimeType": "application/vnd.apple.pkpass", + "script": "condor.js" + } +] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitinerary-26.04.1/src/lib/scripts/extractors.qrc new/kitinerary-26.04.2/src/lib/scripts/extractors.qrc --- old/kitinerary-26.04.1/src/lib/scripts/extractors.qrc 2026-05-04 09:22:41.000000000 +0200 +++ new/kitinerary-26.04.2/src/lib/scripts/extractors.qrc 2026-05-31 16:44:52.000000000 +0200 @@ -52,6 +52,8 @@ <file>bb-hotel.js</file> <file>bestwestern.json</file> <file>bestwestern.js</file> + <file>bdz.json</file> + <file>bdz.js</file> <file>bilkom.json</file> <file>bilkom.js</file> <file>blablacar-bus.json</file> @@ -93,6 +95,8 @@ <file>coloseumticket.js</file> <file>comboios-de-portugal.json</file> <file>comboios-de-portugal.js</file> + <file>condor.json</file> + <file>condor.js</file> <file>cooltix.json</file> <file>cooltix.js</file> <file>cvent.json</file>
