diff --git a/.gitignore b/.gitignore index 27c222a..b15f974 100644 --- a/.gitignore +++ b/.gitignore @@ -91,3 +91,13 @@ /vdr-plugin-epg2vdr-1.2.0.tar.bz2 /vdr-plugin-epg2vdr-1.2.3.tar.bz2 /vdr-plugin-epg2vdr-1.2.5.tar.bz2 +/vdr-plugin-epg2vdr-1.2.6.tar.bz2 +/vdr-plugin-epg2vdr-1.2.7.tar.bz2 +/vdr-epg2vdr-1.2.8.tar.gz +/vdr-epg2vdr-1.2.9.tar.gz +/vdr-epg2vdr-1.2.12.tar.gz +/vdr-epg2vdr-1.2.13.tar.gz +/vdr-epg2vdr-1.2.14.tar.gz +/vdr-epg2vdr-1.2.15.tar.gz +/vdr-epg2vdr-1.2.16.tar.gz +/vdr-epg2vdr-1.2.17.tar.gz diff --git a/sources b/sources index 48a54a6..5fb09d3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (vdr-plugin-epg2vdr-1.2.5.tar.bz2) = ad5fc1f502321e399b230d4a9900ed6a634926d48541425a358e7c49c157b4ebd688526feb21cdb1428b568b37decd8ba2aa820436423729f4929edc6a68545c +SHA512 (vdr-epg2vdr-1.2.17.tar.gz) = 56c56cc0b46584e4e326779ab3b685f11eca1f9492e9209bc9e7d85897b3aaf44010bc37d0558a78ae64d0d4e6795a58bdb2074a06e5f196ee2d4aac170c79eb diff --git a/vdr-epg2vdr.spec b/vdr-epg2vdr.spec index 8c0b574..43aa961 100644 --- a/vdr-epg2vdr.spec +++ b/vdr-epg2vdr.spec @@ -1,14 +1,27 @@ +# Set vdr_version based on Fedora version +# Default +%global vdr_version 2.7.7 + +%if 0%{?fedora} == 43 +%global vdr_version 2.7.7 +%elif 0%{?fedora} == 44 +%global vdr_version 2.8.1 +%elif 0%{?fedora} > 44 +%global vdr_version 2.8.2 +%endif + Name: vdr-epg2vdr -Version: 1.2.5 -Release: 1%{?dist} +Version: 1.2.17 +Release: 17%{?dist} Summary: A plugin to retrieve EPG data from a mysql database into VDR -License: GPL+ -URL: http://projects.vdr-developer.org/git/vdr-plugin-epg2vdr.git -Source0: https://projects.vdr-developer.org/git/vdr-plugin-epg2vdr.git/snapshot/vdr-plugin-epg2vdr-%{version}.tar.bz2 +License: GPL-1.0-or-later +URL: https://github.com/horchi/vdr-plugin-epg2vdr +Source0: %url/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz BuildRequires: make BuildRequires: gcc-c++ +BuildRequires: gettext BuildRequires: sqlite-devel BuildRequires: openssl-devel BuildRequires: mariadb-connector-c-devel @@ -19,7 +32,7 @@ BuildRequires: libxml2-devel BuildRequires: tinyxml2-devel BuildRequires: libjpeg-turbo-devel BuildRequires: imlib2-devel -BuildRequires: vdr-devel >= 1.7.36 +BuildRequires: vdr-devel >= %{vdr_version} BuildRequires: python3-devel BuildRequires: jansson-devel BuildRequires: libarchive-devel @@ -55,6 +68,158 @@ chmod 0755 %{buildroot}/%{vdr_plugindir}/libvdr-*.so.%{vdr_apiversion} %{vdr_plugindir}/libvdr-*.so.%{vdr_apiversion} %changelog +* Wed Jul 22 2026 Python Maint - 1.2.17-17 +- Rebuilt for Python 3.15.0b4 ABI change + +* Fri Jul 17 2026 Fedora Release Engineering - 1.2.17-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Sat Jun 13 2026 Yaakov Selkowitz - 1.2.17-15 +- Rebuilt for openssl 4.0 + +* Wed Jun 03 2026 Python Maint - 1.2.17-14 +- Rebuilt for Python 3.15 + +* Wed Jun 03 2026 Martin Gansser - 1.2.17-13 +- Rebuilt for new VDR 2.8.2 API version 13 + +* Mon Mar 23 2026 Martin Gansser - 1.2.17-12 +- Rebuilt for new VDR 2.8.1 API version 12 + +* Mon Feb 09 2026 Martin Gansser - 1.2.17-11 +- Rebuilt for new VDR API version 2.7.9 + +* Mon Jan 26 2026 Martin Gansser - 1.2.17-10 +- Rebuilt for new VDR API version 2.7.8 + +* Sat Jan 17 2026 Fedora Release Engineering - 1.2.17-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Sat Aug 23 2025 Benjamin A. Beasley - 1.2.17-8 +- Rebuilt for tinyxml2 11.0.0 + +* Fri Jul 25 2025 Martin Gansser - 1.2.17-7 +- Rebuilt for new VDR API version 2.7.7 + +* Fri Jul 25 2025 Fedora Release Engineering - 1.2.17-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sat Jun 21 2025 Martin Gansser - 1.2.17-5 +- Rebuilt for new VDR API version 2.7.6 + +* Mon Jun 02 2025 Python Maint - 1.2.17-4 +- Rebuilt for Python 3.14 + +* Tue May 27 2025 Martin Gansser - 1.2.17-3 +- Rebuilt for new VDR API version 2.7.5 + +* Fri Feb 28 2025 Martin Gansser - 1.2.17-2 +- Rebuilt for new VDR API version 2.7.4 + +* Tue Feb 18 2025 Martin Gansser - 1.2.17-1 +- Update to 1.2.17 + +* Sun Jan 19 2025 Fedora Release Engineering - 1.2.16-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Mon Nov 11 2024 Dominik Mierzejewski - 1.2.16-11 +- rebuild for tinyxml2 + +* Tue Oct 22 2024 Richard W.M. Jones - 1.2.16-10 +- Rebuild for Jansson 2.14 + (https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/3PYINSQGKQ4BB25NQUI2A2UCGGLAG5ND/) + +* Wed Oct 09 2024 Martin Gansser - 1.2.16-9 +- Rebuilt for new VDR API version 2.7.2 +- Add %%{name}-EventID.diff for vdr 2.7.x + +* Sat Jul 20 2024 Fedora Release Engineering - 1.2.16-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Mon Jul 15 2024 Martin Gansser - 1.2.16-7 +- Rebuilt for new VDR API version 2.6.9 + +* Thu Jul 11 2024 Martin Gansser - 1.2.16-6 +- Rebuilt for new VDR API version 2.6.8 + +* Mon Jun 17 2024 Miroslav Suchý - 1.2.16-5 +- convert license to SPDX + +* Fri Jun 07 2024 Python Maint - 1.2.16-4 +- Rebuilt for Python 3.13 + +* Fri Apr 12 2024 Martin Gansser - 1.2.16-3 +- Rebuilt for new VDR API version + +* Fri Jan 26 2024 Martin Gansser - 1.2.16-2 +- Rebuilt for new VDR API version + +* Sun Jan 21 2024 Martin Gansser - 1.2.16-1 +- Update to 1.2.16 + +* Fri Jan 05 2024 Martin Gansser - 1.2.15-2 +- Rebuilt for new VDR API versionA +- Add BR gettext for rawhide + +* Tue Oct 17 2023 Martin Gansser - 1.2.15-1 +- Update to 1.2.15 + +* Sat Jul 22 2023 Fedora Release Engineering - 1.2.14-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jun 13 2023 Python Maint - 1.2.14-2 +- Rebuilt for Python 3.12 + +* Wed Feb 15 2023 Martin Gansser - 1.2.14-1 +- Update to 1.2.14 + +* Sun Feb 12 2023 Martin Gansser - 1.2.13-1 +- Update to 1.2.13 + +* Wed Jan 25 2023 Martin Gansser - 1.2.12-1 +- Update to 1.2.12 + +* Sat Jan 21 2023 Fedora Release Engineering - 1.2.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Dec 24 2022 Martin Gansser - 1.2.9-1 +- Update to 1.2.9 +- Add vps.epg2vdr.patch + +* Wed Dec 14 2022 Martin Gansser - 1.2.8-4 +- Rebuilt for new VDR API version + +* Thu Dec 01 2022 Martin Gansser - 1.2.8-3 +- Rebuilt for new VDR API version + +* Sun Sep 25 2022 Rich Mattes - 1.2.8-2 +- Rebuild for tinyxml2-9.0.0 + +* Thu Aug 04 2022 Martin Gansser - 1.2.8-1 +- Update to new github address +- Update to 1.2.8 + +* Sat Jul 23 2022 Fedora Release Engineering - 1.2.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jun 13 2022 Python Maint - 1.2.7-2 +- Rebuilt for Python 3.11 + +* Sat Apr 30 2022 Martin Gansser - 1.2.7-1 +- Update to 1.2.7 + +* Sat Feb 12 2022 Martin Gansser - 1.2.6-1 +- Update to 1.2.6 + +* Fri Feb 04 2022 Martin Gansser - 1.2.5-4 +- Rebuilt for new VDR API version + +* Fri Jan 28 2022 Martin Gansser - 1.2.5-3 +- Changing python to python3 in Make.config + +* Sat Jan 22 2022 Fedora Release Engineering - 1.2.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Tue Jan 04 2022 Martin Gansser - 1.2.5-1 - Update to 1.2.5 diff --git a/vps.epg2vdr.patch b/vps.epg2vdr.patch new file mode 100644 index 0000000..0044840 --- /dev/null +++ b/vps.epg2vdr.patch @@ -0,0 +1,160 @@ +Index: vdr-plugin-epg2vdr-1.2.9/handler.h +=================================================================== +--- vdr-plugin-epg2vdr-1.2.9.orig/handler.h 2022-12-22 09:02:41.104757343 +0100 ++++ vdr-plugin-epg2vdr-1.2.9/handler.h 2022-12-24 11:45:58.543278919 +0100 +@@ -409,6 +409,7 @@ + + virtual bool HandledExternally(const cChannel* Channel) + { ++ handledByUs = false; + static int reportFirst = yes; + + LogDuration l("HandledExternally", 5); +@@ -430,8 +431,10 @@ + + // dbConnected() here okay -> if not connected we return false an the vdr will handle the event?!? + +- if (dbConnected() && getExternalIdOfChannel(&channelId) != "") ++ if (dbConnected() && getExternalIdOfChannel(&channelId) != "") { ++ handledByUs = true; + return true; ++ } + + return false; + } +@@ -453,6 +456,53 @@ + } + + //*************************************************************************** ++ // SetEventID ++ //*************************************************************************** ++ ++ virtual bool SetEventID(cEvent *Event, tEventID EventID) { ++// do we handle this channel? ++ if (!handledByUs) return false; ++ return true; ++// our use IDs don't change ++/* ++ ++ eventsDb->clear(); ++ eventsDb->setValue("CHANNELID", channelId.ToString()); ++ eventsDb->setBigintValue("EVENTID", (long)EventID); ++ ++ if (eventsDb->find()) { ++ tEventID useID = eventsDb->getIntValue("USEID"); ++ Event->SetEventID(useID); ++ return true; ++ } ++ return false; ++*/ ++ } ++ ++ //*************************************************************************** ++ // Get event ++ //*************************************************************************** ++ ++ virtual bool GetEvent(cEvent **event, const cChannel *channel, const cSchedule *schedule, const SI::EIT::Event *siEitEvent, uchar tableID) { ++// do we handle this channel? ++ if (!handledByUs) return false; ++ *event = NULL; ++ ++ if (tableID == 0x4E || (tableID & 0xF0) == 0x50) { ++ eventsDb->clear(); ++ eventsDb->setValue("CHANNELID", channelId.ToString()); ++ eventsDb->setBigintValue("EVENTID", (long)siEitEvent->getEventId()); ++ ++ if (eventsDb->find()) { ++ tEventID useID = eventsDb->getIntValue("USEID"); ++ *event = const_cast(schedule->GetEventById(useID)); ++ } ++ } else ++ *event = const_cast(schedule->GetEventByTime(siEitEvent->getStartTime() )); ++ return true; ++ } ++ ++ //*************************************************************************** + // Is Update + //*************************************************************************** + +@@ -746,7 +796,7 @@ + + selectEventByStarttime->freeResult(); + +- return true; ++ return false; // so other plugins can still get the event + } + + //*************************************************************************** +@@ -876,6 +926,7 @@ + std::map evtMemList; + std::map externIdMap; + tChannelID channelId; ++ bool handledByUs; // == EpgHandlers.HandledExternally(Channel); + + int initialized; + cDbConnection* connection; +@@ -980,6 +1031,18 @@ + return false; + } + ++ virtual bool SetEventID(cEvent *Event, tEventID EventID) ++ { ++ cEpgHandlerInstance* h = getHandler(); ++ return h->SetEventID(Event, EventID); ++ } ++ ++ virtual bool GetEvent(cEvent **event, const cChannel *channel, const cSchedule *schedule, const SI::EIT::Event *siEitEvent, uchar tableID) ++ { ++ cEpgHandlerInstance* h = getHandler(); ++ return h->GetEvent(event, channel, schedule, siEitEvent, tableID); ++ } ++ + virtual bool IsUpdate(tEventID EventID, time_t StartTime, uchar TableID, uchar Version) + { + +Index: vdr-plugin-epg2vdr-1.2.9/update.c +=================================================================== +--- vdr-plugin-epg2vdr-1.2.9.orig/update.c 2022-12-22 07:32:05.000000000 +0100 ++++ vdr-plugin-epg2vdr-1.2.9/update.c 2022-12-22 09:51:26.419974590 +0100 +@@ -1431,6 +1431,18 @@ + } + + //*************************************************************************** ++// Return true if any timer is in VPS margin ++//*************************************************************************** ++ ++bool timerInVpsMargin() ++{ ++ LOCK_TIMERS_WRITE; ++ for (cTimer* timer = Timers->First(); timer; timer = Timers->Next(timer)) ++ if (timer->InVpsMargin() ) return true; ++ return false; ++} ++ ++//*************************************************************************** + // Clear Epg + //*************************************************************************** + +@@ -1520,6 +1532,10 @@ + if (fullreload) + { + tell(1, "Removing all events from epg"); ++ if (timerInVpsMargin() ) { ++ tell(1, "Abort, as there is a timer in VPS margin"); ++ return fail; ++ } + + clearEpg(); + +@@ -1665,8 +1681,10 @@ + } + } + +- if (timer) ++ if (timer) { ++ if (timer->InVpsMargin() ) continue; // ignore events in vps margin, especially don't set the timer to no event. + timer->SetEvent(0); ++ } + + s->DelEvent((cEvent*)event); + }