From 471cda49ce0d24b7eb057471781adb489d787ee7 Mon Sep 17 00:00:00 2001 From: Nicolas Boisselier Date: Wed, 3 Jul 2019 17:23:12 +0100 Subject: [PATCH] addon.py --- addon.py | 234 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 142 insertions(+), 92 deletions(-) diff --git a/addon.py b/addon.py index f330df9..194cd54 100644 --- a/addon.py +++ b/addon.py @@ -8,25 +8,81 @@ import sys import os import re,json - -def getParams(): - return dict(urlparse.parse_qsl(self.sysARG[2][1:])) - - -def resolve_url(url): - if TEST: - return url - import urlresolver - duration=7500 #in milliseconds - message = "Cannot Play URL" - stream_url = urlresolver.HostedMediaFile(url=url).resolve() - # If urlresolver returns false then the video url was not resolved. - if not stream_url: - dialog = xbmcgui.Dialog() - dialog.notification("URL Resolver Error", message, xbmcgui.NOTIFICATION_INFO, duration) - return False - else: - return stream_url +import datetime + +# NB 03.07.19 def getParams(): +# NB 03.07.19 return dict(urlparse.parse_qsl(self.sysARG[2][1:])) +# NB 03.07.19 +# NB 03.07.19 def resolve_url(url): +# NB 03.07.19 if TEST: +# NB 03.07.19 return url +# NB 03.07.19 import urlresolver +# NB 03.07.19 duration=7500 #in milliseconds +# NB 03.07.19 message = "Cannot Play URL" +# NB 03.07.19 stream_url = urlresolver.HostedMediaFile(url=url).resolve() +# NB 03.07.19 # If urlresolver returns false then the video url was not resolved. +# NB 03.07.19 if not stream_url: +# NB 03.07.19 dialog = xbmcgui.Dialog() +# NB 03.07.19 dialog.notification("URL Resolver Error", message, xbmcgui.NOTIFICATION_INFO, duration) +# NB 03.07.19 return False +# NB 03.07.19 else: +# NB 03.07.19 return stream_url +# NB 03.07.19 +# NB 03.07.19 def getParams(): +# NB 03.07.19 param=[] +# NB 03.07.19 paramstring=sys.argv[2] +# NB 03.07.19 +# NB 03.07.19 if len(paramstring)>=2: +# NB 03.07.19 params=sys.argv[2] +# NB 03.07.19 cleanedparams=params.replace('?','') +# NB 03.07.19 +# NB 03.07.19 if (params[len(params)-1]=='/'): +# NB 03.07.19 params=params[0:len(params)-2] +# NB 03.07.19 +# NB 03.07.19 pairsofparams=cleanedparams.split('&') +# NB 03.07.19 param={} +# NB 03.07.19 +# NB 03.07.19 for i in range(len(pairsofparams)): +# NB 03.07.19 splitparams={} +# NB 03.07.19 splitparams=pairsofparams[i].split('=') +# NB 03.07.19 if (len(splitparams))==2: +# NB 03.07.19 param[splitparams[0]]=splitparams[1] +# NB 03.07.19 +# NB 03.07.19 return param +# NB 03.07.19 +# NB 03.07.19 def addLink(name,url,iconimage,description): +# NB 03.07.19 ok = True +# NB 03.07.19 li = xbmcgui.ListItem(name, iconImage="DefaultVideo.png", thumbnailImage=iconimage) +# NB 03.07.19 li.setInfo( type="Video", infoLabels={ "Title": name , "Plot": description} ) +# NB 03.07.19 ok = xbmcplugin.addDirectoryItem(handle=addon_handle,url=url,listitem=li) +# NB 03.07.19 return ok +# NB 03.07.19 +# NB 03.07.19 def addDir(name,url,mode,iconimage,description): +# NB 03.07.19 u = sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name) +# NB 03.07.19 ok = True +# NB 03.07.19 li = xbmcgui.ListItem(name, iconImage="DefaultFolder.png", thumbnailImage=iconimage) +# NB 03.07.19 li.setInfo( type="Video", infoLabels={ "Title": name , "Plot": description} ) +# NB 03.07.19 ok = xbmcplugin.addDirectoryItem(handle=addon_handle,url=u,listitem=li,isFolder=True) +# NB 03.07.19 return ok +# NB 03.07.19 +# NB 03.07.19 def ytUrl(id): +# NB 03.07.19 #return 'http://www.youtube.com/watch?v='+id +# NB 03.07.19 import youtube_dl +# NB 03.07.19 ydl = youtube_dl.YoutubeDL({'outtmpl': '%(id)s%(ext)s', 'quiet': True}) +# NB 03.07.19 with ydl: +# NB 03.07.19 result = ydl.extract_info( +# NB 03.07.19 'http://www.youtube.com/watch?v='+id, +# NB 03.07.19 download = False, +# NB 03.07.19 ) +# NB 03.07.19 +# NB 03.07.19 if 'entries' in result: +# NB 03.07.19 # Can be a playlist or a list of videos +# NB 03.07.19 video = result['entries'][0] +# NB 03.07.19 else: +# NB 03.07.19 # Just a video +# NB 03.07.19 video = result['formats'][0]['url'] +# NB 03.07.19 +# NB 03.07.19 return video def getUrl(url): if sys.version_info[0]>2: @@ -47,63 +103,6 @@ def getUrl(url): return urllib2.urlopen(req).read() #return urllib2.urlopen(url).read() -def getParams(): - param=[] - paramstring=sys.argv[2] - - if len(paramstring)>=2: - params=sys.argv[2] - cleanedparams=params.replace('?','') - - if (params[len(params)-1]=='/'): - params=params[0:len(params)-2] - - pairsofparams=cleanedparams.split('&') - param={} - - for i in range(len(pairsofparams)): - splitparams={} - splitparams=pairsofparams[i].split('=') - if (len(splitparams))==2: - param[splitparams[0]]=splitparams[1] - - return param - -def addLink(name,url,iconimage,description): - ok = True - li = xbmcgui.ListItem(name, iconImage="DefaultVideo.png", thumbnailImage=iconimage) -# NB 18.04.19 li.setInfo( type="Video", infoLabels={ "Title": name } ) - li.setInfo( type="Video", infoLabels={ "Title": name , "Plot": description} ) - ok = xbmcplugin.addDirectoryItem(handle=addon_handle,url=url,listitem=li) - return ok - -def addDir(name,url,mode,iconimage,description): - u = sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name) - ok = True - li = xbmcgui.ListItem(name, iconImage="DefaultFolder.png", thumbnailImage=iconimage) - li.setInfo( type="Video", infoLabels={ "Title": name , "Plot": description} ) - ok = xbmcplugin.addDirectoryItem(handle=addon_handle,url=u,listitem=li,isFolder=True) - return ok - -def ytUrl(id): - #return 'http://www.youtube.com/watch?v='+id - import youtube_dl - ydl = youtube_dl.YoutubeDL({'outtmpl': '%(id)s%(ext)s', 'quiet': True}) - with ydl: - result = ydl.extract_info( - 'http://www.youtube.com/watch?v='+id, - download = False, - ) - - if 'entries' in result: - # Can be a playlist or a list of videos - video = result['entries'][0] - else: - # Just a video - video = result['formats'][0]['url'] - - return video - #from kodiswift import xbmcgui #from kodiswift import Plugin #plugin = Plugin() @@ -118,6 +117,7 @@ def index(): #__language__ = addon.getLocalizedString # NB 22.04.19 __icon__ = addon.getAddonInfo('icon') # NB 22.04.19 __fanart__ = addon.getAddonInfo('fanart') + fanart = addon.getAddonInfo('fanart') addon_handle = int(sys.argv[1]) xbmcplugin.setContent(addon_handle, 'movies') sys.stderr = open(os.devnull, "w") @@ -126,30 +126,80 @@ def index(): for row in json.loads(content): #row['link'] = ytUrl(row['id']) #row['link'] = resolve_url(row['link']) + info = { + 'title': row['title'], + 'writer': row['title'], + 'plotoutline': row['title'], + 'originaltitle': row['title'], + 'tagline': row['title'], + 'link': row['link'], + 'plot': row['description'], + } + + if 'created' in row: + date = datetime.datetime.strptime(row['created'],'%Y-%m-%d %H:%M:%S') + info['year'] = date.year + info['premiered'] = date.strftime('%Y-%m-%d') #'-'.join([date.year,date.month,date.day]) + info['dateadded'] = row['created'] + info['date'] = row['created'] + info['aired'] = row['created'] + if 'id' in row: - row['link'] = 'plugin://plugin.video.youtube/play/?video_id='+row['id'] + info['link'] = 'plugin://plugin.video.youtube/play/?video_id='+row['id'] + #row['premiered'] if TEST: - print('\t'.join([ - row['lang'], - row['title'], - row['description'], - row['id'], - row['link'], - ])) - break + print(info) +# NB 03.07.19 print('\t'.join([ +# NB 03.07.19 row['lang'], +# NB 03.07.19 row['title'], +# NB 03.07.19 row['description'], +# NB 03.07.19 row['id'], +# NB 03.07.19 row['link'], +# NB 03.07.19 ])) +# NB 03.07.19 break else: - iconimage = 'https://i1.ytimg.com/vi/' + row['id'] + '/mqdefault.jpg' - title = row['title'] +' - ' + row['description'] - li = xbmcgui.ListItem(title, iconImage="DefaultVideo.png", thumbnailImage=iconimage) + # * default + # * mqdefault + # * hqdefault + # * sddefault + + defaultImage = 'DefaultVideo.png' + iconurl = 'https://i1.ytimg.com/vi/' + row['id'] + size1Image = iconurl + '/default.jpg' + size21Image = iconurl + '/mqdefault.jpg' + size3Image = iconurl + '/hqdefault.jpg' + size4Image = iconurl + '/sddefault.jpg' + thumbnailImage = iconurl + '/mqdefault.jpg' + label = row['title'] +' - ' + row['description'] + + if 0: + info['plot'] = 'plot: '+info['plot'] + info['tvshowtitle'] = 'tvshowtitle: '+info['title'] + info['writer'] = 'writer: '+info['writer'] + info['tagline'] = 'tagline: '+info['tagline'] + info['originaltitle'] = 'originaltitle: '+info['originaltitle'] + info['plotoutline'] = 'plotoutline: '+info['plotoutline'] + label = 'label: '+label + + li = xbmcgui.ListItem(label, iconImage=defaultImage)#, thumbnailImage=size1Image) #row['link'] = build_url({'mode' :'play', 'playlink' : row['link']}) #li.setProperty('IsPlayable' , 'true') - li.setInfo( 'video', infoLabels={ - 'title': row['title'], - 'plot': row['description'] + li.setInfo('video', infoLabels=info) + li.setArt({ + 'thumb': size3Image, + 'poster': size3Image, + 'banner': size21Image, + 'fanart': size4Image, + 'clearart': fanart, + 'clearlogo': fanart, + 'landscape': fanart, }) + #li.setLabel('setLabel') + #li.setLabel2('setLabel2') + #li.setThumbnailImage(thumbnailImage) - xbmcplugin.addDirectoryItem(handle=addon_handle,url=row['link'],listitem=li) + xbmcplugin.addDirectoryItem(handle=addon_handle,url=info['link'],listitem=li) # NB 17.04.19 url = 'https://nbdom.net/data/en/911-experiments-The_Force_Behind_the_Motion.mp4' # NB 17.04.19 li = xbmcgui.ListItem('My First Video!', iconImage='DefaultVideo.png') -- 2.47.3