Ston3s / plugin.video.xstream

Video Addon for XBMC
GNU General Public License v3.0
9 stars 8 forks source link

Integrate anime-loads.org #19

Closed Ston3s closed 8 years ago

Ston3s commented 8 years ago

Hallo zusammen,

möchte an dieser Stelle ebenfalls auf die mögliche Integration der Webseite anime-loadz.org hinweisen. Diese wurde bereits von viper2k4 auf einen vorzeigbaren Arbeitsstand gebracht. Jedoch bereitet zum aktuellen Zeitpunkt noch die Verwendung des reCaptcha-Features noch größere Probleme. Falls ich etwas vergessen oder nicht richtig dargestellt habe bitte ich um Korrektur!

Werbe kräftig für Mithilfe...

sraedler commented 8 years ago

Wenn wir auf den neuen Release von url resolver warten, dann könnte dieses Plugin vervollständigt werden, die haben nämlich ein reCaptcha script includiert, evtl. könnte man das direkt ansprechen.

urlresolver recaptcha v2

Edit: Oder das reCaptcha.py direkt in den resource\lib ordner kopieren, dann könnte das Problem direkt angegangen werden. @Viper2k4

ghost commented 8 years ago

meinen sourcen sind durch nen Update leider weg :'(

Du hast dir meine Version nicht zufällig gezogen?

Ston3s commented 8 years ago

Schau mal in die Branch backup und in den Ordner sites...

sraedler commented 8 years ago

Ich hab die selbe Version, wie @StoneOffStones in dem Backup branch. Hab zwar schon was dran gearbeitet, aber das ist so unsauber, da bist du besser dran, wenn es selber versuchst.

Aber es muss zusätzlich ein teil von hier übernommen werden

Ston3s commented 8 years ago

Deshalb würde ich euch bitten halbfertige Entwicklungen in Zukunft einfach im Branch abzulegen. Für den Fall, dass man mal irgendwann dran weiter arbeiten möchte bzw. kann!

Kukolorus commented 8 years ago

Also, wenn ich die Seite anime-loadz.org öffnen möchte, dann komme ich auf eine T-Online Navigationshilfe-Seite :P

ghost commented 8 years ago

http://www.anime-loads.org/

geht perfekt

Kukolorus commented 8 years ago

Oh, doch. Also ich muss sagen die Seite mach einen Recht schönen Eindruck. :)

Ston3s commented 8 years ago

Finde die Seite auch echt klasse, vor allem weil noch es sich hierbei um etwas Handelt was bisher nicht so richtig im Addon verfügbar ist. Dementsprechend interessantes Portfolio!!!

Für diese Seite müsste aber zuerst das Problem mit dem reCaptcha bzw. die integration des neuen URLResolvers bzw. die integration des reCaptcha.py direkt in xStream gelöst werden. Deshalb setzte ich hier den Milestone mal etwas in weitere Ferne :)

seberoth commented 8 years ago

Hab grad mal ein bisschen rumgespielt. Ersten Tests nach, brauch man den reCaptcha blödsinn überhaupt nicht...

ghost commented 8 years ago

Dann schlau mich auf und ich gucke weiter :)

seberoth commented 8 years ago

Hab hier einen kleinen JS Code (ich denke ja mal, das umsetzten kriegste hin :P )

Einzige sache wo ich mir noch nicht 100% sicher bin, auf der Seite steht das man am Tag max. 30 Streams ohne Captcha gucken kann. Hab meine Methode jetzt über 30 mal probiert, aber nicht an 30 verschiedenen Links. Müsste noch überprüft werden.

Enc ist das was in 'data-enc=""' steht.

https://gist.github.com/seberoth/46a600ad5e143b783f56

sraedler commented 8 years ago

ja an einem Link könnte es Probleme mit dem Cache geben ;)

aber denk an 30 verschiedenen kann man das auch testen ;)

ghost commented 8 years ago

@seberoth danke schonmal dafür :) @sraedler fallst grade Zeit hast kannst mal kurz gucken? Mache grade "Gute-Filme" fertig

sraedler commented 8 years ago

Ja, versuch es mal zu integrieren, denn manuell im browser ist das blöd zu testen (aber es hat schonmal geklappt)

Kukolorus commented 8 years ago

@Viper2k4 Da freue ich mich aber :D

sraedler commented 8 years ago

@Viper2k4 Ich komm einfach nicht weiter, im Browser geht es und in dem Python Script nicht, kannst du mir helfen?

evtl. weiß @seberoth was ich falsch mach.

Mir ist klar, dass die success Funktion fehlt, aber der Response dafür ist schon ein HTTP 200 aber mit inhalt error. Hab sogar mit Wireshark versucht das mitzusniffen, aber finde nicht warum es nicht geht.

Mein aktueller Stand

seberoth commented 8 years ago

So. Habs grad mal in Python nachgebaut. Leider war es etwas komplexer als ich gedacht habe... Werd es noch vereinfachen und dann hier posten.

EDIT 1: Ok. Nach 30 mal ist schluss... Jedoch sollten diese 30 ja für die meisten schon ausrreichen. Die anderen müssen dann halt doch Captchas lösen

ghost commented 8 years ago

Ich komme wohl leider erst Mittwoch da zu mir das Site-Plugin weiter anzugucken :/

Aber ich denke auch das 30 erstmal ausreichen sollte (besser als nichts ^^). Man müsste mal prüfen auf welcher Basis dieser sperre funktioniert. Vermutlich IP-Basiert oder?

Aber ich denke falls wir das nicht umgehen können und wir dem Anwender ne Meldung ausgeben das das Limit erreicht ist sollte das ok sein. Dann kann der Anwender ja selbst reagieren z.b mit nem reconnect (falls Sperre IP-Bassiert ist und der Anwender DSL hat).

Aber schon mal danke für die tatkräftige Untersützung bei meinen Problem :)

seberoth commented 8 years ago

Kann man bestimmt noch optimieren und fehlerbehandlungen einbauen, aber es funktioniert (hab auch gleich den Captcha code mit eingebunden, der funktinieren sollte wenn man die urlresolver version von tvaddons hat)

https://gist.github.com/seberoth/58fa5c08283e27aa11e1

EDIT1: Wenn ich clever gewesen wäre, hätte ich statt >=31 überprüft, ob ne error Meldung zurück kommt... EDIT2: So, nachgebessert...

sraedler commented 8 years ago

https://gist.github.com/sraedler/4ab3c8e8b33357a9b32e

Hab es versucht zu integrieren, bei mir geht es mit dem was du als allgemeingültig beschreibst nicht und das was ich als regex und aus der html mit math.floor gezogen hab geht es auch nicht.

Fehler: {u'message': u'Der Antwort Parameter ist ung\xfcltig oder fehlerhaft.', u'code': u'error'}

ghost commented 8 years ago

Ich freu mich schon richtig auf Mittwoch das alles anzugucken :). Und echt doof das ich grade nichts beitragen kann :/

Aber echt richtig schön das wir doch irgendwie vorran kommen!

seberoth commented 8 years ago

https://gist.github.com/seberoth/58fa5c08283e27aa11e1

Ok. War mein fehler. Hab es nur manuel mit einem Anime getestet (nicht über Kodi) und eine ud ist immer für einen Anime gültig. Deswegen ist mir der fehler nicht direkt aufgefallen.

Aber das mit dem Regex sollte klappen, so hab ich es jetzt auch angepasst und probiert in Kodi. Den quatch mit cb und random kannste weglassen.

Wer ist jetzt eigtl. für das Plugin verantwortlich?

Randnotiz: Anime-Loads hat wohl ein "bisschen" geklaut... (http://www.animenati.com)

ghost commented 8 years ago

Ich habe das Addon vom Prinzip ja verbockt. Bin ja nur mit dem Captcha nicht weiter gekommen :/

Wenn das ganze jetzt funktioniert. Werde ich das alles umbauen und in schön mit Auswahl des Releases und co. Das habe ich nur alles nicht gemacht weil es ja nicht weiter ging ^^

@animenati.com das sieht fast so aus als ob das die selben entwickler sind. Nur einmal mit und einmal ohne streams :)

sraedler commented 8 years ago

@seberoth es geht bei mir leider trotzdem nicht.

https://gist.github.com/sraedler/4ab3c8e8b33357a9b32e

allerdings wieder {"code":"error","message":"noadblock"} aber weiß nichtmal wenn ich den noadblock cookie hinzufüg geht es^

Auch deine doEnc ging bei mir nicht zum ausführen

seberoth commented 8 years ago

Dann weiß ich leider auch nicht weiter. Hab es grad nochmal getestet und bei mir läufts.

Hab es hiermit getestet:

oParams = ParameterHandler() oParams.addParams({'sUrl': 'http://www.anime-loads.org/media/gin-no-saji-2014-silver-spoon-2'}) oGui.addFolder(cGuiElement('Debug', SITE_IDENTIFIER, 'showEntries'), oParams)

sraedler commented 8 years ago

mit was für einem kodi hast du das versuch ?

ich seh grad du hast nicht oRequestHandler.setRequestType(1) hinzugefügt um das ganze als post anstatt get zu senden, was mit dem javascript auch nicht geht.

aber sehe auch im Requesthandler nicht, wo die post variable ausgelesen wird...

seberoth commented 8 years ago

oRequestHandler.setRequestType(1) ist auch nicht nötig, da urllib2/mechanize automatisch einen POST draus macht, sobald data gesetzt wurde.

Habs jetzt auch auf einem 2ten Rechner getestet und es läuft.

EInmal WIn7 mit Jarvis und einmal Win10 mit Jarvis.

sraedler commented 8 years ago

kannst du deine komplette Datei einmal als gist oder zip bereitstellen, damit ich das testen kann?

seberoth commented 8 years ago

https://gist.github.com/seberoth/58fa5c08283e27aa11e1 ist aktuell

Das bisher beste an der ganzen Seite ist, das man die 10-15 Sekunden wartezeit bevor man den Link kriegt (bzw. zum Hoster weitergeleitet wird) nicht überspringen kann...

sraedler commented 8 years ago

geht bei mir leider nicht :cry:

Kann das jemand anders mal testen, ob es an meinem Kodi liegt?

ghost commented 8 years ago

Heute Abend :)

ghost commented 8 years ago

Sooo erst mal zieh ich meinen hut vor dir seberoth. Klasse Leistung :)

Ich musste es noch etwas umbauen damit Kodi damit klar kommt. Aber dir eigentlich Arbeit war mit deinem gist schon gemacht.

Waren die Header eigentlich nur zum testen? Weil wirklich nötig sind sie ja nicht.

Jetzt müssen wir nur noch das Leave-Script überlisten. Die 15sec nerven etwas :/

EDIT

Das man die Bilder auswählen muss geht ja leider nichts anders :'(. Aber besser als nichts :)

EDIT2

Wo hast den Site-Key eigentlich her? Kann ich den evtl. irgend wo auslesen (damit wir dynamisch bleiben)

seberoth commented 8 years ago

Da bin ich ja froh das es doch läuft. Müssen wir mal gucken was bei sraedler schief läuft :/

Bzgl. des Headers: Bei mir lief es mit dem standard python Header nicht, hab nur noadblock (scheint bei dennen die fehlermeldung für alles zu sein) als Fehler zurück bekommen.

Und für die Wartezeit hab ich leider keine lösung gefunden...

ghost commented 8 years ago

Also ich habe mal alle Header rausgenommen (so nimmt er ja den stein alten von xStream) und das funktioniert wunderbar.

Mal gucken was die Anwender dazusagen wenn sie nen captcha lösen müssen ^^ (ist ja glaube das erste Plugin wo sowas drin ist)

sraedler commented 8 years ago

Sobald @Viper2k4 das gepusht hat werde ich es testen, evtl. war es mein Fehler!

Ja, @seberoth das ist echt eine abartige Leistung !!!

Ich freu mich auf meinen ersten Captcha :laughing:

@Viper2k4 wenn du mir eine lauffähige Version gibst, dann mach ich das mit den 15 Sekunden, hab voraussichtlich etwas gefunden :+1:

ghost commented 8 years ago

Das dauert aber noch etwas. Da ich es erstmal Funktional bauen weil. Damit es funktioniert (auch mit den 15sec^^)

Btw. habt ihr auf der Seite ne Serien mit mehreren Staffeln gesehen?

Ich finde immer nur releases. So das bei "Pokemon" z.b einfach stumpf alle ~300 folgen aufgelistet werden.

Daher wollte ich das jetzt so aufbauen.

Eintrag => Release-Auswahl => Liste der Einträge

Sprich keinen Staffel auswahl (da nicht existent)

EDIT

Habe grade mal die Sprache vom capacha auf "de" gestellt und musst dann keines lösen ^^

sraedler commented 8 years ago

Wenn du nur an den 15 sec hängst, dann kannst mir ein gist zukommen lassen, aber lass dir ruhig zeit ;)

Ich würde auch behaupten es gibt keine Staffeln...

ghost commented 8 years ago

Jetzt habe ich komischweiese plötzlichprobleme mit der Leave-Seite:

"Seite abgelaufen. Die von dir angeforderte Seite ist nicht mehr verfügbar, bitte versuche es nochmal!"

sraedler commented 8 years ago

lösch mal dein cache oder stell ihn auf 1 sekunde

ghost commented 8 years ago

Habe mir nen Handler gebaut ohne caching und mit neustem Chrome-Useragent und damit ist er zufreiden ^^

ghost commented 8 years ago

https://gist.github.com/Viper2k4/04e1e30f621dbe04da5930b20e64d87d

@sraedler Das funktioniert perfekt. Aber bitte benutz nur den Test-Link. An dem anderen (Sprich Releaseauswahl arbeite ich dann) @seberoth Habe das ganze mal etwas umstrukturiert und etwas kommentiert damit ich es verstehe. Bitte korrigier mich wenn kommentare keinen Sinn ergeben ^^

sraedler commented 8 years ago

Heute hab ich leider nichts mehr herausgefunden, mein verdacht hat sich nicht bewahrheitet.

Aber ich glaub nun, dass es eine Serverseitige Validierung ist, denn wenn man im Browser den leavepage Balken durchlaufen lässt reicht es die Seite neuzuladen, man benötigt also nicht zwangsläufig den finalen Url. Lädt man die Seite zwischen drin jedoch neu, so wird die Wartezeit wieder zurück gesetzt.

Ich weiß es gab bei einigen OCH's die Möglichkeit einen Manipulierten Header zu schicken mit falschen Zeitstempeln und dann ging es. Aber das hab ich bisher nicht prüfen können bzw. hat nicht funktioniert.

threading ist auch ein bisschen ein Problem, denn sobald ein neuer link angefragt wird, ist die "alte" Zeit nicht mehr gültig, das heißt es ist immer nur der letzte angefragte link aufgelöst und die anderen sind anime-load*...

ghost commented 8 years ago

Wir können das ganze noch etwas optimieren (mache ich denke ich morgen).

Und zwar ist es jetzt so das die Links direkt resolved werden. Was dazu führt das bei 3 Hostern (auch wenn nur 2 supportet werden) der Resolve ausgeführt wird. Was damit quasi 3x15sek sind.

Man könnte aber beim Hoster auch nicht direkt den resolve durchführen sondern nur den Link übergeben und dann nach der Auswahl den Resolve durchführen.

Das würde die Wartezeite wenigstens auf 15sek senken.

Das wir den Leave irgendwie austrickesen können wäre natürlich das Optimum :)

seberoth commented 8 years ago

Man kann aber auch alle 3 per threading gleichzeitig auslösen.

Das Problem was sraedler hat, ist das du pro Leave-Link ein Cookie gesetzt wird. Da der RequestHandler diese jedoch bei einem Request überschreibt, funktioniert immer nur der letzte (ist ne vermutung, aber im Browser kann ich alle gleichzeitg aufrufen).

Ich bin dabei den RequestHandler entsprechend anzupassen und es dann zu probieren.

ghost commented 8 years ago

Aber wieso sollte man denn alle 3 Auflösen wenn es garnicht nötig ist?

Im JSon wird ja wir für jeder Hoster "link" übergeben. Denn man dann ans Leave übergibt. Wieso nicht in "_decryptLink" nur "item['link']" ans Hosterarray koppel und dann in der funktion "getHosterUrl" mit dem Link der ja übergeben wurde den Resolve durchführen.

So erscheint für den Anweder die Liste der Hoster direkt (dann auch nur 2 der 3) und erst beim Auswahl des Hoster wird der Link des jeweiligen Hoster resolved.

Das hört sich für mich wesentlich sauber and und hat weniger overhead.

seberoth commented 8 years ago

Imprinzip hast du recht.

Es gibt aber einen Fall, wo die Wartezeit durch diese methode wieder steigt und zwar, wenn der entsprechende Hosterlink ungültig ist (Datei gelöscht usw.) In dem Fall müsste der Benutzer dann wieder 15 Sekunden warten. (Und ja, es gibt einige, vorallem ältere Animes wo das der fall ist)

sraedler commented 8 years ago

Wenn nun der Link an die Liste übergeben wird, dann laufen die 15 Sekunden doch Schon los?

das heißt wenn der Benutzer 5 Sekunden benötigt um einen Hoster anzuklicken sind nur noch 10 über.

Wenn das mit den Cookies funktioniert, dann kann man diese auch speichern und durch eine Loop die jede Sekunde prüft die Zeit minimiert werden.

oder nicht?

ghost commented 8 years ago

Die Zeit beginnt mit dem ersten Aufruf des Leave-Links (_resolveLeaveLink) nicht vorher.

Man könnte natürlich beim erstellen der Liste alle Leave-Links 1x aufrufen (womit der Zähler beginnt). Dann dem Anwender die Liste zeigen und dann wie sraedler mit ner schleife solange warten bis man ein Link bekommt der nicht von Anime-Loads kommt.

Falls dann ein Link nicht geht und der Anwender (oder die Automatische Hosterauswahl) einen anderen wählt sollte die Zeit der anderen ja abgelaufen sein.

Am besten wäre immer noch den Mist zu umgehen (und ich dachte der capacha wäre unser einziges problem^^)

EDIT

Guckt mal hier:

https://github.com/adsbypasser/adsbypasser/issues/849

Es wurde zwar abgelehnt. Aber dieses Projekt hat einige Skiper eingebaut:

https://github.com/adsbypasser/adsbypasser/tree/master/src/sites/link

Evtl. funktioniert ja irgend was davon hier.

Ston3s commented 8 years ago

Site-Icon minimal überarbeitet damit es auch in breiten Kacheln sauber dargestellt wird.

anime-loads