Addon hilfe

  • hallo,

    ich bin dabei ein addon zu erstellen welches im grundsatz auch schon fertig ist.
    habe jedoch probleme einen Download Link einzufügen.

    ich habe es so gemacht das ich die ergebnisse öffnen kann, die gescraped wurden, und dort dann erstmal der stream zu finden ist.
    hier möchte ich nun zusätzlich einen Download einfügen.
    Der Download selbst funktioniert auch jedoch wird automatisch beim öffnen des ersten links die datei gedownloaded was erst passieren soll wenn ich download öffne.

    ein snippet aus meinem script sieht wie folgt aus::
    def index (url):
    ..
    ..
    ..
    for name,url,thumb in match:
    addDir(name,url,2,thumb)
    xbmcplugin.endOfDirectory(pluginhandle)

    def VIDEOLINKS(url,name):
    ..
    ..
    ..
    for url in match:
    addLink(name,url,'') --------> Fügt den stream ein.
    addDir('Download',DownloaderClass(str(match1),track),'') -----> sollte mir den Download link anzeigen und beim öffnen von Download die entsprechende Klasse ansprechen.

    Jedoch wird diese sofort beim aufruf des Index - streams ausgeführt.

    Ich danke schonmal für etwaige Hilfe :D

  • Code
    for url in match:
        addLink(name,url,'')
        addDir('Download',DownloaderClass(str(match1),track),'')


    Du übergibst eine DownloaderClass-Instanz - dementsprechend wird bei der Übergabe bereits der Code in der Klasse ausgeführt. Du müsstest auch hier wieder mit einer Art Callback arbeiten.

  • Plugins funktionieren ja auf die Art, dass du ListItems (die entweder ein Verzeichnis oder aber abspielbar sind) hinzufügst und dann endOfDirectory() aufrufst. Das Plugin wird bei jedem Vorgang gestartet und wieder beendet. Diese ListItems haben eine URL die entweder zurück auf dein Plugin oder zu einem abspielbaren Mediafile zeigt. Bei ersterem setzt du ja Schlüsselwörter in diese Url die du dann beim nächsten Aufruf abfragst (manche benutzen "mode=1" oder so etwas).

    Du musst also ein ListItem hinzufügen dass in seiner URL "&mode=download" oder so etwas enthält. Wenn der Benutzer nun dieses Item auswählt wird wieder dein Plugin mit der entsprechenden URL aufgerufen und du kannst den Download starten (oder sonst etwas veranstalten ;))

    Aktuell übergibgt dein Code aber kein entsprechendes Schlüsselwort (Callback) sondern eine Instanz der "DownloaderClass"-Klasse).

    Wenn dir immer noch nicht klar ist was ich meine müsstest du mal etwas mehr Code (dann aber bitte bei pastebin oder wenigstens in code-tags) zeigen - dann kann ich dir spezifisch zu deinem Code helfen.

    Grüße

  • hei dersphere,

    schonmal danke für deinen rat.ich habe es auf verschiedene arten und weisen versucht..
    wollte zunächst if action.getID() nutzen das wollte aber nicht so wirklich..dachte action is global und ich kann die taste als bestätigung nutzen.
    Hab es jetzt mit Hilfer eines dialogs gemacht wo man gefragt wird was passieren soll.

    UGHH 0.0.2
    http://www.ziddu.com/download/20691…-0.0.2.zip.html

    hoffe mein script ist nicht allzu amüsant aus sicht eines experten. :D

    jegliche vorschläge, verbesserungen usw. immer gerne her damit.

  • Wenn es funktioniert ist es ok, hab ich nicht geprüft. An deiner Stelle würde ich den Code im Inhaltsverzeichnis etwas vereinfachen.

    Entweder:

    Code
    url='http://www.undergroundhiphop.com/video/index.asp?Category=MusicVideo&Sort=Newest&InHD=All&Null=5&PageLetter='
    p='&Page='
    thumb='http://www.undergroundhiphop.com/images/UGHH_Yellow_DEDFDF_154x85.jpg'
    
    
    addDir('A',url+'A'+p,1,thumb)
    addDir('B',url+'B'+p,1,thumb)

    oder gar:

    Code
    url='http://www.undergroundhiphop.com/video/index.asp?Category=MusicVideo&Sort=Newest&InHD=All&Null=5&PageLetter='
    p='&Page='
    thumb='http://www.undergroundhiphop.com/images/UGHH_Yellow_DEDFDF_154x85.jpg'
    array=[] #array mit alphabet füllen
    
    
    for buchstabe in array:
        addDir(buchstabe,url+buchstabe+p,1,thumb)

    So vereinfacht man die Struktur relativ effektiv.

  • ich habe den vorschlag soweit umgesetzt. spart platz und ist strukturierter. nochmals vielen dank.
    direkt eine weitere Frage. wie kann ich das youtube plugin aufrufen aus einem addon heraus?

    def VIDEOLINKS(url,name):
    req = urllib2.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Firefox/17.0')
    response = urllib2.urlopen(req)
    link=response.read()
    response.close()
    match=re.compile('/embed/(.+?)\"').findall(link)
    for url in match:
    #url = 'plugin://plugin.video.youtube/?action=play_video&videoid=rHa2p8zWmRc'
    url = 'plugin://plugin.video.youtube/?action=play_video&videoid=%s' % match
    addLink(name,url,'')
    xbmcplugin.endOfDirectory(pluginhandle)

    die ID ist soweit ok.Hab auch versucht den link zum testen fix zu setzen sprich direkt die id dran geschrieben.klappt aber auch nicht
    xbmclog sagt dazu:
    22:22:41 T:1194607680 NOTICE: -->Python Interpreter Initialized<--
    22:22:42 T:1194607680 NOTICE: YouTube-3.2.0
    22:22:42 T:1194607680 NOTICE: CommonFunctions-1.2.0
    22:22:44 T:1194607680 ERROR: SetResolvedUrl - called with an invalid handle.

    ----

    hat sich erledigt..war ja auch zu einfach :D

    danke das keiner mich geschubst hat, so dass ich selbst fallen musste xD
    ----

    Einmal editiert, zuletzt von r0tt (5. November 2012 um 23:25)

  • Ich würde vorschladen den Code erst einmal auf einem Code-hoster hochzuladen, z.B. Github oder Google Code.

    Zu Repo: Das xbmcnerds Repo nimmt das Add-on bestimmt auf - für das offizielle Repository müssen ein paar Regeln beachtet werden...

  • Ich würde vorschladen den Code erst einmal auf einem Code-hoster hochzuladen, z.B. Github oder Google Code.

    Zu Repo: Das xbmcnerds Repo nimmt das Add-on bestimmt auf - für das offizielle Repository müssen ein paar Regeln beachtet werden...

    https://github.com/r0tt0r
    meine 2 addons

    also das xmbcnerds repo wäre vollkommen ausreichend und eine ehre meinerseits :)
    gibts hier im bezug auf addon release oä. irgendetwas zu beachten?

Jetzt mitmachen!

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