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 Dec 11, 2022
1 parent 9716353 commit f23bf36
Show file tree
Hide file tree
Showing 8 changed files with 104 additions and 45 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="4.5.5+matrix" provider-name="rols1 (rols1@gmx.de)">
<addon id="plugin.video.ardundzdf" name="ARDundZDF" version="4.5.6+matrix" provider-name="rols1 (rols1@gmx.de)">
<requires>
<import addon="xbmc.python" version="3.0.0"/>
<import addon="script.module.kodi-six" />
Expand Down
4 changes: 2 additions & 2 deletions ardundzdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@

# VERSION -> addon.xml aktualisieren
# <nr>80</nr> # Numerierung für Einzelupdate
VERSION = '4.5.5'
VDATE = '04.12.2022'
VERSION = '4.5.6'
VDATE = '11.12.2022'


# (c) 2019 by Roland Scholz, rols1@gmx.de
Expand Down
14 changes: 13 additions & 1 deletion changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,19 @@ CHANGE HISTORY
max_col 97
--------------

20.11.2022 4.5.5
11.12.2022 4.5.6
SearchWordWork (Modul tools): Hinzufügen neuer Suchwörter begrenzt auf 24,
einschl. Dialog.
Suche in ARD-Mediathek (ARDnew): Berücksichtigung des gewählten Senders
(bisher ARD-Alle), Anpassung in Main_NEW. Bei der MediathekViewWeb-Suche
bleibt es bei ARD-Alle.
get_ARDstreamlinks: Austausch Endung index.m3u8 -> master.m3u8 bei DasErste
und MDR (gegen Startverzög. > 10 sec).
Audio_get_homescreen (Audiothek): Button Stage entfernt (Inhalte in Button
Highlights enthalten).
Kika (Modul childs): Runderneuerung nach Webänderungen.

20.11.2022
ArteMehr (Modul Arte): Link-Ergänzung für Kategorien-Url für Links "Weitere
Beiträge" (analog V4.5.4 in ArteCluster + Beitrag_Liste).
VerpasstWoche: Kopfdoku aktualisiert (Wegfall Classic-Code).
Expand Down
12 changes: 10 additions & 2 deletions resources/lib/EPG.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,11 @@ def thread_getepg(EPGACTIVE, DICTSTORE, PLAYLIST):
# den Abgleich).
# Ablösung der vorherigen Funktion update_tvxml
#
# Details Commits (json):
# https://api.github.com/repos/rols1/Kodi-Addon-ARDundZDF/commits?&page=1&per_page=1
# Details Einzeldatei (json, letzter Commit: committer["date"]):
# https://api.github.com/repos/rols1/Kodi-Addon-ARDundZDF/commits?path=ARDnew.py&page=1&per_page=1
#
def update_single(PluginAbsPath):
PLog('update_single:')
import glob
Expand All @@ -111,7 +116,7 @@ def update_single(PluginAbsPath):
"%s/%s" % (PluginAbsPath, "resources/settings.xml"),
"%s/%s" % (PluginAbsPath, "ardundzdf.py")
]
selected=[0,1,2] # Auswahl-Default: alle, s.u.
selected=[0,1,2] # Auswahl-Default: alle, weiter s.u.

globFiles = "%s/%s/*py" % (PluginAbsPath, "resources/lib")
files = glob.glob(globFiles) # Module -> SINGLELIST
Expand All @@ -135,13 +140,14 @@ def update_single(PluginAbsPath):
page, msg = get_page(path=path)
if page:
Dict("store", cacheID, page) # Cache: aktualisieren

RepoList=[]
items = blockextract('href="/rols1/Kodi-Addon-ARDundZDF/blob/master/', page)
PLog("RepoFiles: %d" % len(items))
for item in items:
f = stringextract('href="', '"', item)
f = f.split("blob/master/")[-1] # Bsp.: resources/lib/ARDnew.py
if f.endswith("init__.py") or f.endswith(".pem"):# skip PY2- + Repo-Leichen
if f.endswith("init__.py") or f.endswith(".pem"): # skip PY2- + Repo-Leichen
continue
RepoList.append(f)
PLog("ModuleRepo: " + str(RepoList)) # Liste github-Module
Expand Down Expand Up @@ -217,6 +223,8 @@ def update_single(PluginAbsPath):
remote_file = "%s%s?%s" % (GIT_BASE, fname, "raw=true")
remote_file = remote_file.replace('\\', '/')
PLog('lade %s' % remote_file)


r = urlopen(remote_file) # Updatedatei auf Github
page = r.read()
if PYTHON3: # vermeide Byte-Error bei py2_decode
Expand Down
102 changes: 66 additions & 36 deletions resources/lib/childs.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
################################################################################
#
# <nr>10</nr> # Numerierung für Einzelupdate
# Stand: 10.12.2022
# Stand: 11.12.2022

# Python3-Kompatibilität:
from __future__ import absolute_import # sucht erst top-level statt im akt. Verz.
Expand Down Expand Up @@ -414,7 +414,7 @@ def Kika_Vorschau():
# 19.11.2022 Verwendung der Websuche (../suche/suche104.html?q=..) - früher nicht
# nutzbar, da script-generiert. Vorherigen Code der Suche über alle Bündelgruppen
# (Kika_VideosBuendelAZ) gelöscht.
# 06.12.2022 Anpassung an Webseitenänderungen
# 06.12.2022 Neu nach Webseitenänderungen
#
def Kika_Search(query=None, title='Search', pagenr=''):
PLog("Kika_Search:")
Expand Down Expand Up @@ -447,7 +447,8 @@ def Kika_Search(query=None, title='Search', pagenr=''):
# ----------------------------------------------------------------------
# 06.12.2022 Neu an Webseitenänderungen
# 1. Durchlauf Buttons Highlights + Cluster
# 2. Durchlauf Cluster ->
# 2. Durchlauf Cluster -> Kika_Rubriken
#
def Kika_Start(show_cluster='', path=''):
PLog("Kika_Start: " + show_cluster)
PLog(path)
Expand Down Expand Up @@ -483,10 +484,15 @@ def Kika_Start(show_cluster='', path=''):
PLog("title: %s, show_cluster: %s" % (title, show_cluster))
summ = "Folgeseiten"
ID = "Start_2"
if title in show_cluster:
img, img_alt = Kika_get_img(item) # 1. Bild
if title and title in show_cluster:
img, img_alt = Kika_get_img(item) # 1. Bild
PLog("found_cluster: " + show_cluster)
Kika_Rubriken(item, title, img, ID='Start_2',li=li) # Seitensteuerung Kika_Rubriken
pos2 = item.find("viewVariant") # boxType begrenzen
PLog(pos2); PLog(item[-60:]) # Check viewVariant
item = item[:pos2]

Kika_Rubriken(page=item, title=title, thumb=img, ID='Start_2',li=li) # Seitensteuerung Kika_Rubriken
break

xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)

Expand Down Expand Up @@ -599,8 +605,8 @@ def Kika_AZ(title='', path=''):
xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)

# ----------------------------------------------------------------------
# 07.12.2022 nach Webänderungen - json-Inhalt ausschneiden (nicht
# json.loads-geeignet)
# 07.12.2022 Neu nach Webänderungen - json-Inhalt ausschneiden,
# nicht json.loads-geeignet
def Kika_get_props(page):
PLog('Kika_get_props:')

Expand All @@ -612,7 +618,7 @@ def Kika_get_props(page):
return page

# ----------------------------------------------------------------------
# 07.12.2022 nach Webänderungen - img + img_alt ermitteln
# 07.12.2022 Neu nach Webänderungen - img + img_alt ermitteln
#
def Kika_get_img(item):
PLog('Kika_get_img:')
Expand All @@ -631,8 +637,8 @@ def Kika_get_img(item):
return img, img_alt

# ----------------------------------------------------------------------
# 07.12.2022 nach Webänderungen - einz. Datensatz auswerten (docType
# videoSubchannel, externalVideo, ..)
# 07.12.2022 Neu nach Webänderungen - einz. Datensatz auswerten
# (docType: videoSubchannel, externalVideo, ..)
# s=Blockitem (z.B. docType)
#
def Kika_get_singleItem(s):
Expand All @@ -644,12 +650,17 @@ def Kika_get_singleItem(s):

s = s.replace('\\"', '*'); s = s.replace(u'\\u0026', u'&')
ext_id = stringextract('externalId":"', '"', s) # Bsp. zdf-SCMS_tivi_vcms_video_1914206-default
api_url = stringextract('url":"', '"', s) # "api":{
if '"api":null' in s: # z.B. ext. Link zu Junior ESC-Abstimmung
api_url=""
typ = "skip_api_null"
else:
api_url = stringextract('url":"', '"', s) # "api":{
stitle = stringextract('title":"', '"', s)

mehrf = True # default
# Einzelvideos: docType":"externalVideo", docType":"video"
if "channel" in typ or typ=="broadcastSeries":
mehrf = True # Folgeseiten
if typ.endswith("ideo"):
mehrf = False # Folgeseiten

date = stringextract('date":"', '"', s)
endDate = stringextract('endDate":"', '"', s)
Expand Down Expand Up @@ -690,7 +701,7 @@ def Kika_get_singleItem(s):
PLog('mehrf: %s, typ: %s, api_url: %s, stitle: %s, thumb: %s, Plot: %s' % (mehrf, typ, path, stitle, thumb, Plot))
return mehrf,typ,path,stitle,thumb,Plot
# ----------------------------------------------------------------------
# 07.12.2022 nach Webänderungen - Cluster ermitteln in
# 07.12.2022 Neu nach Webänderungen - Cluster ermitteln in
# Folgeseiten (path=api_url -> json), docType: videoSubchannel
#
def Kika_Subchannel(path, title, thumb, Plot, li=''):
Expand All @@ -712,19 +723,19 @@ def Kika_Subchannel(path, title, thumb, Plot, li=''):
mediatype='video'

Plot_par = Plot
summ_org = Plot.replace("||", "\n") # Plot hier: tagline + summary
summ_org = Plot.replace("||", "\n") # Plot hier: tagline + summary

featuredVideo = stringextract('"featuredVideo"', '"videosPageUrl"', page)
fanimg=""
if featuredVideo: # kann fehlen
if featuredVideo: # Empfehlung od. 1. Folge | kann fehlen
teaserImage = stringextract('"teaserImage"', '"structure"', page)
if teaserImage:
fanimg, img_alt = Kika_get_img(teaserImage)

mehrf,typ,path,stitle,thumb,Plot = Kika_get_singleItem(featuredVideo)
summ = Plot.replace("||", "\n")

stitle = "[B]Empfehlung: [/B] %s" % stitle # herausgestelltes Video im Web
stitle = "[B]Empfehlung: [/B] %s" % stitle # herausgestelltes Video im Web
fparams="&fparams={'path': '%s', 'title': '%s', 'thumb': '%s', 'Plot': '%s'}" %\
(quote(path), quote(stitle), quote(thumb), quote(Plot))
addDir(li=li, label=stitle, action="dirList", dirID="resources.lib.childs.Kika_SingleBeitrag",
Expand All @@ -746,13 +757,13 @@ def Kika_Subchannel(path, title, thumb, Plot, li=''):
xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)

# ----------------------------------------------------------------------
# 07.12.2022 nach Webänderungen - Folgeseiten ermitteln in
# 07.12.2022 Neu nach Webänderungen - Folgeseiten ermitteln in
# (path=api_url -> json), docType: broadcastSeries
#
# Aufrufer: Kika_Rubriken
def Kika_Series(path, title, thumb, Plot):
PLog('Kika_Series: ' + title)
title_org=title

page, msg = get_page(path)
if page == '':
msg1 = "Fehler in Kika_Series:"
Expand All @@ -763,11 +774,13 @@ def Kika_Series(path, title, thumb, Plot):
Subchannel = stringextract('"videoSubchannel"', '},', page)
api_url = stringextract('url":"', '"', Subchannel)
Kika_Subchannel(api_url, title, thumb, Plot) # -> Seitensteuerung Kika_Rubriken
xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)
xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)

# ----------------------------------------------------------------------
# 07.12.2022 nach Webänderungen - einz. Cluster/Channel/Folgen auswerten
# li + page durch Aufrufer möglich
# 07.12.2022 Neu nach Webänderungen - einz. Cluster/Channel/Folgen
# auswerten
# einz. Datensätze -> Kika_get_singleItem
# li + page durch Aufrufer möglich
def Kika_Rubriken(page, title, thumb, ID='', li='', path=''):
PLog('Kika_Rubriken: ' + ID)
thumb_org=thumb; title_org=title; li_org=li
Expand All @@ -788,24 +801,30 @@ def Kika_Rubriken(page, title, thumb, ID='', li='', path=''):
msg2 = msg
MyDialog(msg1, msg2, '')
return

PLog(page[:100])

items = blockextract('"docType":', page)
PLog(len(items))
for s in items:
mediatype=''
# path: api_url
# path: api_url, neue typ-Varianten in Kika_get_singleItem
# ergänzen:
mehrf,typ,path,stitle,thumb,Plot = Kika_get_singleItem(s) # -> Kika_get_singleItem
tag = Plot.replace('||', '\n')
if typ == "skip_api_null": # fehlende api-Url ausblenden
continue
if typ == "interactiveContent": # Spiele ausblenden
continue
if stitle.endswith("Start"): # Ende Rubrik
if stitle.endswith("Start") or path.endswith("suche104"): # Ende Rubrik
break

if mehrf: # Folgeseiten
if "channel" in typ:
func = "Kika_Subchannel"
if typ == "broadcastSeries":
elif typ == "broadcastSeries" or typ == "link":
func = "Kika_Series"
else:
func = "Kika_Subchannel"
else:
func = "Kika_SingleBeitrag" # einz. Video
if SETTINGS.getSetting('pref_video_direct') == 'true': # Kennz. Video für Sofortstart
Expand Down Expand Up @@ -841,8 +860,11 @@ def Kika_Rubriken(page, title, thumb, ID='', li='', path=''):
addDir(li=li, label=tag, action="dirList", dirID="resources.lib.childs.Kika_Rubriken",
fanart=thumb_org, thumb=R(ICON_MEHR), fparams=fparams, tagline=tag,summary=summ)

xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)

if li_org:
return
else:
xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)


# ----------------------------------------------------------------------
# 04.07.2021 Aus WDR5 KiRaKa wird MausLive - Infoseite:
Expand Down Expand Up @@ -1387,21 +1409,28 @@ def Tonschnipsel():

# ######################################################################
# einzelnes Video
# 07.12.2022 Umbau nach Webänderungen (vormals xml-Seite)
# 07.12.2022 Neu nach Webänderungen (vormals xml-Seite)
# path enthält die api-Seite mit Details. Hier direkt
# weiter mit der assets-Url zu den Videoquellen
# weiter mit der assets-Url zu den Videoquellen (einfaches Anängen
# von /assets klappt nicht bei typ=relatedVideo
#
def Kika_SingleBeitrag(path, title, thumb, Plot):
PLog('Kika_SingleBeitrag: ' + path)
title_org = title

path = path + "/assets"
page, msg = get_page(path)
PLog(msg)
page, msg = get_page(path) # Details mit asset_url
pos = page.find('"assets":{')
page = page[pos:]
PLog("pos: %d" % pos)
asset_url = stringextract('"url":"', '"', page)
PLog("asset_url: " + asset_url)
page, msg = get_page(path=asset_url) # Videoquellen
PLog(msg)

if page == '': # bei Spielen können Videos fehlen
msg1 = "Kika_SingleBeitrag:"
msg2 = "leider finde ich dazu kein Video."
msg3 = "Spiele lassen sich nur im Webbrowser spielen."
msg3 = "Spiele oder Abstimmungen kann ich leider auch nicht."
MyDialog(msg1, msg2, msg3)
return

Expand Down Expand Up @@ -1458,6 +1487,7 @@ def Kika_SingleBeitrag(path, title, thumb, Plot):
xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)

# ------------------------------
# 07.12.2022 angepasst nach Webänderungen
def Kika_VideoMP4get(title, assets):
PLog('Kika_VideoMP4get:')

Expand Down
12 changes: 10 additions & 2 deletions resources/lib/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
from resources.lib.util import *

# Globals
ICON_FILTER = 'icon-filter.png'
ICON_FILTER = 'icon-filter.png'
MAX_LEN = 24

ADDON_ID = 'plugin.video.ardundzdf'
SETTINGS = xbmcaddon.Addon(id=ADDON_ID)
Expand Down Expand Up @@ -91,7 +92,7 @@ def SearchWordTools():
thumb=R('icon_searchwords.png'), tagline=tag, summary=summ, fparams=fparams)

title = u"Suchwort [B]hinzufügen[/B]"
tag = u"ein Suchwort der Liste [B]hinzufügen[/B]"
tag = u"ein Suchwort der Liste [B]hinzufügen[/B] (max. %d)" % MAX_LEN
fparams="&fparams={'action': 'add'}"
addDir(li=li, label=title, action="dirList", dirID="resources.lib.tools.SearchWordWork", fanart=R(FANART),
thumb=R('icon_searchwords.png'), tagline=tag, summary=summ, fparams=fparams)
Expand Down Expand Up @@ -150,6 +151,13 @@ def SearchWordWork(action):

if action == 'add':
PLog("do: " + action)

if len(searchwords) >= MAX_LEN:
msg1 = "Suchwortliste"
msg2 = u'maximale Länge bereits erreicht: [B]%d[/B] ' % max_len
MyDialog(msg1, msg2, '')
return

title = u'Suchwort hinzufügen (Groß/klein egal)'
ret = dialog.input(title, type=xbmcgui.INPUT_ALPHANUM) # Eingabe Suchwort
PLog(ret)
Expand Down
1 change: 1 addition & 0 deletions resources/lib/yt.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,7 @@ def MVWSearch(title, sender, offset=0, query='', home_id='', myfunc=''):
data = MVW_DATA_ALL % (query, offset, lsize)
else: # Suche in einz. Sender / Channel
data = MVW_DATA % (query, sender, offset, lsize)
PLog("data: " + data)

page, msg = get_mvw_page(data)
if page == '':
Expand Down
2 changes: 1 addition & 1 deletion resources/livesenderTV.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<info3>hrefsender enthält Sendernamen passend zu www.ardmediathek.de (ARD-Neu)</info3>
<info4>link: Kennung statt Streamurl möglich, z.B. ZDFsource -> get_ZDFstreamlinks</info4>
<info5>Datei livesenderTV.xml: autom. Update im Modul EPG, thread_getepg()</info5>
<info6>IPTVSource: https://github.com/jnk22/kodinerds-iptv/e297851866d6af270e69da6d1d60f2e938f72860/iptv/kodi/kodi.m3u</info6>
<info6>IPTVSource: https://github.com/jnk22/kodinerds-iptv/blob/e297851866d6af270e69da6d1d60f2e938f72860/iptv/kodi/kodi.m3u</info6>
<info7> Altern.: https://github.com/jnk22/kodinerds-iptv/blob/master/iptv/kodi/kodi.m3u</info7>
</channels_info>

Expand Down

0 comments on commit f23bf36

Please sign in to comment.