Moin,
da tgwtg.com nun offiziell abgeschaltet wurde ist das thatguywiththeglasses addon leider garnicht mehr zu gebrauchen. Neuen Inhalte gab es ja auch schon seit ein paar wochen nicht mehr aber man konnte es immernoch gut nutzen um alte inhalte anzuzeigen und abzuspielen.
Naja weil ich schon immermal mich genauer mit der addon entwicklung beschäftigen wollte und ich heute nichts zu tun hatte dachte ich, versuch dich mal dran ein xbmc/kodi addon zu schreiben.
Ich habe nicht wirklich python programmierkenntnisse aber habe schon etwas gescriptet.
Ich habe mich bei der Entwicklung bis jetzt an das kodi wiki gehalten und dieses etwas veraltete Tutorial:
http://kodi.wiki/view/How-to:Write_plugins_for_XBMC
Was aber noch super funktioniert wie es scheint...
Ich hab bis jetzt nicht viel geschafft aber mein erster Versuch die seite nach den Videolinks zu scrapen hat gut funktioniert und ich stehe jetzt mit dem ID für die blip.tv videos da.
Jetzt komme ich aber leider nicht mehr weiter, wie gebe ich diese jetzt ans blip.tv addon weiter für die wiedergabe.
Ich habe mir natürlich auch den code vom tgwtg addon von AddonScriptorDE aber das ist mir alles noch etwas zu komplex und ich steige nicht völlig durch.
Mein plan war erstmal nur ein ganz einfaches addon wo ich mir die neusten 12 Videos von meinem lieblings Reviewern/Shows ansehen kann.
Das diese mir gelistet werden klappt soweit auch schon aber der playback funktionier leider nicht nicht.
Wenn ich etwas vertrauter mit python werde wollte ich das ganze auch noch weiterentwickeln aber man fäng ja klein an
Hier ist meine Default.py fürs addon.
Bis jetzt listet sie alle 12 aktuellen Videos vom Nostalgia Critic, wenn man ein Video ausgewählt hat öffnet sich ein neues Fenster und hier scheitert dann der playback.
Spoiler anzeigen
import urllib
import urllib2
import socket
import re
import sys
import os
import xbmcplugin
import xbmcgui
import xbmcaddon
#addon = xbmcaddon.Addon()
#addonID = addon.getAddonInfo('id')
addonID = 'plugin.video.channelawesome'
addon = xbmcaddon.Addon(id=addonID)
#socket.setdefaulttimeout(30)
pluginhandle = int(sys.argv[1])
#xbox = xbmc.getCondVisibility("System.Platform.xbox")
#translation = addon.getLocalizedString
#forceViewMode = addon.getSetting("forceViewMode") == "true"
#viewMode = str(addon.getSetting("viewMode"))
addonDir = xbmc.translatePath(addon.getAddonInfo('path'))
icon = os.path.join(addonDir, 'icon.png')
#channelFavsFile = xbmc.translatePath(os.path.join(addon.getAddonInfo('profile'), addonID+".favorites"))
def CATEGORIES():
addDir('Nostalgia Critic','http://channelawesome.com/category/videos/channelawesome/dougwalker/nostalgia-critic/',1,'')
addDir( '','',1,'')
def INDEX(url):
req = urllib2.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
response = urllib2.urlopen(req)
link=response.read()
response.close()
match=re.compile('href="(.+?)" title="Permalink to(.+?)" rel="bookmark">\n\t\t\t\t<img width="300" height="160" src="(.+?)"').findall(link)
for url,name,thumbnail in match:
addDir(name,url,2,thumbnail)
def VIDEOLINKS(url,name):
req = urllib2.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
response = urllib2.urlopen(req)
link=response.read()
response.close()
match=re.compile('<iframe src="http://blip.tv/play/(.+?)?p=1" width="720" height="433" frameborder="0" allowfullscreen></iframe>').findall(link)
for url in match:
addLink(name,url,'')
def get_params():
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):
ok=True
liz=xbmcgui.ListItem(name, iconImage="DefaultVideo.png", thumbnailImage=iconimage)
liz.setInfo( type="Video", infoLabels={ "Title": name } )
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=url,listitem=liz)
return xbmcplugin.setResolvedUrl(pluginhandle, True, liz)
def addDir(name,url,mode,iconimage):
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)
ok=True
liz=xbmcgui.ListItem(name, iconImage="DefaultFolder.png", thumbnailImage=iconimage)
liz.setInfo( type="Video", infoLabels={ "Title": name } )
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
return ok
params=get_params()
url=None
name=None
mode=None
try:
url=urllib.unquote_plus(params["url"])
except:
pass
try:
name=urllib.unquote_plus(params["name"])
except:
pass
try:
mode=int(params["mode"])
except:
pass
print "Mode: "+str(mode)
print "URL: "+str(url)
print "Name: "+str(name)
if mode==None or url==None or len(url)<1:
print ""
CATEGORIES()
elif mode==1:
print ""+url
INDEX(url)
elif mode==2:
print ""+url
VIDEOLINKS(url,name)
xbmcplugin.endOfDirectory(int(sys.argv[1]))
Alles anzeigen
Im bereich def VIDEOLINKS holt sich das addon ja die blip.tv video id, diese muss jetzt ja quasi nur noch an das blip.tv addon weitergeleitet werden für playback, aber hier habe ich sicher über ne stunde erfolglosrumprobiert.
addLink versucht mit diesem code dann einfach die id abzuspielen was natürlich scheitert. Ich habe den code ab so hier gepostet weil er am saubersten war.
Das ganze hat mich zu sehr frustiert deswegen hoffe ich das mir bei dem schritt jemand den entscheidenen tipp geben kann und ich dann in ruhe weiter am rest weiterbasteln kann.
Danke!