Plugin.video zum selbst machen

  • Ich habe hier ein tolles Tool zum selber bauen einees eigenen Plugin.Video.
    Grundlagen sind schon selbst erklären.
    - icons Datei mit den Pic hier z.B nur 1 und 2
    - icon.png (für Logo)
    - fanart.jpg (Background)
    - addon.py
    - addon.xml
    - data.xml
    Addon.py

    Spoiler anzeigen

    import urllib,urllib2,xbmcplugin,xbmcgui,xbmc,xbmcaddon,os,sys,re

    addon = xbmcaddon.Addon()
    plugin_handle = int(sys.argv[1])
    xbmcplugin.setContent(plugin_handle, 'movies')

    def add_video_item(url, infolabels, img=''):
    listitem = xbmcgui.ListItem(infolabels['title'], iconImage=img, thumbnailImage=img)
    listitem.setInfo('video', infolabels)
    listitem.setProperty('IsPlayable', 'false')
    xbmcplugin.addDirectoryItem(plugin_handle, url, listitem)
    return

    try:
    f = open(os.path.join(addon.getAddonInfo('path'), "data.txt"), 'r')
    text = f.read()
    f.close()
    except:
    exit()

    for line in text.split('\n'):
    if '*' in line:
    try:
    url_name_icon = line.split('*')
    add_video_item(url_name_icon[0],{ 'title': url_name_icon[1]}, os.path.join(os.path.join(addon.getAddonInfo('path'), "icons"), url_name_icon[2]))
    except:
    exit()

    xbmcplugin.endOfDirectory(plugin_handle)
    sys.exit(0)


    Addon.xml

    Spoiler anzeigen

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <addon id="plugin.video.testaddon" name="Name Video" version="1.0.0" provider-name="Dein Name">
    <requires>
    <import addon="xbmc.python" version="2.1.0" />
    </requires>
    <extension point="xbmc.python.pluginsource"
    library="addon.py">
    <provides>video</provides>
    </extension>
    <extension point="xbmc.addon.metadata">
    <platform>all</platform>
    <summary>Name Video</summary>
    <description>Dein XML Text ?</description>
    </extension>
    </addon>


    data.txt

    Spoiler anzeigen

    Hier jetzt meine große Frage.
    Welchen Code muß ich eingeben damit die data.txt und die icons Datei vom Webhoster abrufbar sind.
    Grund;
    Damit wenn Änderungen Ergänzungen auf dem Hoster geschehen und nicht manuell in der ZIP.
    So das wenn dass Addon gestartet wird auch gleich alles aktualisiert wird.

    Denn so wie es nun ist. Muß die Zip jedes mal neu installiert werden damit dann auch die Neuerungen übernommen werden

    Danke für Eure Hilfe ich bin mehr wie ein Frischling was das PY an geht und versteh einfach nicht so schnell wie ich Ideen habe :D danke
    Mfg

  • Genau ... habe es mal versucht aber komme nicht ran.
    Addon.py neu zum FTP = Webhoster

    Spoiler anzeigen


    import urllib,urllib2,xbmcplugin,xbmcgui,xbmc,xbmcaddon,os,sys,re

    addon = xbmcaddon.Addon()
    plugin_handle = int(sys.argv[1])
    xbmcplugin.setContent(plugin_handle, 'movies')

    def add_video_item(url, infolabels, img=''):
    listitem = xbmcgui.ListItem(infolabels['title'], iconImage=img, thumbnailImage=img)
    listitem.setInfo('video', infolabels)
    listitem.setProperty('IsPlayable', 'false')
    xbmcplugin.addDirectoryItem(plugin_handle, url, listitem)
    return

    try:
    url = 'http://www.kodiheiko.hol.es/Kodi/How_to_do_Videos/data.txt'
    text = urllib2.urlopen(url).read()
    except:
    exit()

    for line in text.split('\n'):
    if '*' in line:
    try:
    url_name_icon = line.split('*')
    add_video_item(url_name_icon[0],{ 'title': url_name_icon[1]}, os.path.join(os.path.join(addon.getAddonInfo('path'), "icons"), url_name_icon[2]))
    except:
    exit()

    xbmcplugin.endOfDirectory(plugin_handle)
    sys.exit(0)

    Habe dort nun die Datei icons mit den bild.jpg liegen und data.txt

    Welchen es script brauche ich damit ich dort zugreifen kann.
    http://www.kodiheiko.hol.es/Kodi/How_to_do_Videos/
    http://www.kodiheiko.hol.es/Kodi/How_to_do_Videos/data.txt
    http://www.kodiheiko.hol.es/Kodi/How_to_do_Videos/icons/

  • so die source deiner Seite aus.

    HTML
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html> <head>  <title>Index of /Kodi/How_to_do_Videos</title> </head> <body><h1>Index of /Kodi/How_to_do_Videos</h1><ul><li><a href="/Kodi/"> Parent Directory</a></li><li><a href="Quelle und MOD Fix.avi"> Quelle und MOD Fix.avi</a></li><li><a href="Quellen_angabe.avi"> Quellen_angabe.avi</a></li><li><a href="data.txt"> data.txt</a></li><li><a href="icons/"> icons/</a></li></ul></body></html>

    ich kann nicht verstehen was du mit dem Textfile willst.

    öffne die url mit urllib2
    und du hast den Titel und den link zum Video so das du sie über regex parsen kannst.

    Gruss Jan

    verstehst du was ich meine?

  • Sorry das ich nicht alles verstehe .. aber die Textfile dienst ja dazu das sie im Addon die MovieURL / MovieNAME und Bild anzeigt.
    Ich habe von Parsen keine Ahnung und habe gehofft das man mich leichter versteht.
    Habe das Addon gezeigt, die URL wo alles begraben ist, was dort zu finden ist.

    Mein verlangen ist, extern auf die Textfile zu greifen.
    Damit Änderungen an FilmeUrl / Namen / Bilder ergänzt werden können OHNE das zip neu zu installieren.

    Ich hatte gehofft hier einen Addon.py Schnipsel zu bekommen , das es läuft.

  • Ich fummel und kombiniere schon seit Tagen ... ich hätte auch heute noch gar nichts erwartet.
    Ich bin Dir sehr sehr dankbar ... natürlich kann ich warten und wenn ich Dein Werk sehe.
    Denke ich es auch zu verstehen .... aber ich brauch da wirklich Hilfe. Das ist mir alles viel zu neu.

    Ich bin interessiert und voller taten dran ..... danke

  • Ich fummel und kombiniere schon seit Tagen ... ich hätte auch heute noch gar nichts erwartet.
    Ich bin Dir sehr sehr dankbar ... natürlich kann ich warten und wenn ich Dein Werk sehe.
    Denke ich es auch zu verstehen .... aber ich brauch da wirklich Hilfe. Das ist mir alles viel zu neu.

    Ich bin interessiert und voller taten dran ..... danke


    Das wird so lange die Videos mit .avi enden funktionieren (ist nicht die einzige Möglichkeit)
    Solltest du den Text-File nicht mehr in der html haben .
    Der ja .text beinhaltet könntest du auch
    match=re.findall('</li>\n<li><a href="(.+?.\w+)">(.*?)</a>',html,re.S) verwenden und würdest das selbe Ergebnis erreichen.
    Für den Zugriff auf die icons müßtest Du noch einen Request machen da ich das aber zuviel finde würde ich ein Standart -Icon verwenden

  • Weiter gehts:

    Da es ja Deine Seite ist und Dun nicht so schnell etwas verändern wirst.

    Kannst Du die ganze Sache auch kürzen und den Regex extern platzieren (das ist sowieso immer besser ,da Du dann nicht im Code selber rumfummeln mußt sondern nur die Variable die den Regex hält änderst).
    Außerdem werden wir noch das .avi aus dem title mit replace entfernen und ein paar code Zeilen sparen da wir match nicht abfragen (wie gesagt nur dann machen wenn es Deine Seite ist und Du sowieso der bist der etwas ändert an der eigenen Seite)
    Die Variable r hält jetzt den Regex.

    Da es immer besser ist Funktionen zu erstellen die man dann vielleicht in anderen Addons auch gebrauchen kann .
    Erstellen wir eine neue Funktion geturl(url).
    Diese spricht die url an öffnet sie ,liest den html code aus ,schließt die url und übergibt mit return die Daten.

    Der Code sieht dann so aus:

    Wie Dir sicherlich aufgefallen ist kommt die Url ''http://www.kodiheiko.hol.es/Kodi/How_to_do_Videos/' zweimal im Code vor .
    Da das nicht optimal ist und wir den Code so kurz und effektiv wie möglich halten wollen ohne dabei das Erstellen von Funktionen zu Vergessen (die man vielleicht in einem anderem addon auch verwenden kann).

    schreiben wir den Code etwas um .
    Die Variable Base_url brauchen wir .
    Sonst würden wir in der Funktion getindex(url) -url='%s%s' % (base_url,url) nicht zum gewünchten Ergebnis kommen.

    Nebenbei die Zeile url='%s%s' % (base_url,url) definiert die Variable url neu und setzt mit der Format Anweisung 2 Strings zusammen.
    Sicherlich könnte man auch einfach base_url+url schreiben aber öfter braucht man auch die Möglichkeit innerhalb einer Zeichenkette einen String einzusetzen.

    Beispiel:
    search='Bones'
    test='Wir suchen den Film %s der uns sehr wichtig ist.' % search
    print test

    ergibt: Wir suchen den Film Bones der uns sehr wichtig ist.

    Beispiel 2:
    search='Bones'
    test='
    Wir suchen den Film '+search+' der uns sehr wichtig ist.'

    ergibt: Wir suchen den Film Bones der uns sehr wichtig ist.

    Beispiel 1 ist eleganter ,einfacher zu schreiben und gerade bei mehr als einen String den wir einsetzen wollen mächtiger und kürzer.

    Ok, nun wieder zu verkürzten Code des zukünftigen Addons:

    Code
    import urllib2import rer='</li>\n<li><a href="(.+?.avi)">(.*?)</a>'url='http://www.kodiheiko.hol.es/Kodi/How_to_do_Videos/'base_url=urldef geturl(url):    request=urllib2.Request(url)        response=urllib2.urlopen(request)    data=response.read()    response.close()    return data    def getindex(url):    html=geturl(url)    for url,title in re.findall(r,html,re.S):        url='%s%s' % (base_url,url)        title=(title).replace('.avi','')        print title        print url                  getindex(url)

    Ergebnis der Print Anweisung dieses Scripts ist:

    Code
    Quelle und MOD Fixhttp://www.kodiheiko.hol.es/Kodi/How_to_do_Videos/Quelle und MOD Fix.avi Quellen_angabehttp://www.kodiheiko.hol.es/Kodi/How_to_do_Videos/Quellen_angabe.avi


    Hast Du das soweit verstanden?

  • Ok ich gehe mal davon aus Das Du Dich damit beschäftigt hast!

    hier kommt nun der Code für Deine addon.py

    die Funktion geturl(url) habe ich nochmals geändert da wir für die neue Funktion AddLink
    den import von urllib brauchen und die Funktion geturl(url) auch mit der urllib funktionieren würde.
    Wir sparen und damit einen import (urllib2)
    Die
    addonID = 'plugin.video.test' mußt Du zu Der id ändern die Du in der addon.xml angegeben hast.
    Die icon.png und fanart.jpg müssen sich im Addon Ordner befinden.

    Python
    #!/usr/bin/python# -*- coding: utf-8 -*-import urllibimport sysimport reimport osimport xbmcpluginimport xbmcguiimport xbmcaddonaddonID = 'plugin.video.test'addon = xbmcaddon.Addon(id=addonID)home = addon.getAddonInfo('path').decode('utf-8')icon = xbmc.translatePath(os.path.join(home, 'icon.png'))fanart = xbmc.translatePath(os.path.join(home, 'fanart.jpg'))pluginhandle = int(sys.argv[1])r='</li>\n<li><a href="(.+?.avi)">(.*?)</a>'url='http://www.kodiheiko.hol.es/Kodi/How_to_do_Videos/'base_url=urldef geturl(url):        response=urllib.urlopen(url)    data=response.read()    response.close()    return data    def getindex(url):    html=geturl(url)    for url,title in re.findall(r,html,re.S):        url='%s%s' % (base_url,url)        name=(title).replace('.avi','')        addLink(name,url,1,icon)    xbmcplugin.endOfDirectory(pluginhandle)        def playVideo(url):    listitem = xbmcgui.ListItem(path=url)    xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)    def addLink(name,url,mode,iconimage):        u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&iconimage="+urllib.quote_plus(iconimage)+"&fanart="+urllib.quote_plus(fanart)        ok=True        liz=xbmcgui.ListItem(name, iconImage="DefaultVideo.png", thumbnailImage=iconimage)        liz.setInfo( type="Video", infoLabels={ "Title": name } )        liz.setProperty('IsPlayable', 'true')        liz.setProperty('fanart_image', fanart)        ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz)        return okdef 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                params=get_params()name=Nonemode=Noneiconimage=Nonetry:        url=urllib.unquote_plus(params["url"])except:        passtry:        name=urllib.unquote_plus(params["name"])except:        passtry:        iconimage=urllib.unquote_plus(params["iconimage"]) except:        passtry:        desc=urllib.unquote_plus(params["desc"]) except:        passtry:        fanart=urllib.unquote_plus(params["fanart"])except:        pass                              try:        mode=int(params["mode"])except:        passif mode==None:    getindex(url)        elif mode==1:    playVideo(url)

    So sieht es in Kodi aus:

    Externer Inhalt db.tt
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Externer Inhalt db.tt
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Ich hoffe das hilft Dir !

    Gruß Jan


    EDIT 1:

    Hast Du das Icon selbst erstellt?

    Wenn ja, würde ich mich freuen wenn Du mir auch ein paar Icons im selben Style aber ohne 123 dafür mit verschiedenen Texten erstellen könntest.

  • Sorry , hatte zwar einen schnellen Blick mal rein geworfen und bin dank Familie noch zu nichts gekommen.
    Ich bin stolz einen so guten Dozenten zu haben und mach mich gerde mal ran.
    (wenn es nun endlich die Familie zu lässt :D )

    Sorry, ich hatte mit dieser Geschwindigkeit der Hilfe nicht erwartet ...vielen vielen dank !!!


    Edit ; Jaha und juhu ... Ihr seit die besten!! Hat alle super funktioniert ... vielen viele dank.

    Könnte ich dem ganzen noch im Nachhinein erweitern mit anderen Movie Formaten ? MP4 , FLV ... usw ??

  • Sorry , hatte zwar einen schnellen Blick mal rein geworfen und bin dank Familie noch zu nichts gekommen.
    Ich bin stolz einen so guten Dozenten zu haben und mach mich gerde mal ran.
    (wenn es nun endlich die Familie zu lässt :D )

    Sorry, ich hatte mit dieser Geschwindigkeit der Hilfe nicht erwartet ...vielen vielen dank !!!

    kein Problem.Habe das ja nur neben den alltäglichen Sachen gemacht.
    Wenn du das icon selbst erstellt hast würde ich mich freuen wenn Du mir mit ein paar Icons aushelfen könntest.

    Gruss Jan

  • brauche für mein bs addon ein paar thumbs für die verschiedenen Genres sowie a-z ,suche und zufall.

    Dein icon gefällt mir sehr gut nur würde ich halt anstatt der zahlen lieber eine bild aus einer allgemein bekannten serie eines genres und den schriftzug des genres sowie für suche ein symbol (lupe) und für zufall ein paar würfel haben.

    Gruss Jan

    edit1: oder eben nur den titel des genres .
    So wie die 2 in deinem icon hervorgehoben ist .

  • Sorry , hatte zwar einen schnellen Blick mal rein geworfen und bin dank Familie noch zu nichts gekommen.
    Ich bin stolz einen so guten Dozenten zu haben und mach mich gerde mal ran.
    (wenn es nun endlich die Familie zu lässt :D )

    Sorry, ich hatte mit dieser Geschwindigkeit der Hilfe nicht erwartet ...vielen vielen dank !!!


    Edit ; Jaha und juhu ... Ihr seit die besten!! Hat alle super funktioniert ... vielen viele dank.

    Könnte ich dem ganzen noch im Nachhinein erweitern mit anderen Movie Formaten ? MP4 , FLV ... usw ??

    wenn du den verweis auf das textfile in der html entfernst ,ja!
    Wenn das ja ne richtige Website wäre könntest du auch noch ne Beschreibung und das thumb für das jeweilige video in deiner html setzen .So könntest Du dann auch ein schöneres Addon mit Beschreibung des Videos usw. erhalten.

    Gruss Jan

  • Sehr schön :D Ich freue mich heute wie ein kleines Kind mit seinem neuen Spielzeug :D

    Externer Inhalt img5.fotos-hochladen.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.


    Externer Inhalt img5.fotos-hochladen.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • Für das Alphabet ....Test Bild 1

    Externer Inhalt img5.fotos-hochladen.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Externer Inhalt www.fotos-hochladen.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Externer Inhalt img5.fotos-hochladen.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!