diff --git a/ardundzdf.py b/ardundzdf.py
index 22e04bf..bedd65c 100644
--- a/ardundzdf.py
+++ b/ardundzdf.py
@@ -55,9 +55,9 @@
# +++++ ARDundZDF - Addon Kodi-Version, migriert von der Plexmediaserver-Version +++++
# VERSION -> addon.xml aktualisieren
-# 95 # Numerierung für Einzelupdate
+# 96 # Numerierung für Einzelupdate
VERSION = '4.6.9'
-VDATE = '17.04.2023'
+VDATE = '18.04.2023'
# (c) 2019 by Roland Scholz, rols1@gmx.de
@@ -3516,7 +3516,7 @@ def ARDSportMediaPlayer(li, item):
avail = stringextract('av_original_air_time":"', '"', cont)
if avail:
- verf = time_translate(avail)
+ verf = time_translate(avail, day_warn=True)
chapter = stringextract('chapter1":"', '"', cont)
creator = stringextract('creator":"', '"', cont)
@@ -8613,7 +8613,7 @@ def ZDF_get_teaserDetails(page, NodePath='', sophId=''):
title = unescape(title);
title = repl_json_chars(py2_decode(title));
enddate = stringextract('-end-date="', '"', page) # kann leer sein, wie get_teaserElement
- enddate = time_translate(enddate, add_hour=0) # Abgleich summer_time entfällt für ZDF
+ enddate = time_translate(enddate, add_hour=0, day_warn=True) # Abgleich summer_time entfällt für ZDF
path = stringextract('plusbar-url="', '"', page)
if path == '':
@@ -9217,7 +9217,7 @@ def ZDF_get_content(li, page, ref_path, ID=None, sfilter='Alle ZDF-Sender', skip
plusbar_title = stringextract('plusbar-title="', '"', rec) # Bereichs-, nicht Einzeltitel, nachrangig
plusbar_path = stringextract('plusbar-url="', '"', rec) # plusbar nicht vorh.? - sollte nicht vorkommen
enddate = stringextract('plusbar-end-date="', '"', rec) # kann leer sein
- enddate = time_translate(enddate, add_hour=False) # Abgleich summer_time entfällt für ZDF
+ enddate = time_translate(enddate, add_hour=False, day_warn=True)# Abgleich summer_time entfällt für ZDF
PLog('plusbar_path: ' + plusbar_path); PLog('ref_path: %s' % ref_path); PLog('enddate: ' + enddate);
if plusbar_path == '':
diff --git a/resources/lib/ARDnew.py b/resources/lib/ARDnew.py
index 258a72a..fc1defb 100644
--- a/resources/lib/ARDnew.py
+++ b/resources/lib/ARDnew.py
@@ -10,8 +10,8 @@
# 21.11.2019 Migration Python3 Modul kodi_six + manuelle Anpassungen
#
################################################################################
-# 40 # Numerierung für Einzelupdate
-# Stand: 17.04.2023
+# 41 # Numerierung für Einzelupdate
+# Stand: 18.04.2023
# Python3-Kompatibilität:
from __future__ import absolute_import # sucht erst top-level statt im akt. Verz.
@@ -431,6 +431,9 @@ def img_preload(ID, path, title, caller, icon=ICON_MAIN_ARD):
#---------------------------------------------------------------------------------------------------
# Auflistung der Rubriken in json-Inhalt page (json bei html-Seite
# in script id="fetchedContextValue")
+# Hinw.: vorerst Verzicht auf ev. Topnavigation (Submenüs), außer
+# Sportseite
+#
def ARDRubriken(li, path="", page=""):
PLog('ARDRubriken:')
li_org=li
@@ -614,6 +617,7 @@ def ARDStartRegion(path, title, widgetID='', ID=''):
#
# Aufrufe: Rubriken aus ARDStart, Sendereihen aus A-Z-Seiten, Mehrfachbeiträge aus ARDSearchnew
# 28.05.2020 getrennte Swiper-Auswertung entfällt nach Änderung der ARD-Seiten
+# 18.04.2023 Cache für Startseite entfällt (obsolet - api-Call)
#
def ARDStartRubrik(path, title, widgetID='', ID='', img=''):
PLog('ARDStartRubrik: %s' % ID); PLog(title); PLog(path)
@@ -629,15 +633,9 @@ def ARDStartRubrik(path, title, widgetID='', ID='', img=''):
else:
li = home(li, ID='ARD Neu') # Home-Button
- page = False
- if '/editorials/' in path == False: # nur kompl. Startseite aus Cache laden (nicht Rubriken)
- if ID != 'ARDStartSingle':
- page = Dict("load", 'ARDStartNEW_%s' % sendername, CacheTime=ARDStartCacheTime) # Seite aus Cache laden
-
- if page == False: # keine Startseite od. Cache miss
- page, msg = get_page(path=path, GetOnlyRedirect=True)
- path = page
- page, msg = get_page(path=path)
+ page, msg = get_page(path=path, GetOnlyRedirect=True)
+ path = page
+ page, msg = get_page(path=path)
if page == '':
msg1 = "Fehler in ARDStartRubrik: %s" % title
msg2 = msg
@@ -968,7 +966,7 @@ def ARD_FlatListRec(item, vers):
if up_low(fsk) == "NONE":
fsk = "ohne"
end = stringextract('availableTo":"', '"', item)
- end = time_translate(end)
+ end = time_translate(end, day_warn=True)
end = u"[B]Verfügbar bis [COLOR darkgoldenrod]%s[/COLOR][/B]" % end
# geo = stringextract('Rating":"', '"', item) # Geo fehlt
dauer = stringextract('"duration":', ',', item)
@@ -1336,7 +1334,7 @@ def get_json_content(li, page, ID, mark='', mehrzS=''):
if "live" not in typ: # nicht in Livestreams
if verf == None:
verf=""
- verf = time_translate(verf)
+ verf = time_translate(verf, day_warn=True)
if verf:
summ = u"[B]Verfügbar bis [COLOR darkgoldenrod]%s[/COLOR][/B]\n\n%s" % (verf, summ)
if "broadcastedOn" in s:
diff --git a/resources/lib/my3Sat.py b/resources/lib/my3Sat.py
index 22e9cb4..945b316 100644
--- a/resources/lib/my3Sat.py
+++ b/resources/lib/my3Sat.py
@@ -11,8 +11,8 @@
# 18.11.2019 Migration Python3 Modul kodi_six + manuelle Anpassungen
#
################################################################################
-# 8 # Numerierung für Einzelupdate
-# Stand: 28.03.2023
+# 9 # Numerierung für Einzelupdate
+# Stand: 18.04.2023
# Python3-Kompatibilität:
from __future__ import absolute_import # sucht erst top-level statt im akt. Verz.
@@ -437,6 +437,11 @@ def SendungenDatum(SendDate, title):
descr = cleanhtml(descr);
zeit = stringextract('class="time">', '', rec)
dauer = stringextract('class="label">', '', rec)
+ # enddate leer bei Verpasst, anders als üblich (s. get_teaserElement)
+ #enddate = stringextract('-end-date="', '"', rec)
+ #enddate = time_translate(enddate, add_hour=0, day_warn=True)
+ #if dauer and enddate:
+ # dauer = "%s | [B]Verfügbar bis [COLOR darkgoldenrod]%s[/COLOR][/B]" % (dauer, enddate)
sendung = u"[COLOR blue]%s[/COLOR] | %s" % (zeit, sendung)
tagline = title_org + ' | ' + zeit
@@ -529,7 +534,7 @@ def Start(name, path, rubrik=''):
dauer = stringextract('class="label">', '', rec)# 2 min
endDate = stringextract('-end-date="', '"', rec) # 2020-07-15T04:00:00.000Z
- endDate = time_translate(endDate)
+ endDate = time_translate(endDate, day_warn=True)
tag = dauer
if endDate:
@@ -1166,6 +1171,13 @@ def Sendereihe_Sendungen(li, path, title, img='', page='', skip_lazyload='', ski
if dur:
tagline = tagline + ' | ' + dur
+ enddate = stringextract('-end-date="', '"', rec) # s.a. get_teaserElement
+ enddate = time_translate(enddate, add_hour=0, day_warn=True)
+ if enddate:
+ enddate = "[B]Verfügbar bis [COLOR darkgoldenrod]%s[/COLOR][/B]" % enddate
+ tagline = "%s | %s" % (tagline, enddate)
+
+
if href.endswith('zdf.de/') or '/einstellungen' in href or u'Suche öffnen' in title or title=='':
continue
if href == DreiSat_BASE:
@@ -1377,6 +1389,13 @@ def get_teaserElement(rec):
tag = stringextract('', '', page)
dauer = stringextract('icon-opaque is-not-selected', '/span>', page)
dauer = stringextract('class="label">', '<', dauer) # label allein unsicher (Bsp. Vorab)
+
+ enddate = stringextract('-end-date="', '"', page) # kann leer sein
+ enddate = time_translate(enddate, add_hour=0, day_warn=True)
+ if dauer and enddate:
+ dauer = "%s | [B]Verfügbar bis [COLOR darkgoldenrod]%s[/COLOR][/B]" % (dauer, enddate)
+
+
path = stringextract('href="', '"', page)
if path.startswith('http') == False:
path = DreiSat_BASE + path
@@ -1476,6 +1495,11 @@ def get_zdfplayer_content(li, page):
title = (title.replace('\\"', '').replace('"', ''))
dauer = stringextract('duration": "', '",', videoinfos) # Bsp. 2 min
+ enddate = stringextract('-end-date="', '"', page) # get_teaserElement
+ enddate = time_translate(enddate, add_hour=0, day_warn=True)
+ if dauer and enddate:
+ dauer = "%s | [B]Verfügbar bis [COLOR darkgoldenrod]%s[/COLOR][/B]" % (dauer, enddate)
+
play_id = stringextract('zdfplayer-id="', '"', rec) # z.B. die-anstalt-vom-5-oktober-2021-100
path = stringextract('embed_content": "', '"', rec)
diff --git a/resources/lib/util.py b/resources/lib/util.py
index 5534865..3c3b4be 100644
--- a/resources/lib/util.py
+++ b/resources/lib/util.py
@@ -11,8 +11,8 @@
# 02.11.2019 Migration Python3 Modul future
# 17.11.2019 Migration Python3 Modul kodi_six + manuelle Anpassungen
#
-# 45 # Numerierung für Einzelupdate
-# Stand: 15.04.2023
+# 46 # Numerierung für Einzelupdate
+# Stand: 18.04.2023
# Python3-Kompatibilität:
from __future__ import absolute_import
@@ -1971,7 +1971,7 @@ def seconds_translate(seconds, days=False):
# Korr.-Faktor hour_info entfällt. add_hour jetzt Flag für Abgleich mit Tab. summer_time (False
# bei "Verfügbar bis..")
#
-def time_translate(timecode, add_hour=True):
+def time_translate(timecode, add_hour=True, day_warn=False):
PLog("time_translate: " + timecode)
# summer_time aus www.ptb.de, konvertiert zum date_format (s.u.):
@@ -2019,6 +2019,28 @@ def time_translate(timecode, add_hour=True):
new_ts = ts + datetime.timedelta(hours=add_hour) # add-Faktor addieren
ret_ts = new_ts.strftime("%d.%m.%Y %H:%M")
PLog(ret_ts)
+
+ if day_warn: # Info, Bsp.: NOCH 5 TAGE
+ today = datetime.datetime.today()
+ sday = new_ts
+ dif = str(sday-today) # 18 days, 15:33:08.596024
+ PLog(new_ts);
+ PLog("sday-today: %s" % dif)
+ try:
+ if dif.find("day") < 0: # nur Stunden: 16:32:05.225575
+ dif = "1"
+ else:
+ dif = re.search(u'(\d+) day', dif).group(1)
+ except Exception as exception:
+ PLog(str(exception))
+ dif=""
+ PLog("dif: %s" % dif)
+ if dif and int(dif) <= 6:
+ if dif == "1":
+ ret_ts = "%s | NOCH 1 TAG!" % ret_ts
+ else:
+ ret_ts = "%s | NOCH %s TAGE!" % (ret_ts, dif)
+
return ret_ts
except Exception as exception:
PLog(str(exception))