From e2fc15bfefdde3a4b92e19ac324bf1991aa6745c Mon Sep 17 00:00:00 2001 From: DeltaMikeCharlie <127641886+DeltaMikeCharlie@users.noreply.github.com> Date: Wed, 21 Aug 2024 17:37:56 +1000 Subject: [PATCH] Add parental rating fields to EPG and Recordings (Piers). (#164) Co-authored-by: Kai Sommerfeld <3226626+ksooo@users.noreply.github.com> --- pvr.demo/PVRDemoAddonSettings.xml | 79 ++++++++++++++++++++++++++++++ pvr.demo/README.md | 1 + pvr.demo/addon.xml.in | 2 +- pvr.demo/changelog.txt | 3 ++ pvr.demo/data/a.png | Bin 0 -> 14396 bytes pvr.demo/data/bb.png | Bin 0 -> 16956 bytes pvr.demo/data/cc-dd.png | Bin 0 -> 14063 bytes pvr.demo/data/eee.png | Bin 0 -> 13305 bytes src/PVRDemo.cpp | 40 ++++++++++++++- src/PVRDemo.h | 9 +++- 10 files changed, 131 insertions(+), 3 deletions(-) create mode 100644 pvr.demo/data/a.png create mode 100644 pvr.demo/data/bb.png create mode 100644 pvr.demo/data/cc-dd.png create mode 100644 pvr.demo/data/eee.png diff --git a/pvr.demo/PVRDemoAddonSettings.xml b/pvr.demo/PVRDemoAddonSettings.xml index 9c79c0e..4ee371c 100644 --- a/pvr.demo/PVRDemoAddonSettings.xml +++ b/pvr.demo/PVRDemoAddonSettings.xml @@ -359,6 +359,7 @@ 32 0 + 11 300 @@ -372,6 +373,9 @@ 48 0 + CC-DD + data/cc-dd.png + ABC 400 @@ -386,6 +390,10 @@ 64 0 + 9 + A + data/a.png + ABC 500 @@ -398,6 +406,10 @@ 80 0 + 11 + BB + data/bb.png + ABCD 600 @@ -425,6 +437,10 @@ 5 112 0 + 15 + EEE + data/eee.png + ABCD 800 @@ -440,6 +456,10 @@ Demo EPG entry 8 Episode Part Title 128 0 + 9 + A + data/a.png + ABC 900 @@ -452,6 +472,9 @@ 144 0 + 11 + BB + ABC 1100 @@ -464,6 +487,9 @@ 176 0 + 15 + EEE + data/eee.png @@ -477,6 +503,10 @@ 30 0 + 13 + CC-DD + data/cc-dd.png + ABCD 1600 @@ -501,6 +531,9 @@ 20 0 + BB + data/bb.png + ABC 2400 @@ -513,6 +546,7 @@ 30 0 + 9 1900 @@ -525,6 +559,10 @@ 10 0 + 11 + BB + data/bb.png + ABCD 2000 @@ -549,6 +587,10 @@ 30 0 + 11 + BB + data/bb.png + ÜŤƑ-8-ṰẼŠṮ 2200 @@ -561,6 +603,10 @@ 10 0 + 9 + A + data/a.png + ABC 2300 @@ -573,6 +619,10 @@ 20 0 + 13 + CC-DD + data/cc-dd.png + ABCD 2400 @@ -585,6 +635,10 @@ 30 0 + 11 + BB + data/bb.png + ABCD @@ -606,6 +660,31 @@ 1 1 1 + 9 + A + data/a.png + + + Demo TV Recording entry 11 + Demo TV Recording 11 Episode Name + https://mirrors.kodi.tv/demo-files/BBB/bbb_sunflower_1080p_30fps_normal.mp4 + / + Demo TV Channel 1 + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam cursus consectetur ipsum, eu tincidunt dui aliquam ac. Sed scelerisque, augue eu lacinia ultrices, libero ante ullamcorper augue, vel malesuada justo risus ac nulla. Quisque ac libero libero. Sed tincidunt, orci eu condimentum laoreet, felis odio mattis est, et lacinia metus enim in leo. Fusce faucibus tristique risus in varius. Etiam sagittis venenatis ligula nec rutrum. Etiam gravida dictum hendrerit. Sed sodales felis in sapien rutrum non malesuada nisi lobortis. Mauris iaculis ante odio. Nunc gravida erat convallis purus dignissim et ultricies orci dapibus. Aliquam erat volutpat. Vestibulum mi felis, malesuada ac tincidunt sit amet, pulvinar nec dolor. Pellentesque vehicula est vulputate mi adipiscing euismod. Donec ac mauris nulla. Nullam suscipit felis eu quam sodales ac bibendum nisi interdum. Curabitur non lectus a ante venenatis semper eget id justo. Ut facilisis, ligula pretium dictum congue, lacus dolor commodo nibh, sit amet sodales sed. + 10 + 0 + + 7200 + 0 + 2 + 1 + 1 + 1 + 11 + BB + data/bb.png + ABC Demo TV Recording entry 2 diff --git a/pvr.demo/README.md b/pvr.demo/README.md index 0a796d8..0e69519 100644 --- a/pvr.demo/README.md +++ b/pvr.demo/README.md @@ -3,6 +3,7 @@ Dummy data and files to be used with the PVR Demo Add-on. ## Icons There are 11 icons used for the channels. The same icons are used for TV and Radio. +4 icons of various aspect ratios are available for ParentalRatingIcons. ## PVR Channel Data types diff --git a/pvr.demo/addon.xml.in b/pvr.demo/addon.xml.in index 1f246b0..292eed9 100644 --- a/pvr.demo/addon.xml.in +++ b/pvr.demo/addon.xml.in @@ -1,7 +1,7 @@ @ADDON_DEPENDS@ diff --git a/pvr.demo/changelog.txt b/pvr.demo/changelog.txt index 51266b8..ce301bb 100644 --- a/pvr.demo/changelog.txt +++ b/pvr.demo/changelog.txt @@ -1,3 +1,6 @@ +v22.3.0 +- Add support for parentalRating+Code+Icon+Source to EPG and recordings. + v22.2.1 - Add missing SetEpisodePartNumber() diff --git a/pvr.demo/data/a.png b/pvr.demo/data/a.png new file mode 100644 index 0000000000000000000000000000000000000000..324a564bd714ac2829cc57d852c0686ef2891d79 GIT binary patch literal 14396 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%0D? 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 TazL?v*7VXJ<;BZH4gCHO!Hcym literal 0 HcmV?d00001 diff --git a/pvr.demo/data/cc-dd.png b/pvr.demo/data/cc-dd.png new file mode 100644 index 0000000000000000000000000000000000000000..6f46debcf6fe15418552fe0b7a788d24ce639ca4 GIT binary patch literal 14063 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 Ct5q`q literal 0 HcmV?d00001 diff --git a/pvr.demo/data/eee.png b/pvr.demo/data/eee.png new file mode 100644 index 0000000000000000000000000000000000000000..06ef953de7bbb7dcc8e472b36bc6f05d77570207 GIT binary patch literal 13305 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 literal 0 HcmV?d00001 diff --git a/src/PVRDemo.cpp b/src/PVRDemo.cpp index a007802..bb191bd 100644 --- a/src/PVRDemo.cpp +++ b/src/PVRDemo.cpp @@ -127,6 +127,10 @@ PVR_ERROR CPVRDemo::GetEPGForChannel(int channelUid, tag.SetEpisodeName(myTag.strEpisodeName); tag.SetEpisodePartNumber(myTag.iEpisodePartNumber); tag.SetYear(myTag.iYear); + tag.SetParentalRating(myTag.iParentalRating); + tag.SetParentalRatingCode(myTag.strParentalRatingCode); + tag.SetParentalRatingIcon(myTag.strParentalRatingIcon); + tag.SetParentalRatingSource(myTag.strParentalRatingSource); iLastEndTimeTmp = tag.GetEndTime(); @@ -336,7 +340,11 @@ PVR_ERROR CPVRDemo::GetRecordings(bool deleted, kodi::addon::PVRRecordingsResult /* PVR API 8.0.0 */ kodiRecording.SetClientProviderUid(recording.iProviderId); - + kodiRecording.SetParentalRating(recording.iParentalRating); + kodiRecording.SetParentalRatingCode(recording.strParentalRatingCode); + kodiRecording.SetParentalRatingIcon(recording.strParentalRatingIcon); + kodiRecording.SetParentalRatingSource(recording.strParentalRatingSource); + results.Add(kodiRecording); } @@ -776,6 +784,21 @@ bool CPVRDemo::ScanXMLEpgData(const XMLNode* pEpgNode) /* genre subtype */ XMLGetInt(pEpgNode, "genresubtype", entry.iGenreSubType); + /* parental rating age */ + XMLGetInt(pEpgNode, "parentalrating", entry.iParentalRating); + + /* parental rating code */ + if (XMLGetString(pEpgNode, "parentalratingcode", strTmp)) + entry.strParentalRatingCode = strTmp; + + /* parental rating icon */ + if (XMLGetString(pEpgNode, "parentalratingicon", strTmp)) + entry.strParentalRatingIcon = ClientPath() + strTmp; + + /* parental rating source */ + if (XMLGetString(pEpgNode, "parentalratingsource", strTmp)) + entry.strParentalRatingSource = strTmp; + /* episodepart */ if (!XMLGetInt(pEpgNode, "episodepart", entry.iEpisodePartNumber)) entry.iEpisodePartNumber = EPG_TAG_INVALID_SERIES_EPISODE; @@ -879,6 +902,21 @@ bool CPVRDemo::ScanXMLRecordingData(const XMLNode* pRecordingNode, recording.iProviderId = PVR_PROVIDER_INVALID_UID; XMLGetInt(pRecordingNode, "provider", recording.iProviderId); + /* parental rating age */ + XMLGetInt(pRecordingNode, "parentalrating", recording.iParentalRating); + + /* parental rating code */ + if (XMLGetString(pRecordingNode, "parentalratingcode", strTmp)) + recording.strParentalRatingCode = strTmp; + + /* parental rating icon */ + if (XMLGetString(pRecordingNode, "parentalratingicon", strTmp)) + recording.strParentalRatingIcon = ClientPath() + strTmp; + + /* parental rating source */ + if (XMLGetString(pRecordingNode, "parentalratingsource", strTmp)) + recording.strParentalRatingSource = strTmp; + /* recording year */ if (!XMLGetInt(pRecordingNode, "year", recording.iYear)) recording.iYear = 0; diff --git a/src/PVRDemo.h b/src/PVRDemo.h index 201b99c..c04ff5f 100644 --- a/src/PVRDemo.h +++ b/src/PVRDemo.h @@ -24,13 +24,16 @@ struct PVRDemoEpgEntry int iGenreType; int iGenreSubType; // time_t firstAired; - // int iParentalRating; + int iParentalRating = 0; // int iStarRating; // bool bNotify; int iSeriesNumber; int iEpisodeNumber; int iEpisodePartNumber; std::string strEpisodeName; + std::string strParentalRatingCode; + std::string strParentalRatingIcon; + std::string strParentalRatingSource; int iYear; }; @@ -69,6 +72,10 @@ struct PVRDemoRecording time_t recordingTime; int iChannelId; int iProviderId; + int iParentalRating = 0; + std::string strParentalRatingCode; + std::string strParentalRatingIcon; + std::string strParentalRatingSource; int iYear; };