Skip to content

Commit

Permalink
Änderungen / Korrekturen siehe changelog.txt
Browse files Browse the repository at this point in the history
  • Loading branch information
rols1 committed Aug 18, 2024
1 parent 1ac54ea commit 370f59e
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 118 deletions.
2 changes: 1 addition & 1 deletion addon.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.ardundzdf" name="ARDundZDF" version="5.0.9+matrix" provider-name="rols1 (rols1@gmx.de)">
<addon id="plugin.video.ardundzdf" name="ARDundZDF" version="5.1.0+matrix" provider-name="rols1 (rols1@gmx.de)">
<requires>
<import addon="xbmc.python" version="3.0.0"/>
<import addon="script.module.kodi-six" />
Expand Down
154 changes: 41 additions & 113 deletions ardundzdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@

# VERSION -> addon.xml aktualisieren
# <nr>216</nr> # Numerierung für Einzelupdate
VERSION = '5.0.9'
VDATE = '16.08.2024'
VERSION = '5.1.0'
VDATE = '18.08.2024'


# (c) 2019 by Roland Scholz, rols1@gmx.de
Expand Down Expand Up @@ -3469,10 +3469,8 @@ def ARDSportWDR():
cacheID = "Sport_Startseite"
img = logo
path = "https://www.sportschau.de"
title=py2_encode(title); path=py2_encode(path); img=py2_encode(img);
fparams="&fparams={'title': '%s', 'path': '%s', 'img': '%s', 'cacheID': '%s'}" %\
(quote(title), quote(path), quote(img), cacheID)
addDir(li=li, label=title, action="dirList", dirID="ARDSportCluster", fanart=img, thumb=img,
fparams="&fparams={}"
addDir(li=li, label=title, action="dirList", dirID="ARDSportStart", fanart=img, thumb=img,
fparams=fparams, tagline=tag)

title = u"Livestreams der Sportschau"
Expand All @@ -3484,23 +3482,12 @@ def ARDSportWDR():
fparams=fparams, tagline=tag)

#--------------------------------------------------------- Großevents Start
title = u"Event: [B]OLYMPIA 2024[/B]" # Großevent
tag = u"Alles zu den Olympischen Spielen 2024 Paris - News, Ergebnisse, Livestreams"
cacheID = "Sport_OLYMPIA_2024"
img = "https://images.sportschau.de/image/8256571a-83dd-474d-9f81-982a02eea327/AAABi9KI1Ww/AAABjwnlFvA/16x9-1280/logo-olympia-paris-2024-100.jpg"
path = "https://www.sportschau.de/olympia/index.html"
title=py2_encode(title); path=py2_encode(path); img=py2_encode(img);
fparams="&fparams={'li': '', 'title': '%s', 'page': '', 'path': '%s'}" %\
(quote(title), quote(path))
addDir(li=li, label=title, action="dirList", dirID="ARDSportMedia", fanart=img, thumb=img,
fparams=fparams, tagline=tag)


title = u"Event: [B]Tour de France 2024[/B]" # Großevent
tag = u"Tour de France 2024, Livestreams, Videos, Nachrichten, Rennberichte, Etappen, Ergebnisse und Wertungen"
cacheID = "Sport_TourdeFrance_2024"
img = "https://images.sportschau.de/image/b0709b8b-c4de-4632-af95-5594f03eeea3/AAABkAOw8zc/AAABjwnlFvA/16x9-1280/nizza-256.jpg"
path = "https://www.sportschau.de/radsport/tourdefrance/index.html"
title = u"Event: [B]Tour de France Femmes 2024[/B]" # Großevent
tag = u"Tour de France Femmes 2024, Rennberichte, Analysen, Bilder, Ergebnisse und Wertungen zu allen Etappen"
cacheID = "Sport_TourdeFemmes_2024"
img = "https://images.sportschau.de/image/5e488d45-7e8c-4ec6-9d90-b10cb3a43233/AAABiaIsZUA/AAABkUqnCZ0/16x9-1280/tdff-peloton-etappe-7-100.jpg"
path = "https://www.sportschau.de/radsport/tourdefrance-femmes"
title=py2_encode(title); path=py2_encode(path); img=py2_encode(img);
fparams="&fparams={'li': '', 'title': '%s', 'page': '', 'path': '%s'}" %\
(quote(title), quote(path))
Expand Down Expand Up @@ -4391,103 +4378,42 @@ def ARDSportLoadPage(title, path, func, cacheID=""):
MyDialog(msg1, msg2, msg3)

return page

##---------------------------------------------------------------------------------------------------
# Großevent der Sportschau
# 1. Aufruf: ARDSportWDR
# 2. Aufruf: ARDSportCluster mit cluster (class="trenner")
# 24.06.2022 Rückfall-Adresse www.sportschau.de - bei Großevents
# verlegt der WDR die Ankündigunsseite auf die Startseite
#
def ARDSportCluster(title, path, img, cacheID, cluster=''):
PLog('ARDSportCluster: ' + cluster)

new_url, msg = get_page(path=path, GetOnlyRedirect=True)
if new_url == '':
path = "https://www.sportschau.de/"
#---------------------------------------------------------------------------------------------------
def ARDSportStart():
PLog('ARDSportStart:')

page = ARDSportLoadPage(title, path, "ARDSportCluster")
base = "https://www.sportschau.de/"
page = ARDSportLoadPage("Startseite", base, "ARDSportStart")
if page == '':
return

li = xbmcgui.ListItem()
li = home(li, ID='ARD Neu') # Home-Button

trenner = 'class="trenner__text">'
items = blockextract(trenner, page)
PLog(len(items))
#----------------------------------------------- # 1. Durchlauf
if cluster == '':
PLog("stage1")
#------------------
teaser = blockextract('class="teaser-slider', page) # vor Cluster: Slider gesamte Seite auswerten
PLog(len(teaser))
if len(teaser) > 0:
cnt=1
for item in teaser:
Dict_ID = "ARDSportSlider_%d" % cnt
Dict("store", Dict_ID, item)
title = "[B]Sliderbox %d[/B]" % cnt
tag = u"Folgeseiten"
title=py2_encode(title); path=py2_encode(path);
img=py2_encode(img);
fparams="&fparams={'title': '%s', 'path': '%s', 'img': '%s', 'Dict_ID': '%s'}" %\
(quote(title), quote(path), quote(img), Dict_ID)
addDir(li=li, label=title, action="dirList", dirID="ARDSportHub", fanart=img, thumb=img,
fparams=fparams, tagline=tag)
cnt=cnt+1
#------------------
for item in items:
if "v-instance tabnav" in item: # Webseite-Menü
continue
tag=''
title = stringextract('__headline">', '</', item)
title_org = title
topline = stringextract('__topline">', '</', item)
topline = topline.strip()

PLog("title: " + title) # wie stage2
if "<h2>Specials" in title: # redakt. Inhalte
continue
title = cleanhtml(title); title = title.strip()
title = unescape(title); title = repl_json_chars(title)

tag = "[B]%s[/B]" % topline
tag = "%s\nFolgeseiten" % tag
tag = unescape(tag);
li = home(li, ID='ARD Neu') # Home-Button

PLog("Satz_stage1:")
PLog(title); PLog(tag); PLog(cluster);

title=py2_encode(title); path=py2_encode(path);
img=py2_encode(img); cluster=py2_encode(cluster);
fparams="&fparams={'title': '%s', 'path': '%s', 'img': '%s', 'cacheID': '%s', 'cluster': '%s'}" %\
(quote(title), quote(path), quote(img), cacheID, quote(title))
addDir(li=li, label=title, action="dirList", dirID="ARDSportCluster", fanart=img, thumb=img,
fparams=fparams, tagline=tag)

#----------------------------------------------- # 2. Durchlauf
else:
PLog("stage2")
headline = ">%s<" % cluster
PLog("headline: " + headline)
for item in items:
found=False
title = stringextract('__headline">', '</', item)
title = cleanhtml(title); title = title.strip()
title = unescape(title); title = repl_json_chars(title)

if title in headline:
PLog("found_cluster: " + headline)
found=True
page = item # Cluster -> page
break
if found:
cnt = ARDSportMedia(li, title, page)
if cnt == 0: # Verbleib in Liste
return
# 1. Hamburger-Menü rechte Seite bis 1. Teiler (Live & Ergebnisse):
burger = stringextract('class="burger-navi-nav', 'class="burger-panel-divider', page)
items = blockextract("<li>", burger, "</li>")
PLog(len(items))
for item in items:
path = base + stringextract('href="', '"', item) # Folgeseiten ohne http
img = R(ICON_DIR_FOLDER) # Burger-img grauslich
title = stringextract('title="', '"', item)
title = title.replace(" aufrufen", "")

xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)
PLog("Satz9:")
PLog(title); PLog(path); PLog(img);
tag = "Folgeseiten"
title=py2_encode(title); path=py2_encode(path); img=py2_encode(img);
fparams="&fparams={'li': '', 'title': '%s', 'page': '', 'path': '%s'}" %\
(quote(title), quote(path))
addDir(li=li, label=title, action="dirList", dirID="ARDSportMedia", fanart=img, thumb=img,
fparams=fparams, tagline=tag)

# 2. Videos + Audios der Startseite ausgeben
ARDSportMedia(li, title, page)

xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)

#---------------------------------------------------------------------------------------------------
# Livestreams der Sportschau
Expand Down Expand Up @@ -4570,8 +4496,7 @@ def ARDSportAudioStreams(title, path, img, cacheID):

#---------------------------------------------------------------------------------------------------
# Auswertung mediaplayer-Klassen (quoted:data-v=..)
# Aufrufer ARDSportWDR, ARDSportAudioStreams,
# ARDSportCluster
# Aufrufer ARDSportWDR, ARDSportAudioStreams
# 05.08.2024 Nutzung TagesschauXL.get_content_json
#
def ARDSportMedia(li, title, page, path=""):
Expand Down Expand Up @@ -4611,6 +4536,9 @@ def ARDSportMedia(li, title, page, path=""):
typ,av_typ,title,tag,summ,img,stream = TagesschauXL.get_content_json(item)
if typ == False: # jsonloads_error
continue
if stream in url_list: # Doppel möglich (Tour de France Femmes)
continue
url_list.append(stream)

title=py2_encode(title); stream=py2_encode(stream);
summ=py2_encode(summ); img=py2_encode(img);
Expand Down
21 changes: 19 additions & 2 deletions changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,25 @@ CHANGE HISTORY
max_col 97
--------------

04.08.2024 ZDF_Search: Anpassung ZDF_Search_PATH an geänderte ZDF-Parameter.
18.08.2024 5.1.0
Auswertung ARD Sportschau.de (WDR): neues Funktionsziel ARDSportMedia für
Großevents in ARDSportWDR (ohne Cluster), Startseite: neue Funktion
ARDSportStart s.u., obsolete Funktion ARDSportCluster entfernt.
ARDSportMedia: neu - Extrakt sämtlicher Playerdaten (data-v=), Auswertung
in TagesschauXL.get_content_json, doppelte Stream-Url unterdrückt.
get_page (util): compressed-Behandlung für Stufe 2 (page2) - relevant für
json-Daten. Decoding für Stufe1 und 2 an das Funktionsende verlegt. Rücknahme
return bei http-Error aus V4.7.8 (nicht mehr benötigt für VideoEvent-Streams).
PlayVideo (util): import sqlite3 entfernt - obsolet
EPG-Suche (Haupt-PRG): Such-Button im Menü TV-Livestreams, neue Funktion
EPG_Search, einschl. Aufnahmeoption (Kontextmenü), Wiki aktualisiert.
EPG (Modul EPG): Ausgabe str(page) auskommentiert (codec-Error python2.*).
Modul epgRecord: Löschoption für abgelaufene Jobs ergänzt (Button in JobListe,
neue Funktion JobRemoveExp).
url_check: Rückgabe bei lokaler Video-Url korrigiert (Url statt True).

04.08.2024 5.0.9
ZDF_Search: Anpassung ZDF_Search_PATH an geänderte ZDF-Parameter.
Main_NEW (ARDnew): Verzicht auf fehlende Variable summ für Suche-Button
(verhinderte Öffnen des ARD-Menüs).
get_json_content (ARDnew): Codec-Error gefixt mit py2_encode(page) bei
Expand All @@ -25,7 +43,6 @@ CHANGE HISTORY
307 für Redirects,
Addon-Wicki: Hinweis auf Proxy-Nutzung ergänzt und Verlinkung mit Beitrag
@forrester # 3.735 vom 03.08.2024
https://www.kodinerds.net/thread/64244-release-kodi-addon-ardundzdf/?postID=760618#post760618
get_VideoAudio, get_content_json (TagesschauXL): Anpassung an geänderte
eingebettete Playerdaten für Investigativ, Faktenfinder, Podcasts und Audios.

Expand Down
3 changes: 2 additions & 1 deletion resources/lib/TagesschauXL.py
Original file line number Diff line number Diff line change
Expand Up @@ -507,7 +507,7 @@ def XL_Search(query='', pagenr=''):
PLog("cnt_video: %d, cnt_audio: %d" % (cnt_video, cnt_audio))

if cnt_video == 0 and cnt_audio == 0:
msg1 = u'keine videos und Audios gefunden'
msg1 = u'keine Videos und Audios gefunden'
msg2 = query
icon = ICON_MAINXL
xbmcgui.Dialog().notification(msg1,msg2,icon,3000)
Expand Down Expand Up @@ -759,6 +759,7 @@ def get_content_json(item):
tag=""; img=""

if "playerType" not in obj: # falsches Format
PLog("missing_playerType")
return False,"","","","","",""

typ = obj["playerType"]
Expand Down
4 changes: 3 additions & 1 deletion resources/lib/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -3916,12 +3916,14 @@ def PlayAudio(url, title, thumb, Plot, header=None, FavCall=''):
# Aufruf: PlayVideo
# 04.03.2022 Header für ZDF-Url erforderl. (Error "502 Bad Gateway")
# 21.01.2023 dialog optional für add_UHD_Streams (ohne Dialog)
# Rückage url oder False
def url_check(url, caller='', dialog=True):
PLog('url_check:')

if url.startswith('http') == False: # lokale Datei
if os.path.exists(url):
return True
PLog("local_file")
return url
else:
if dialog:
msg2 = url
Expand Down

0 comments on commit 370f59e

Please sign in to comment.