From 0f9f4bb01e750dbca6918d5c08b6cb319ac95469 Mon Sep 17 00:00:00 2001 From: Martin Vallevand Date: Thu, 11 Jul 2024 11:56:55 -0400 Subject: [PATCH 1/2] Add missing fields for testing Add SetEpisodePartNumber() to EPG, add SetYear() to Recordings and EPG. --- pvr.demo/PVRDemoAddonSettings.xml | 21 ++++++++++++++------- pvr.demo/changelog.txt | 1 - src/PVRDemo.cpp | 14 ++++++++++++++ src/PVRDemo.h | 4 +++- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/pvr.demo/PVRDemoAddonSettings.xml b/pvr.demo/PVRDemoAddonSettings.xml index 8c5f5b2..6ce57fb 100644 --- a/pvr.demo/PVRDemoAddonSettings.xml +++ b/pvr.demo/PVRDemoAddonSettings.xml @@ -343,7 +343,7 @@ 1 Demo EPG entry 1 Episode Title - 16 + 96 0 @@ -401,14 +401,15 @@ 600 - Demo EPG entry 6 + Demo EPG movie entry 6 6 0 3900 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. - 96 + 2024 + 16 0 @@ -420,6 +421,8 @@ 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. + 1 + 5 112 0 @@ -432,6 +435,9 @@ 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. + 2 + 4 + Demo EPG entry 8 Episode Part Title 128 0 @@ -587,7 +593,7 @@ Demo TV Recording entry 1 Demo TV Recording 1 Episode Name https://mirrors.kodi.tv/demo-files/BBB/bbb_sunflower_1080p_30fps_normal.mp4 - /Directory1/SubDirectory1/ + /Directory1/TV Shows/ 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. @@ -605,7 +611,7 @@ Demo TV Recording entry 2 Demo TV Recording 2 Episode Name https://mirrors.kodi.tv/demo-files/BBB/bbb_sunflower_1080p_30fps_normal.mp4 - /Directory1/SubDirectory1/ + /Directory1/TV Shows/ Demo TV Channel 2 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. @@ -720,12 +726,13 @@ Demo TV Recording entry 10 https://mirrors.kodi.tv/demo-files/BBB/bbb_sunflower_1080p_30fps_normal.mp4 - /Directory3/ + /Directory1/Movies/ Demo TV Channel 10 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 + 16 0 + 2024 7500 0 diff --git a/pvr.demo/changelog.txt b/pvr.demo/changelog.txt index a67e9e5..103f5c4 100644 --- a/pvr.demo/changelog.txt +++ b/pvr.demo/changelog.txt @@ -53,4 +53,3 @@ v7.1.5 v7.1.4 Translations updates from Weblate - af_za, am_et, ar_sa, az_az, be_by, bg_bg, bs_ba, ca_es, cs_cz, cy_gb, da_dk, de_de, el_gr, en_au, en_nz, en_us, eo, es_ar, es_es, es_mx, et_ee, eu_es, fa_af, fa_ir, fi_fi, fo_fo, fr_ca, fr_fr, gl_es, he_il, hi_in, hr_hr, hu_hu, hy_am, id_id, is_is, it_it, ja_jp, ko_kr, lt_lt, lv_lv, mi, mk_mk, ml_in, mn_mn, ms_my, mt_mt, my_mm, nb_no, nl_nl, pl_pl, pt_br, pt_pt, ro_ro, ru_ru, si_lk, sk_sk, sl_si, sq_al, sr_rs, sr_rs@latin, sv_se, szl, ta_in, te_in, tg_tj, th_th, tr_tr, uk_ua, uz_uz, vi_vn, zh_cn, zh_tw - diff --git a/src/PVRDemo.cpp b/src/PVRDemo.cpp index 29be67f..7632260 100644 --- a/src/PVRDemo.cpp +++ b/src/PVRDemo.cpp @@ -125,6 +125,8 @@ PVR_ERROR CPVRDemo::GetEPGForChannel(int channelUid, tag.SetSeriesNumber(myTag.iSeriesNumber); tag.SetEpisodeNumber(myTag.iEpisodeNumber); tag.SetEpisodeName(myTag.strEpisodeName); + tag.SetEpisodePartNumber(myTag.iEpisodePartNumber); + tag.SetYear(myTag.iYear); iLastEndTimeTmp = tag.GetEndTime(); @@ -326,6 +328,7 @@ PVR_ERROR CPVRDemo::GetRecordings(bool deleted, kodi::addon::PVRRecordingsResult kodiRecording.SetTitle(recording.strTitle); kodiRecording.SetEpisodeName(recording.strEpisodeName); kodiRecording.SetDirectory(recording.strDirectory); + kodiRecording.SetYear(recording.iYear); /* TODO: PVR API 5.0.0: Implement this */ kodiRecording.SetChannelUid(recording.iChannelId); @@ -772,6 +775,14 @@ bool CPVRDemo::ScanXMLEpgData(const XMLNode* pEpgNode) /* genre subtype */ XMLGetInt(pEpgNode, "genresubtype", entry.iGenreSubType); + /* episodepart */ + if (!XMLGetInt(pEpgNode, "episodepart", entry.iEpisodePartNumber)) + entry.iEpisodePartNumber = EPG_TAG_INVALID_SERIES_EPISODE; + + /* year */ + if (!XMLGetInt(pEpgNode, "year", entry.iYear)) + entry.iYear = 0; + kodi::Log(ADDON_LOG_DEBUG, "loaded EPG entry '%s' channel '%d' start '%d' end '%d'", entry.strTitle.c_str(), entry.iChannelId, entry.startTime, entry.endTime); @@ -863,6 +874,9 @@ bool CPVRDemo::ScanXMLRecordingData(const XMLNode* pRecordingNode, recording.iProviderId = PVR_PROVIDER_INVALID_UID; XMLGetInt(pRecordingNode, "provider", recording.iProviderId); + /* recording year */ + if (!XMLGetInt(pRecordingNode, "year", recording.iYear)) + recording.iYear = 0; return true; } diff --git a/src/PVRDemo.h b/src/PVRDemo.h index 4b6a05d..7108590 100644 --- a/src/PVRDemo.h +++ b/src/PVRDemo.h @@ -29,8 +29,9 @@ struct PVRDemoEpgEntry // bool bNotify; int iSeriesNumber; int iEpisodeNumber; - // int iEpisodePartNumber; + int iEpisodePartNumber; std::string strEpisodeName; + int iYear; }; struct PVRDemoChannel @@ -67,6 +68,7 @@ struct PVRDemoRecording time_t recordingTime; int iChannelId; int iProviderId; + int iYear; }; struct PVRDemoTimer From 5bba00b8b2760a8a9581e94a25a19c49a8e226f5 Mon Sep 17 00:00:00 2001 From: Martin Vallevand Date: Tue, 20 Aug 2024 10:08:51 -0400 Subject: [PATCH 2/2] Update recordings Add EpisodePart to recordings for API 9 --- pvr.demo/PVRDemoAddonSettings.xml | 19 +++++++++++++++++++ pvr.demo/addon.xml.in | 2 +- pvr.demo/changelog.txt | 5 +++++ src/PVRDemo.cpp | 4 ++++ src/PVRDemo.h | 1 + 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/pvr.demo/PVRDemoAddonSettings.xml b/pvr.demo/PVRDemoAddonSettings.xml index 6ce57fb..9c79c0e 100644 --- a/pvr.demo/PVRDemoAddonSettings.xml +++ b/pvr.demo/PVRDemoAddonSettings.xml @@ -737,6 +737,25 @@ 7500 0 + + Demo TV Recording entry 11 + Demo TV Recording 3 Episode Part Name + https://mirrors.kodi.tv/demo-files/BBB/bbb_sunflower_1080p_30fps_normal.mp4 + /Directory1/TV Shows/ + Demo TV Channel 2 + 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 + + 7500 + 0 + 2 + 4 + 2 + 2 + + Demo Radio Recording entry 1 diff --git a/pvr.demo/addon.xml.in b/pvr.demo/addon.xml.in index 0be4010..9ea74c8 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 103f5c4..a590137 100644 --- a/pvr.demo/changelog.txt +++ b/pvr.demo/changelog.txt @@ -1,3 +1,8 @@ +v22.2.0 +- add SetEpisodePartNumber() to EPG and Recordings +- add SetYear() to Recordings and EPG +- add some year and episode testing + v22.1.0 - PVR Add-on API v9.0.0 diff --git a/src/PVRDemo.cpp b/src/PVRDemo.cpp index 7632260..b1fcbd9 100644 --- a/src/PVRDemo.cpp +++ b/src/PVRDemo.cpp @@ -841,6 +841,10 @@ bool CPVRDemo::ScanXMLRecordingData(const XMLNode* pRecordingNode, if (!XMLGetInt(pRecordingNode, "episode", recording.iEpisodeNumber)) recording.iEpisodeNumber = PVR_RECORDING_INVALID_SERIES_EPISODE; + /* Episode Part */ + if (!XMLGetInt(pRecordingNode, "episodepart", recording.iEpisodePartNumber)) + recording.iEpisodePartNumber = PVR_RECORDING_INVALID_SERIES_EPISODE; + /* genre type */ XMLGetInt(pRecordingNode, "genretype", recording.iGenreType); diff --git a/src/PVRDemo.h b/src/PVRDemo.h index 7108590..201b99c 100644 --- a/src/PVRDemo.h +++ b/src/PVRDemo.h @@ -57,6 +57,7 @@ struct PVRDemoRecording int iGenreSubType; int iSeriesNumber; int iEpisodeNumber; + int iEpisodePartNumber; std::string strChannelName; std::string strPlotOutline; std::string strPlot;