[TEST-RELEASE] Video Addon - proxer.me

  • Guten Tag alle zusammen,

    ich habe momentan ein paar Fragen und Probleme mit meinem proxer.me addon und hoffe ihr könnt mir dabei helfen zumind. ein paar dieser Fragen/Probleme zu lösen.
    Vorweg muss ich erstmal erwähnen das ich nicht sonderlich gut in coden bin oder wie man das auch nennen mag/möchte.
    Ich habe das meißte von den alten Plugin Tutorial auf wiki.xbmc.org gelernt (hier ) und den Rest eher durch das trail & error Prinzip mir angeeignet und hoffe dennoch das ihr halbwegs mit meinem addon was anfangen könnt.

    Nun zu den Fragen/Problemen:

    1. XBMC und Captcha Codes - wenn man zu schnell beim Addon die Videohoster wechselt , erscheint auf der Webseite eine Captcha Code Anfrage, sodass man nicht mehr die gewöhnliche HTML erhält sondern nur den Captcha Code link bekommt. Ist es möglich diese Captcha Code Anfrage zu umgehen bzw. das Bild inkl. ein Eingabefeld an XBMC zu übertragen? Selbst nach löschen der Cookies erscheint die Anfrage des Captcha Codes.

    2. Wenn ich z.B. einen Anime aufrufen möchte der mehr als 50 Episoden besitzt , gibt es mehrere Seiten (z.B 1-50 , 51 - 100 usw.) die zusätzlichen Seiten kann ich zwar hinzufügen jedoch werden diese immer Doppelt angezeigt, da der html code 2x vorhanden ist (einmal oben , einmal unten), kann ich dies verhindern? (Das gleiche gilt übrigens auch beim durchblättern der Anime-Liste)

    3. Wenn man beim Addon auf z.B Serien geht so sind die ersten beiden Einträge "Bewertungen" und "Zugriffe" diese möchte jedoch nicht dort haben. Wie kann ich den Addon "sagen" das die ersten beiden Ergebnisse ignoriert werden sollen?

    4. Serien Informationen/Fanart - Lokale Videos kann ich per Scraper wie The TVDB mit zusätzliche Informationen "füttern" und mit passenden Fan-Arts versehen. Ist dies auch mit meinen Addon möglich?

    5. Proxer.me erstellt schon Links für Episoden die noch gar nicht erschienen sind und kennzeichnet Episoden welche schon erschienen sind bzw. schon video embed-codes haben mit einen grünen Play button.
    (hier dazu mal ein Beispiel) Nur finde ich diesen Play Button ( hier der Link des Button selber) nicht im HTML-Code. Könnt ihr mir nen Tipp geben wo ich diesen finde oder ob ich auch ohne diesen Button erkenne ob die Episode bereits online ist?

    So das wären erstmal meine Fragen/Probleme wenn Ihr andere Fehler sieht oder Tipps/Fragen/Anregungen habt, würde ich mich sehr freuen wenn ihr diese hier Postet :)


    // Edit: Dateianhang ist nun auf den neusten Stand

    # MyVideo/faststream Mirror hinzugefügt
    # xbox kompatibel
    # Addon müsste jetzt installierbar sein

    Da das Addon jetzt über 150kb groß ist muss ich es leider wo anders uppen.

    Hier der Downloadlink: anime.proxer.me

  • erstma danke für das addon. ich steh dir, vor allem weil es sich um ein anime addon handelt, zur verfügung.
    für die hauseigenen hd streams hab ich schon was fertig, wenn du die noch mit einbinden möchtest.

    1. wird sicher ip gebunden und nicht umgehbar sein. muss ich mir aber selbst erstma anschauen.
    2. ist sicher irgendwie möglich. muss ich mir aber alles erst anschauen. heute wird das nix mehr.
    3. das gleiche wie 2
    4. da gibts sowas wie meta infos laden. bin ich aber kein freund von und ob das bei animes funktioniert, weiß ich nicht.
    über die seite kann man max die covers mit laden.
    5. wie 2. - ist das wirklich so? so ein quatsch. da könntest du ne msg einbauen, dass der stream noch nicht verfügbar ist.

    du kannst dir gerne meine addons anschauen. im grunde hab ich genauso angefangen wie du und mache auch so weiter^^

  • 1:
    ersteinmal würde ich den code etwas cleaner machen und dein immer wiederkehrendes:


    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')
    req.add_header('Cookie','85e8d029603a16dbec6531182c3a2a18=fkkpavbq9vuldmcs2tra734646; expires=Sat, 16-Nov-2099 03:10:00; path=/; domain=.proxer.me')
    response = urllib2.urlopen(req)
    link=response.read()
    response.close()

    in eine def setzen:


    def getUrl(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')
    req.add_header('Cookie','85e8d029603a16dbec6531182c3a2a18=fkkpavbq9vuldmcs2tra734646; expires=Sat, 16-Nov-2099 03:10:00; path=/; domain=.proxer.me')
    response = urllib2.urlopen(req)
    link=response.read()
    response.close()
    return link

    und dann im addon über content = getUrl(url) oder html = getUrl(url) drauf zugreifen.

    Als nächstes ,wo kommt das cookiefile her, kannst du den nicht über cookielib oder was auch immer auslesen?


    Wenn ich dich richtig verstanden habe erscheint bei zu schnellen hosterwechsel im Addon eine Captcha abfrage die sich nicht auf den Hoster sondern die Seite bezieht.
    Als erstes die Captcha abfragen mußt du programmieren so wie sie es auch im urlresolver sind denn über das Hosterplugin des Urlresolvers erhälts Du zugriff auf das Captcha des jeweiligen Hosters.
    Eine interne Funktion kannes nicht und wird es nicht in xbmc geben.
    Aber warum nutzt du nicht den import von time um eine angemessene Zeit warten zu lassen :

    import time

    time.sleep(12)


    Nextsite:

    In meinen Addons parse ich die next url immer am Anfang einer def und Frage sie dann auch in der def nach der Abfrage des inhalts also url,cover,name
    mit addDir ab und verweise mit meinem mode auf die selbe def.

    Beispiel:
    def Index(url):
    content = getUrl(url)
    pagination=re.compile('<li class=\'nextPage\'data-target.*?href="(.*?)" >',re.DOTALL).findall(content)
    spl=content.split('<li id="cf-video-item_')
    if len(spl)>1:
    for i in range(1,len(spl),1):
    entry=spl[i]
    title=re.compile('title="(.+?)"', re.DOTALL).findall(entry)[0]
    url=re.compile('href="(.+?)"', re.DOTALL).findall(entry)[0]
    thumb=re.compile('src="(.+?)"', re.DOTALL).findall(entry)[0]
    addLink(title,url,"VIDEOLINKS",thumb)
    try: url='http://www.clipfish.de'+pagination[0]
    addDir('Next',url,"Index",Page)
    except:
    pass


    Gruß Jan

  • habs mir jetzt etwas angeschaut:

    1. kann ich nicht reproduzieren. was genau muss ich drücken, damit das kommt?
    2. hier ma ein bsp für gersub

    Code
    pages=re.compile('<p align="center">(.*?)</p>').findall(link)
            match2=re.compile('<a class="menu" data-ajax="true" href="/info/(.+?)">(.+?)</a>').findall(pages[0])


    3. kannst du so lösen wie bei 2; <td colspan="2">(.*?)</td>
    4. + 5. siehe 1. antwort

    und setz das um was jan geschrieben hat. die cookies brauchst du im übrigen nicht.
    bei der hoster auswahl, wärs natürlich schön, wenn du das so einbaust, dass der stream gleich gestartet(addLink) wird und nicht nochmal der playlink kommt.

    und hier ma der code für die proxer hd streams - die seite kannst du vllt noch mit einbauen - http://proxer.me/misc/hdstream#top

    müsstest nur den seitenaufruf abändern.

  • Wenn es nun bald ein eigentständiges Addon dafür gibt kann ich die Seite ja frohen Mutes aus xStream kicken *g*
    zu 4.
    Zusatzinformationen klannst du z.B. mit dem dem script.module.metahandler einfügen. Über TheTVDB erhält man da Infos zu verschiendene Animes aber vermtulich nicht zu allen. Evtl. gobnt es auch Ableger vom metahandler, die sich auf Aniemes spezialisiert haben musst du mal etwas recherchieren.
    Oder du importierst die Animes direkt in die lokale DB dann kannst du direkt die XBMC Scraper verwenden. Das is aber wesentlich aufwendiger als die erste Variante.
    zu1.
    Captches konnte ich jetzt auch keine finden. Aber wie ja schon sagte im urlresolver Code nachschauen z.B. beim 180upload resolver. Falls es ein reCaptcha ist, mal nach script.module.recaptcha googlen, das wurde nie veröffentlicht man muss aber nur glaube nur 1 Zeile ändern dann läuft der Code (behandelt nur die Antwwort auf das Captcha nicht Bildanzeige und Eingabe).

    zu5.
    durchsuchst du den Code etwas "von Hand"? Versuch mal z.B. firebug für FIrefox da kanns du das Element, das du untersuchen willst direkt anklicken und bekommst den Code dazu angezeigt (Reihenfolge von Html/Css-Eigenschaften kann anders sein als im echten Source).

  • Vielen Dank erstmal das ihr euch die Zeit genommen habt und mir so viel Hilfe gibt.

    Ich habe nun folgendes schon einmal geändert:

    - den gesetzten Cookie entfernt (war noch nen Überbleibsel)
    - den Code nen bissle entrümpelt
    - "Folge 1-50" usw. wird nicht mehr doppelt angezeigt
    - HD-Sektion geaddet, inkl. HD-Stream

    Allerdings habe ich momentan noch folgende Probleme:

    - Wenn ich einen Stream mit xbmc.Player().play abspiele erhalte ich ne loop Situation , sobald der Stream zu Ende ist oder ich ihn stoppe, startet er ihn automatisch neu ( konnte das nur mit nen Dummy Ordner (addDir) umgehen, aber ich glaube das war nicht gemeint xD )

    - Die doppelte Anzeige von "Weiter" beim umblättern der Seiten habe ich immer noch , genau das gleiche gilt für "Zugriffe" , "Bewertung" wenn man auf Serien geht.
    Habe wie bei den Episoden per re.compile .findall einmal für die Seiten <td align="right">(.*?)</td> und für das Alphabet <td colspan="2">(.*?)</td> verwendet nur leider erhalte ich keine Treffer


    Das Captcha Problem scheint wohl gelöst zu sein, die hatten anscheinend vorübergehend die Captcha Abfrage aktiviert gehabt. Sollte dieses Problem dennoch wieder auftreten werde ich ne Sleep Funktion nutzen ^^

    Das mit den metahandler schaue ich mir nachher mal an.

    Lynx187 ja ich habe bis jetzt immer mit der "normalen" Seiten-Quelltext Funktion gearbeitet, ab sofort wird dafür firebug genutzt :D

  • Vielen Dank erstmal das ihr euch die Zeit genommen habt und mir so viel Hilfe gibt.

    Ich habe nun folgendes schon einmal geändert:

    - den gesetzten Cookie entfernt (war noch nen Überbleibsel)
    - den Code nen bissle entrümpelt
    - "Folge 1-50" usw. wird nicht mehr doppelt angezeigt
    - HD-Sektion geaddet, inkl. HD-Stream

    Sehr schön

    Allerdings habe ich momentan noch folgende Probleme:

    - Wenn ich einen Stream mit xbmc.Player().play abspiele erhalte ich ne loop Situation , sobald der Stream zu Ende ist oder ich ihn stoppe, startet er ihn automatisch neu ( konnte das nur mit nen Dummy Ordner (addDir) umgehen, aber ich glaube das war nicht gemeint xD )

    ja änder das mal von zum Beispiel:

    xbmc.Player().play(url)

    zu :
    listitem = xbmcgui.ListItem(path=url)
    xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)

    und in deiner addLink def fügst Du:

    liz.setProperty('IsPlayable', 'true') hinzu :

    zum einfacheren Verständnis mal ne example AddLink def von mir:


    def addLink(name,artist,track,url,mode,iconimage):
    u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
    ok=True
    liz=xbmcgui.ListItem(name, iconImage="DefaultVideo.png", thumbnailImage=iconimage)
    liz.setInfo( type="music", infoLabels={ "Artist": artist, "Title": track })
    liz.setProperty('IsPlayable', 'true')
    liz.setProperty('fanart_image', fanart)
    ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz)
    return ok

    - Die doppelte Anzeige von "Weiter" beim umblättern der Seiten habe ich immer noch , genau das gleiche gilt für "Zugriffe" , "Bewertung" wenn man auf Serien geht.
    Habe wie bei den Episoden per re.compile .findall einmal für die Seiten (.*?) und für das Alphabet (.*?) verwendet nur leider erhalte ich keine Treffer

    Sehe ich mir später an.

    Das Captcha Problem scheint wohl gelöst zu sein, die hatten anscheinend vorübergehend die Captcha Abfrage aktiviert gehabt. Sollte dieses Problem dennoch wieder auftreten werde ich ne Sleep Funktion nutzen

    Gut so.

    Das mit den metahandler schaue ich mir nachher mal an.

    Na,ja wie Lynx schon sagte wirst Du mit dem normalen zugriff auf den Metahandler nicht so viele Daten bei Anime erhalten Du müßtest Da schon so denke ich zumoindestens auf eine Anime Datenbank zugreifen.

    Lynx187 ja ich habe bis jetzt immer mit der "normalen" Seiten-Quelltext Funktion gearbeitet, ab sofort wird dafür firebug genutzt

    Gruß Jan

  • es hat re.DOTALL(zeilensprünge \n werden damit ignoriert) gefehlt

    Code
    abc=re.compile('<td colspan="2">(.*?)</td>', re.DOTALL).findall(link)
            match=re.compile('<a data-ajax="true" class="menu" href="/anime/(.+?)">(.+?)</a>').findall(abc[0])

    du kannst im übrigen deine def nextpage komplett rausnehmen. es ist ja nur das freizeichen als unterschied. setz dafür einfach .*? rein

    Code
    match=re.compile('<a data-ajax="true" class="tip" title="Cover:(.+?)" href="(.+?)#top".*?>(.+?)</a>').findall(link)
            for img,url,name in match:
                    addDir(name,'http://proxer.me'+url+'/list',9,'http://upload.proxer.me/cover/'+ img + '.jpg')
    	next=re.compile('<td align="right">(.*?)</td>', re.DOTALL).findall(link)
            match2=re.compile('<a class="menu" data-ajax="true" href="(.+?)">(.+?)</a>').findall(next[0])
            for url,name in match2:
                    if '>' in name:
                            addDir('Weiter','http://proxer.me'+url,2,'')
                    else:
                            pass
  • Nochmals danke :D

    Habe jetzt nirgendswo mehr ungewünschte doppelte Einträge oder ungewollte Ergebnisse ^^

    jedoch das mit der direkten Wiedergabe von den Videolinks will irgendwie noch nicht so

    also meine addLink def sieht nun so aus:

    pluginhandle = int(sys.argv[1])


    def addLink(name,url,iconimage):
    ok=True
    liz=xbmcgui.ListItem(name, iconImage="DefaultVideo.png", thumbnailImage=iconimage)
    liz.setInfo( type="Video", infoLabels={ "Title": name } )
    liz.setProperty('IsPlayable', 'true')
    ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=url,listitem=liz)
    return ok


    und der hoster mp4upload nun so:


    def mp4upload(url):
    html = getUrl(url)
    match=re.findall("'file': '(.+?)'", html, re.DOTALL)
    vidlink = match[0]
    listitem = xbmcgui.ListItem(path=vidlink)
    xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)


    Ich bekomme zwar keinen Error, aber es wird auch kein Video abgespielt sondern ich sehe szg. nur ein leeres Verzeichnis

    Folgendes konnte ich in der Log Datei sehen :


    16:13:51 T:4220 NOTICE: URL: http://proxer.me/watch/870/1/gersub
    16:13:51 T:4220 NOTICE: Name: B Gata H Kei Episode 1
    16:13:51 T:4220 NOTICE: http://proxer.me/watch/870/1/gersub
    16:13:51 T:1048 NOTICE: Thread Background Loader start, auto delete: false
    16:13:52 T:2740 NOTICE: Thread XBPyThread start, auto delete: false
    16:13:52 T:2740 NOTICE: -->Python Interpreter Initialized<--
    16:13:52 T:2740 NOTICE: Mode: 14
    16:13:52 T:2740 NOTICE: URL: http://www.mp4upload.com/embed-qdb63byq7ky8.html
    16:13:52 T:2740 NOTICE: Name: mp4upload
    16:13:52 T:2740 NOTICE: http://www.mp4upload.com/embed-qdb63byq7ky8.html
    16:13:53 T:2740 WARNING: Attempt to use invalid handle 7


    Hier nochmal die überarbeitete py : pastebin

  • Hi setze in Zeile 129 :

    addDir(name,'http://www.mp4upload.com/embed-' + url + '.html',14,'')


    zu: addLink(name,'http://www.mp4upload.com/embed-' + url + '.html',14,'')


    Du hast ja liz.setProperty('IsPlayable', 'true') auch in addlink gestetzt und es funktioniert auch nur so.


    Gruß Jan


    Die myVideo links kannst Du auch noch integrieren entweder über den Aufruf des Addons oder einer myvideo resolver def im Addon selbst

    Würde noch ein paar Sachen anders machen aber das bekommst Du mit der Zeit raus.

  • oh man, hätte ich eigentlich auch selber drauf kommen sollen xD

    wegen myvideo muss ich nochmal schauen welcher der animes davon nen mirror zum testen hat.

    Ich packe dann erstmal hier die aktuelle Version mit den Änderungen rein ^^
    Jetzt kann man es wenigstens schon etwas besser nutzen, bin nur am überlegen ob ich erstmal die hoster die nicht funktionieren auskommentiere , macht glaube ich mehr sinn.

    // Oben ist nun die aktuellste Version als Anhang drinne

  • rutube.ru , veevr.com, myvi.ru <-- Diese funktionieren nicht

    an myvideo sitze ich gerade dran, einzelne test links funktionieren schonmal , musste dafür aber die libary von myvideo bei mir mit reinpacken (hoffe sowas geht in Ordnung) .
    Bin jetzt gerade dabei das er mir alle 3 Parts anzeigt was bei proxer.me so aussieht (7769581#7769588#7769604)

    MyVideo geht nun auch ist glaube ich nicht elegant gelöst aber es klappt


    elif 'myvideo' in name :
    try:
    parts = url.split('#')
    addLink(name + ' - Part 1' , parts[0],16,'')
    addLink(name + ' - Part 2' , parts[1],16,'')
    addLink(name + ' - Part 3' , parts[2],16,'')
    except:
    pass

    Ich denke mal diese methode wird probleme mit sich bringen sobald eine Folge weniger oder mehr als 3 Parts hat.....

  • ich denke nicht das er da etwas dagegen hat .
    Er ist ja nicht der einzige der dafür eine funktionierende Lösung hat.
    Doch für ein eigenes Addon ist es immer besser den Code den mabn benutzt auch zu verstehen so das man eventuelle Aenderungen schnell integrieren kann.

    Du kannt mit 'len' die anzahle der parts zählen lassen und dann die Zahl zu deinen Namen hinzugeben oder wie in meinem Beispiel weiter oben noch mal ein refindall ausführen .

    parts = url.split('#')


    if len(parts)>=1:
    for i in range(1,len(parts),1):
    entry=parts
    myvideo_part=re.findall('was immer du suchst',entry,re.S)[0]
    print myvideo_parts
    addLink(usw)

    myvideo_parts gibt Dir dann alle parts zurück (und die Anzahl muß nicht angegeben werden)

    Ist alles theoretisch bei mir habe also nicht das addon ausprobiert.


    ach so das addon ist nicht installierbar von xbm,c:


    Bitte rename Default.py zu default.py und füge in der default.py und füge unter pluginhandle addon = xbmcaddon.Addon ein.


    pluginhandle = int(sys.argv[1])
    addonId = "plugin.video.proxer"
    addon = xbmcaddon.Addon(addonId)


    Dann wäre es noch nice wenn Du Dein addon ein bischn xbox compatibel machen würdest:

    Du mußt dafür ersteinmal die variable xbox definieren:

    xbox = xbmc.getCondVisibility("System.Platform.xbox")


    und dann vor den addDir von 'HD-Streams':

    if xbox:
    pass
    else:
    addDir

    setzen das selbe dann für den Proxme hoster der ja wohl ausschließlich Hd streams hält.

    So kommen dann die User auf xbmc4xbox nicht durcheinander und haben nur das ,was Sie auch abspielen können.


    Gruß Jan

  • Mir ist aufgefallen das bei manchen Animes nach dem Ordner mit der Episodenauswahl keine Links drinne sind
    Und man kann den ger sub auswählen obwohl es bei manchen gar keine Streams mit ger sub gibt

  • Hey tolle Arbeit! Ich habe viele Anime Addons versucht und keiner hat mir was gebracht
    ich suche nach German Dub bevorzugt bei proxer.me

    Dein Addon ist super nur leider klappts bei mir nicht mit dem streamen da ich zwar alle Episonden auswählen kann aber danach kein Stream kommt
    Bei english Dub kommt ein Stream zur auswahl aber der funktioniert auch nicht :(

    Ist das Projekt schon tot?
    letzes Datum ist ja schon etwas länger her :/

  • Hab das Projekt eingestellt da es von Zeit zu Zeit bei proxer.me eine ddos protection gab so dass er bei mir nicht mehr richtig die Links geladen hat und ich konnte das Problem nicht lösen das er mir nur Episoden anzeigt welche auch Online sind bzw. welche Hoster zu Auswahl haben.

Jetzt mitmachen!

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