From bde972d7cdd0bfc9ea067f41d96a23482b30235b Mon Sep 17 00:00:00 2001 From: Paco8 <5084042+Paco8@users.noreply.github.com> Date: Tue, 5 Mar 2024 14:52:49 +0100 Subject: [PATCH] Version 0.8.16 --- addon.xml | 2 +- .../resource.language.en_gb/strings.po | 15 +++++++ .../resource.language.es_es/strings.po | 15 +++++++ resources/lib/movistar.py | 43 ++++++++++++++----- resources/lib/plugin.py | 6 ++- resources/settings.xml | 1 + 6 files changed, 70 insertions(+), 12 deletions(-) diff --git a/addon.xml b/addon.xml index ceb91a6..14f97af 100644 --- a/addon.xml +++ b/addon.xml @@ -1,7 +1,7 @@ diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po index ac60730..85fd08e 100644 --- a/resources/language/resource.language.en_gb/strings.po +++ b/resources/language/resource.language.en_gb/strings.po @@ -494,6 +494,21 @@ msgctxt "#30312" msgid "Export channels and EPG now" msgstr "" +# For Movistar only +msgctxt "#30313" +msgid "The EPG export has finished." +msgstr "" + +# For Movistar only +msgctxt "#30314" +msgid "Exporting {}" +msgstr "" + +# For Movistar only +msgctxt "#30315" +msgid "Number of days" +msgstr "" + msgctxt "#30320" msgid "Rating: {}" msgstr "" diff --git a/resources/language/resource.language.es_es/strings.po b/resources/language/resource.language.es_es/strings.po index 12fbc6b..2f802f9 100644 --- a/resources/language/resource.language.es_es/strings.po +++ b/resources/language/resource.language.es_es/strings.po @@ -459,6 +459,21 @@ msgctxt "#30312" msgid "Export channels and EPG now" msgstr "Exportar los canales y la guía ahora" +# For Movistar only +msgctxt "#30313" +msgid "The EPG export has finished." +msgstr "Se ha terminado de exportar la EPG." + +# For Movistar only +msgctxt "#30314" +msgid "Exporting {}" +msgstr "Exportando {}" + +# For Movistar only +msgctxt "#30315" +msgid "Number of days" +msgstr "Número de días" + msgctxt "#30320" msgid "Rating: {}" msgstr "Calificación: {}" diff --git a/resources/lib/movistar.py b/resources/lib/movistar.py index a5e09fe..b59bb77 100644 --- a/resources/lib/movistar.py +++ b/resources/lib/movistar.py @@ -11,7 +11,7 @@ import io import os import time import re -from datetime import datetime +from datetime import datetime, timedelta from .endpoints import endpoints from .log import LOG, print_json @@ -472,14 +472,17 @@ class Movistar(object): return data def get_epg(self, date=None, duration=2, channels=None): - if channels: + if channels or date: if not date: today = datetime.today() date = today.strftime('%Y-%m-%dT00:00:00') - ch_data = self.load_epg_data(date, duration, channels) - if not ch_data or 'error' in ch_data: return {} - data = [] - data.append(ch_data) + epg_data = self.load_epg_data(date, duration, channels if channels else '') + if not epg_data or 'error' in epg_data: return {} + if channels: + data = [] + data.append(epg_data) + else: + data = epg_data else: cache_filename = 'epg_{}.json'.format(self.quality) content = self.cache.load(cache_filename, 6*60) @@ -1288,14 +1291,15 @@ class Movistar(object): with io.open(filename, 'w', encoding='utf-8', newline='') as handle: handle.write(res) - def export_epg(self): + def export_epg(self, date=None, duration=2): if sys.version_info[0] >= 3: from urllib.parse import urlencode else: from urllib import urlencode #now = time.time()*1000 + res = {} - epg = self.get_epg() + epg = self.get_epg(date, duration) channels = self.get_channels() for channel in channels: id = channel['id'] @@ -1334,7 +1338,7 @@ class Movistar(object): res[id].append(t) return res - def export_epg_to_xml(self, filename): + def export_epg_to_xml(self, filename, ndays=3, report_func=None): if sys.version_info[0] < 3: # Python 2 from cgi import escape as html_escape @@ -1354,7 +1358,26 @@ class Movistar(object): ' \n'.format(t['logo']) + '\n') - epg = self.export_epg() + if True: + epg = {} + today = datetime.today() + total_items = 0 + for i in range(0, ndays, 1): + date = today + timedelta(days=i) + strdate = date.strftime('%Y-%m-%dT00:00:00') + LOG('epg: {}'.format(strdate)) + if report_func: + report_func(strdate.split('T')[0]) + e = self.export_epg(strdate, 1) + LOG('epg: channels: {}'.format(len(e))) + for ch in e: + if not ch in epg: epg[ch] = [] + total_items += len(e[ch]) + epg[ch].extend(e[ch]) + LOG('epg: total items: {}'.format(total_items)) + else: + epg = self.export_epg() + for ch in channels: if not ch['id'] in epg: continue for e in epg[ch['id']]: diff --git a/resources/lib/plugin.py b/resources/lib/plugin.py index 9f6329c..c8e99a7 100644 --- a/resources/lib/plugin.py +++ b/resources/lib/plugin.py @@ -622,6 +622,9 @@ def iptv(params): # pass def export_epg_now(): + def report_progress(message): + show_notification(addon.getLocalizedString(30314).format(message), xbmcgui.NOTIFICATION_INFO) + if not m.logged: return folder = addon.getSetting('epg_folder') if sys.version_info[0] > 2: @@ -632,7 +635,8 @@ def export_epg_now(): show_notification(addon.getLocalizedString(30310), xbmcgui.NOTIFICATION_INFO) m.export_channels_to_m3u8(channels_filename) show_notification(addon.getLocalizedString(30311), xbmcgui.NOTIFICATION_INFO) - m.export_epg_to_xml(epg_filename) + m.export_epg_to_xml(epg_filename, addon.getSettingInt('export_days'), report_progress) + show_notification(addon.getLocalizedString(30313), xbmcgui.NOTIFICATION_INFO) def to_wishlist(params): stype = params['stype'] diff --git a/resources/settings.xml b/resources/settings.xml index c2fe651..1ff4f43 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -38,6 +38,7 @@ +