Audio/video stream recording forums (http://stream-recorder.com/forum/index.php)
-   (French | Français) Récuperer des streams audio et video (http://stream-recorder.com/forum/forumdisplay.php?f=65)
-   -  

Télécharger les vidéos du site Wakanim.tv

(http://stream-recorder.com/forum/showthread.php?t=18329)

Nopt 05-25-2014 01:54 AM

Télécharger les vidéos du site Wakanim.tv


 
Ce petit script python vous permettra de récupérer les vidéos les plus récentes de Wakanim.tv (? l'instant ou j’écris ces lignes).

L'utilisation est fort simple (en ligne de commande toutefois) :
Code:

Sluuurp <Url_de_la_vidéo>
ou
Code:

Sluuurp <Id_de_la_serie> <Numéro_de_l’épisode>
La commande
Code:

Sluuurp -S
vous permettra d'obtenir la liste des séries et leurs Ids.

Il peut également récupérer tout autre stream HLS (en théorie du moins)
Code:

Sluuurp <Url_du_fichier_m3u8>
Sluuurp.exe n'a pour fonction que de n’exécuter le fichier Sluuurp.exe.py, il n'est pas nécessaire de l'utiliser si python est installé sur votre machine.

Je me suis permis d'inclure ffmpeg.exe au zip (pour la conversion automatique du dump .ts vers .mp4)

http://clzyuhsfcp.1fichier.com/

chap 05-25-2014 02:16 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
error
Code:

http://pastebin.com/i4dFiKbS

Dune 05-25-2014 02:41 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Coucou,

Tu pourrais utiliser py2exe si tu cherches a fournir un executable plutôt qu'un scrypt Python ;)

Nopt 05-25-2014 02:49 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by chap (Post 67825)
error
Code:

http://pastebin.com/i4dFiKbS

Etrange il semblerait que tout fonctionne parfaitement jusqu'au téléchargement des segments, un ban IP peut-etre ?

Quote:

Originally Posted by Dune (Post 67826)
Coucou,

Tu pourrais utiliser py2exe si tu cherches a fournir un executable plutôt qu'un scrypt Python ;)

Oh mais j'ai bel et bien utilisé py2exe :)
Mais mon intention étant que le code soit visible a tous et facilement modifiable (pour parer a toutes éventualités), j'ai fait en sorte de le séparer de l’exécutable.

Dune 05-25-2014 02:50 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
S'il te plaît, censure rapidement le nom du site dans l'en-t?te et dans le post principal, sinon on va avoir des probl?mes.
Il ne faut jamais l'écrire en clair comme ça.

Je doute que cette méthode fonctionne avec le dernier Ma***** vu qu'ils ont probablement changé la "master key".

Nopt 05-25-2014 02:57 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by Dune (Post 67829)
S'il te plaît, censure rapidement le nom du site dans l'en-t?te et dans le post principal, sinon on va avoir des probl?mes.
Il ne faut jamais l'écrire en clair comme ça.

Je doute que cette méthode fonctionne avec le dernier Ma***** vu qu'ils ont probablement changé la "master key".

Mais si je fais cela les gens auront beaucoup plus de mal a le trouver non ? :D

ShineIsBeauti 05-25-2014 02:59 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
salut, m?me avec un ban ip si on récupere le m3u8 ça devrait passé non ? l? ce n'est pas le cas pour ma part.

Dune 05-25-2014 03:00 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Tu connais pas W***** toi... ils le trouveront bien avant "les gens".
Si ils trouvent le thread c'est foutu.
Je t'en prie, j'ai tout fait pour toujours censurer le nom dans le thread de départ, fais de m?me.

peterpan 05-25-2014 03:03 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Merci mon vieux! ca fais plaisir de vous voir partager des bon scripts comme celui la! Et Grand Merci a chap pour rectifier le code!

Spyne 05-25-2014 03:09 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Merci Nopt pour ton script.

Par contre je doute qu'avec le nom du topic, ta solution risque de pas durer tr?s longtemps.

Je te conseil donc d'éviter de parler de ce site.

Apr?s si ton choix n'est pas de changer le nom, je le respecte, et on ce dit ? la prochaine pour une nouvelle solution :)

Nopt 05-25-2014 03:15 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by Dune (Post 67829)
Je doute que cette méthode fonctionne avec le dernier Ma***** vu qu'ils ont probablement changé la "master key".

Le dernier Ma.* ;) a bien la meme key, pour changer la key il faudrait modifier le .swf également donc il leur faudra sans doute un peu plus de temps pour ça.
Cela dit je ne pense pas qu'ils se contenteront de changer la clé, ils changeront le protocole plus en profondeur sans doute, rien qui ne devrait nous inquiéter cela dit. :rolleyes:

Quote:

Originally Posted by peterpan (Post 67833)
Merci mon vieux! ca fais plaisir de vous voir partager des bon scripts comme celui la! Et Grand Merci a chap pour rectifier le code!

Tout fonctionne tel quel pour ma part, mais si vous l'avez amélioré de quelque façon je vous saurais gré de partager vos modifications ;)

Quote:

Originally Posted by Spyne (Post 67834)
Merci Nopt pour ton script.

Par contre je doute qu'avec le nom du topic, ta solution risque de pas durer tr?s longtemps.

Je te conseil donc d'éviter de parler de ce site.

Apr?s si ton choix n'est pas de changer le nom, je le respecte, et on ce dit ? la prochaine pour une nouvelle solution :)

Tenter de leur cacher nos méthodes est aussi vain que leur obstination a changer leur protocole pour nous mettre des bâtons dans les roues.
J'ai pour ma part passé l'age de nier la réalité, mais il faut croire que certains ne grandissent jamais.

Dune 05-25-2014 06:11 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by Nopt (Post 67835)
Tout fonctionne tel quel pour ma part, mais si vous l'avez amélioré de quelque façon je vous saurais gré de partager vos modifications ;)

Testé, ? part le package Crypto.Cipher qui a pas mal fait des siennes, ça fonctionne (et c'est bien foutu).

Dune 05-25-2014 06:29 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Effectivement il y a un espace avant l'IV dans certains m3u8 du coup on perd un bit et ça fait planter le script.
Rien de grave ? part ça.

Edit: en fait j'ai m?me pas l'impression que c'est l'espace, c'est juste quand l'IV commence par un 0, comme tu fais une conversion de int vers string sans forcer l'affichage des 32 bits, ça en affiche 31 :)
Du coup ça a 1 chance sur 16 de bugger (ça le fait avec le Haikyu8).

Nopt 05-25-2014 07:40 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by Dune (Post 67837)
Effectivement il y a un espace avant l'IV dans certains m3u8 du coup on perd un bit et ça fait planter le script.
Rien de grave ? part ça.

Edit: en fait j'ai m?me pas l'impression que c'est l'espace, c'est juste quand l'IV commence par un 0, comme tu fais une conversion de int vers string sans forcer l'affichage des 32 bits, ça en affiche 31 :)
Du coup ça a 1 chance sur 16 de bugger (ça le fait avec le Haikyu8).

En effet decode('hex') ne semble pas aimer décoder une string avec un mauvais padding.
J'ai modifié le script en conséquence, et j'en ai profité pour automatiser la récupération de la clé.

chap 05-25-2014 10:30 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by Nopt (Post 67828)
Etrange il semblerait que tout fonctionne parfaitement jusqu'au téléchargement des segments, un ban IP peut-etre ?

yes,work fine:cool:

mirax2 05-25-2014 10:42 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Bien joué.

J'avoue avoir passé pas mal de temps ? éplucher le contenu du nouveau .swf et ? le comparer avec l'ancien en cherchant quelle étape ils avaient bien pu modifier/ajouter pour interpréter le fichier m3u8.

Ils avaient donc chiffré la clef avec une autre clef.


Merci en tout cas ;)

helloagain 05-25-2014 11:12 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Salut

j'ai une erreur sur un épisode en particulier
http://zerobin.net/?d946ab528c958cc1... TmEpqnu7dKw=
si quelqu'un pouvais réparer ça ce serait sympa

Nopt 05-27-2014 03:38 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by helloagain (Post 67845)
Salut

j'ai une erreur sur un épisode en particulier
http://zerobin.net/?d946ab528c958cc1... TmEpqnu7dKw=
si quelqu'un pouvais réparer ça ce serait sympa

Remplacer la ligne 13 par
Code:

m3u8_regexp = re.compile("file: '(?P<url>.*?)',",re.DOTALL)
devrait corriger ça.

ShineIsBeauti 05-27-2014 04:02 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
Yo, ça semble reparti pour la derniere video...

Nopt 05-27-2014 04:13 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by ShineIsBeauti (Post 67895)
Yo, ça semble reparti pour la derniere video...

Que voulez vous dire ? :confused:

helloagain 05-27-2014 07:13 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by Nopt (Post 67894)
Remplacer la ligne 13 par
Code:

m3u8_regexp = re.compile("file: '(?P<url>.*?)',",re.DOTALL)
devrait corriger ça.

Un grand merci ça r?gle ce probl?me,

mais apparement nouveau changement du coté de chez eux car la j'obtiens ceci en passant par le logiciel
http://zerobin.net/?23d0aac7853a2061... dYamhQSGuj4=
et un joli écran noir (ou lecteur figé au choix) en cherchant ? lire la m?me vidéo via le site.
(on dirait bien qu'ils ont suivis les conseils de https://www.youtube.com/watch?v=NfB4w3faVPE)

Nopt 05-28-2014 08:18 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by helloagain (Post 67897)
Un grand merci ça r?gle ce probl?me,

mais apparement nouveau changement du coté de chez eux car la j'obtiens ceci en passant par le logiciel
http://zerobin.net/?23d0aac7853a2061... dYamhQSGuj4=
et un joli écran noir (ou lecteur figé au choix) en cherchant ? lire la m?me vidéo via le site.
(on dirait bien qu'ils ont suivis les conseils de https://www.youtube.com/watch?v=NfB4w3faVPE)

Je n'ai pas de probl?me de mon coté.

Dune 05-28-2014 12:57 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
J'ai testé, avec le script de Nopt la derni?re vidéo ne pose pas de probl?me.

mirax2 05-28-2014 12:57 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by helloagain (Post 67897)
Un grand merci ça r?gle ce probl?me,

mais apparement nouveau changement du coté de chez eux car la j'obtiens ceci en passant par le logiciel
http://zerobin.net/?23d0aac7853a2061... dYamhQSGuj4=
et un joli écran noir (ou lecteur figé au choix) en cherchant ? lire la m?me vidéo via le site.
(on dirait bien qu'ils ont suivis les conseils de https://www.youtube.com/watch?v=NfB4w3faVPE)

La clef n'a pas changée, ils l'ont juste mise en deux parties pour rendre la fonction de récupération du script python obsol?te.

Il suffit de remplacer dans "get_key":
Code:

return re.findall('Bytes\x1c(.*?)\x11loading',d,re.DOTALL)
par
Code:

return [ "Rev3rseEngIneeringIsN0tLeGal" ]
pour retourner en "dur" la clef car la fonction pour la récupérer ne fonctionne plus.

Mais bon, jusqu'? ce qu'ils modifient ? nouveau la clef.

gaaara 05-28-2014 02:51 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
pour linux sa fonctionne ? .

a été codé uniquement pour windows .....

Quote:

[gaaara@localhost Sluuurp]$ ./Sluuurp.exe.py: ligne2: $'\r' : commande introuvable
./Sluuurp.exe.py: ligne3: from : commande introuvable
./Sluuurp.exe.py: ligne4: from : commande introuvable
./Sluuurp.exe.py: ligne5: import : commande introuvable
./Sluuurp.exe.py: ligne6: import : commande introuvable
./Sluuurp.exe.py: ligne7: import : commande introuvable
./Sluuurp.exe.py: ligne8: $'\r' : commande introuvable
./Sluuurp.exe.py: ligne9: Erreur de syntaxe pr?s du symbole inattendu « ( »
./Sluuurp.exe.py: ligne9: `fn_regexp = re.compile('.*=(.*?).mp4_.*?.m3u8',re.DOT'LL)
^C
[1]+ Termine 2 ./Sluuurp.exe.py http://www.wakanim.tv/video-streamin...cEm1ch321ikSnQ
on peut pas avoir une solution universelle je déteste windows .....

mirax2 05-28-2014 03:18 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by gaaara (Post 67919)
pour linux sa fonctionne ? .

a été codé uniquement pour windows .....



on peut pas avoir une solution universelle je déteste windows .....

Oui ça fonctionne sous linux, je l'utilise d'ailleurs dessus.

Sinon c'est trivial de remplacer les "\r\n" par de simples "\n" si c'est ça qui te perturbe :p
Mais en l'occurrence c'est pas g?nant pour l'exécution du script.
Fais "python Sluuurp.exe.py" au lieu de "./Sluuurp.exe.py"

Nopt 05-29-2014 03:38 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by mirax2 (Post 67918)
La clef n'a pas changée, ils l'ont juste mise en deux parties pour rendre la fonction de récupération du script python obsol?te.

Il suffit de remplacer dans "get_key":
Code:

return re.findall('Bytes\x1c(.*?)\x11loading',d,re.DOTALL)
par
Code:

return [ "Rev3rseEngIneeringIsN0tLeGal" ]
pour retourner en "dur" la clef car la fonction pour la récupérer ne fonctionne plus.

Mais bon, jusqu'? ce qu'ils modifient ? nouveau la clef.

Ah ils l'ont vraiment fait en plus ! Comme c'est original :rolleyes:
Je ne pense pas devoir me donner la peine de publier un correctif pour si peu.

Quote:

Originally Posted by gaaara (Post 67919)
pour linux sa fonctionne ? .

a été codé uniquement pour windows .....


on peut pas avoir une solution universelle je déteste windows .....

Manifestement tu essaye d’exécuter le script avec bash plutôt qu'avec python : "python Sluuurp.exe.py" donc
Il faudra sans doute que tu installe les libraries python toi m?me, en particulier pycrypto qui est compilé pour windows dans ma release, mais ca ne devrait pas ?tre un soucis pour un linuxien :)

gaaara 05-29-2014 11:02 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
j'ai cette erreur :)

Code:

[gaaarat@localhost Sluuurp]# python Sluuurp.exe.py lienswaka
Traceback (most recent call last):
  File "Sluuurp.exe.py", line 6, in <module>
    import m3u8, cookielib, optparse, subprocess
ImportError: No module named m3u8


Spyne 05-29-2014 11:36 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by gaaara (Post 67940)
j'ai cette erreur :)

Code:

[gaaarat@localhost Sluuurp]# python Sluuurp.exe.py lienswaka
Traceback (most recent call last):
  File "Sluuurp.exe.py", line 6, in <module>
    import m3u8, cookielib, optparse, subprocess
ImportError: No module named m3u8


Ca veut dire que le script ? besoin d'un module nommé m3u8 qu'il n'arrive pas ? trouvé.

Tu as juste ? copier le dossier m3u8 fourni par Nopt dans le dossier library au m?me endroit ou tu execute ton script.

gaaara 05-29-2014 12:47 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
il est deja présent

Code:

[gaaara@localhost library]# ls
_abcoll.pyc          io.pyc                _ssl.pyc
abc.pyc              keyword.pyc            ssl.pyc
atexit.pyc          linecache.pyc          stat.pyc
base64.pyc          locale.pyc            StringIO.pyc
bisect.pyc          logging                stringprep.pyc
bz2.pyc              _LWPCookieJar.pyc      string.pyc
calendar.pyc        m3u8                  _strptime.pyc
codecs.pyc          mimetools.pyc          struct.pyc
collections.pyc      mimetypes.pyc          subprocess.pyc
cookielib.pyc        _MozillaCookieJar.pyc  tempfile.pyc
copy.pyc            ntpath.pyc            textwrap.pyc
copy_reg.pyc        nturl2path.pyc        _threading_local.pyc
Crypto              optparse.pyc          threading.pyc
dummy_threading.pyc  os2emxpath.pyc        tokenize.pyc
dummy_thread.pyc    os.pyc                token.pyc
email                posixpath.pyc          traceback.pyc
encodings            pyexpat.pyc            types.pyc
fnmatch.pyc          quopri.pyc            unicodedata.pyc
ftplib.pyc          random.pyc            urllib2.pyc
functools.pyc        repr.pyc              urllib.pyc
__future__.pyc      re.pyc                urlparse.pyc
genericpath.pyc      rfc822.pyc            UserDict.pyc
getopt.pyc          select.pyc            uu.pyc
getpass.pyc          _socket.pyc            warnings.pyc
gettext.pyc          socket.pyc            weakref.pyc
_hashlib.pyc        sre_compile.pyc        _weakrefset.pyc
hashlib.pyc          sre_constants.pyc      xml
heapq.pyc            sre_parse.pyc
httplib.pyc          sre.pyc
[gaaara@localhost library]#


Dune 05-29-2014 01:48 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
Malheureusement, ça met maintenant incorrect padding :/

La clé est la suivante : http://pastebin.com/DM3swDpg
Ce qui donne en hexadécimal :
E9 35 5E 77 0E 21 4F 03 3F 42 C4 E8 D2 BF 42 41 54 62 85 ED 3F 9E 79 EF

et ça n'est pas une string base 64 valide :/

helloagain 05-29-2014 04:00 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
Et malheureusement c'est reparti pour un tour ...
https://www.zerobin.net/?0e216800c40... BK6dygdLriM=

EDIT:Oups pas vu que le probl?me avait déj? été posté dans le thread

Nopt 05-29-2014 04:27 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
Vous en tirez des tronches, manifestement vous n’appréciez pas ? sa juste valeur l'humour de Waka, c'est pourtant bien plus divertissant qu'un épisode de Ma* :D

mirax2 05-29-2014 05:49 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
C'est surtout le gars de waka**** que ça doit emmerder.

Il doit regénérer une nouvelle version du lecteur flash + tous les m3u8 ? chaque fois.

Nous suffit de regarder un bout de code, ça prend 30s.

D'ailleurs la nouvelle clef:
Code:

Rev3rseEngIneeringIsN0t0LeGalORHowToLooseYourT1meflout
Edit: la clef a été mise entre les balises CODE car du fait de la longueur le forum ajoutait un espace.

CereFR 05-29-2014 05:58 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
Bonsoir ; pour ma part j'aimerai uniquement convertir la clé 48 caract?res vers la clé de 16 octets d'origine. Je me suis intéressé ? la fonction "decrypt_key" du script python "Sluuurp.exe.py". Pouvez-vous me dire ce que je dois mettre en argument de la fonction (je ne suis pas familier du python) ? Est-ce bien la clé en format 48 caract?res puis la clé de cryptage "Rev3rseEngineeringIsN0tLegal" ? Comment ensuite obtenir un fichier texte avec les 16 octets prenant chacun un caract?re ?

Dune 05-30-2014 08:41 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
On vient justement de poster la nouvelle clé, CereFR.
J'ai un peu de mal ? la retrouver dans le code désassemblé du swf par contre.

Nopt 05-30-2014 10:14 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Au vu de la nouvelle politique de "multiplication des clés", je propose les modifications suivantes du fichier .py

Code:

# -*- coding: utf8 -*-

from Crypto.Cipher import Blowfish
from Crypto.Cipher import AES
import base64, os, urlparse, urllib2, re, sys, zlib, struct
import m3u8, cookielib, optparse, subprocess
import xml.etree.ElementTree as ElementTree

fn_regexp = re.compile('.*(?:=|/)(.*?).mp4_.*?.m3u8',re.DOTALL)
md_regexp = re.compile("var MovieData = {(.*?)};",re.DOTALL)
st_regexp = re.compile("var STMode = (.*?);",re.DOTALL)
token_regexp = re.compile('"(/video-streaming/.*?)"',re.DOTALL)
m3u8_regexp = re.compile("file: '(?P<url>.*?)',",re.DOTALL)
provider_regexp = re.compile("provider: '(.*?)',",re.DOTALL)

cj = cookielib.CookieJar()
ulo = urllib2.build_opener(
    urllib2.HTTPRedirectHandler(),
    urllib2.HTTPHandler(debuglevel=0),
    urllib2.HTTPSHandler(debuglevel=0),
    urllib2.HTTPCookieProcessor(cj)
)

ulo.addheaders = [
        ('User-agent', ('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'))
]

def main_is_frozen():
        return (hasattr(sys, "frozen") or hasattr(sys, "importers"))

if main_is_frozen() :
        exit = sys.exit

def decrypt_key(aeskey):
        bfkeys = [k.strip() for k in open('bfkeys.txt').readlines()]+[None]
        for bfkey in bfkeys :
                try:
                        bf = Blowfish.new(bfkey, Blowfish.MODE_ECB)
                        t = aeskey.decode("hex")
                        t = bf.decrypt(t)
                        t = base64.b64decode(t)
                        if len(t) != 16 : raise
                except: continue
                aeskey = t
                break
        print "bfkey = %s" % bfkey
        return aeskey
       
def unzipSWF(d):
        if d[0] == 'C':
                d = zlib.decompress(d[8:])
        elif d[0] == 'F':
                d = d[8:]
        else:
                raise
        return d
       
def quick_parse(d):
        d = re.sub('\s*:\s*','=',d)
        d = re.sub('\s*,\s*','&',d)
        d = re.sub("='(.*?)'",'=\g<1>',d)
        d = re.sub('="(.*?)"','=\g<1>',d)
        d = re.sub('=false','=False',d)
        d = re.sub('=true','=True',d)
        d = re.sub('^\s','',d)
        d = re.sub('\s\Z','',d)
        return d
       
def download_m3u8(uri):
        playlist = ulo.open(uri).read()
        playlist = m3u8.loads(playlist)
        if playlist.is_variant:
                playlist = max(((int(x.stream_info.bandwidth),x) for x in playlist.playlists))[1]
                if playlist.uri.startswith('http'): uri = playlist.uri
                else: uri = uri.replace(os.path.basename(uri),playlist.uri)
                playlist = ulo.open(uri).read()
                playlist = m3u8.loads(playlist)
        fn = '%s.ts' % fn_regexp.findall(uri)[0]
        while os.access(fn, os.F_OK):
                fn = '_'+fn
        print uri,'->',fn
        f = open(fn,'wb')
        if not playlist.key.uri.startswith('http'): playlist.key.uri = uri.replace(os.path.basename(uri),playlist.key.uri)
        key = decrypt_key(ulo.open(playlist.key.uri).read())
        iv = ("%032x" % int(playlist.key.iv,16)).decode("hex")
        aes = AES.new(key, AES.MODE_CBC, iv)
        for x in playlist.segments :
                if not x.uri.startswith('http'): x.uri = uri.replace(os.path.basename(uri),x.uri)
                r = ulo.open(x.uri)
                d = r.read()
                d = aes.decrypt(d)
                f.write(d)
        print 'Done'
        f.close()
       
        subprocess.call(r"ffmpeg.exe -i %s -vcodec copy %s" % (fn,fn+'.mp4'),stdout=sys.stdout,shell=True)

def download_video(video_url):
        page = ulo.open(video_url).read()
        md = md_regexp.search(page).group(1)
        st = st_regexp.search(page).group(1)
        post_data = quick_parse(md+'&STMode='+st)
        post_data = post_data.replace('SupportAds=0','SupportAds=1')
        Id = dict(urlparse.parse_qsl(post_data, strict_parsing=True))['Id']

        req = urllib2.Request('http://www.wakanim.tv/video/Advertisement?IdItem='+Id)
        req.add_header('Referer', video_url)
        r = ulo.open(req)
       
        req = urllib2.Request('http://www.wakanim.tv/Library/GetMoviesByAdsNew')
        req.add_header('Referer', video_url)
        r = ulo.open(req, post_data)
       
        video_url = ('http://www.wakanim.tv'+token_regexp.findall(r.read())[0]).decode('unicode_escape')
       
        d = ulo.open(video_url).read()
        provider_url = provider_regexp.findall(d)
        provider_url = provider_url[0] if len(provider_url)>0 else None
        video_url = m3u8_regexp.findall(d)[0]
       
        if provider_url :
                req = urllib2.Request(provider_url)
                req.add_header('Referer', video_url)
                r = ulo.open(req)
                d = unzipSWF(r.read())
                print "Provider = %s" % provider_url
                open(os.path.basename(provider_url),'wb').write(d)

        download_m3u8(video_url)

def GetSeries():
        d = ulo.open(r'http://www.wakanim.tv/catalogws/CatalogXml/').read()
        root = ElementTree.fromstring(d)
        series = []
        for child in root :
                if child.tag == 'serie' :
                        s = {}
                        s['id'] = child.findall('Id')[0].text.replace(' ','')
                        s['name'] = child.findall('Nom')[0].text.encode('cp850',errors='replace')
                        series.append(s)
        return series
       
def GetEpisodes(id):
        d = ulo.open(r'http://www.wakanim.tv/catalogws/SerieXml/%s' % id).read()
        episodes = []
        catalogue = ElementTree.fromstring(d)
        for episode in catalogue  :
                e = {}
                e['AvailableFree'] = episode.findall('AvailableFree')[0].text
                e['NumEp'] = int(episode.findall('NumEp')[0].text)
                e['Titre'] = episode.findall('Titre')[0].text.encode('cp850',errors='replace')
                e['UrlEpisodeFree'] = episode.findall('UrlEpisodeFree')[0].text
                episodes.append(e)
        return episodes

if __name__ == '__main__' :
        VERSION = 1
        usage = sys.executable+" [<SerieID> <EpisodeNum> | <VideoURL> | <m3u8URL>]"
        description = "Sluuurp (v2)."
        parser = optparse.OptionParser(description=description,usage=usage,formatter=optparse.IndentedHelpFormatter(max_help_position=1000,width=1000))
        parser.add_option("-S", "--slist", action="store_true", help="Montre la liste des series et quitte.", default=False)
        parser.add_option("-E", "--elist", action="store", help="Montre la liste des episodes d'une serie et quitte.", default=False)
        (options, args) = parser.parse_args()

        if not sys.argv[1::] :
                parser.print_help()
                exit()
       
        if options.slist is True :
                s = GetSeries()
                for x in s :
                        print '%s\t:%s' % (x['id'],x['name'])
                exit()
               
        if options.elist is not False :
                e = GetEpisodes(options.elist)
                for x in e :
                        print '%s(%s)\t:%s' % (x['NumEp'],x['AvailableFree'],x['Titre'])
                exit()
       
        if len(args) == 1 :
                if re.search(r'http://www.wakanim.tv/video/.*/',args[0],re.DOTALL) == None :
                        download_m3u8(args[0])
                else:
                        download_video(args[0])
        elif len(args) == 2 :
                url = r'http://www.wakanim.tv'+[ x for x in GetEpisodes(args[0]) if x['NumEp'] == int(args[1])][0]['UrlEpisodeFree']
                download_video(url)               
        else:
                print "Saisie invalide"
                exit()

Les clées seront donc maintenant lues du fichier bfkeys.txt (inserez une clé par ligne et vice versa), et le script les testera toutes jusqu'a trouver la bonne.
Un fichier bfkeys.txt contenant les 2 clés sus-citées (attention un espace s'est glissé dans la derni?re) devrait permettre de telecharger toutes les videos .m3u8 ? ce jour.

La nouvelle fonction decrypt_key devrait ?tre plus comprehensible CereFR :)

mirax2 05-30-2014 11:26 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by Nopt (Post 67984)
Un fichier bfkeys.txt contenant les 2 clés sus-citées (attention un espace s'est glissé dans la derni?re) devrait permettre de telecharger toutes les videos .m3u8 ? ce jour.

Yep le forum ajoutait un espace m?me s'il n'y en avait pas.

Je l'ai mis entre les balises CODE du coup et c'est bon.

CereFR 05-30-2014 03:03 PM

Re: Télécharger les vidéos du site Wakanim.tv


 
J'obtiens cette erreur ; fais-je les choses correctement ? (je rappelle que je ne veux que décrypter la clé)

http://www.mediafire.com/view/elz1qx3tt45p8go

Si j'enl?ve la ligne qui pose probl?me et qui n'est pas indispensable, le programme renvoie la clé de départ. N'y a-t-il pas un probl?me dans la fonction ?
Je précise que j'op?re sous Python 3.3.5.

Nopt 05-31-2014 03:32 AM

Re: Télécharger les vidéos du site Wakanim.tv


 
Quote:

Originally Posted by CereFR (Post 67992)
Je précise que j'op?re sous Python 3.3.5.

Le probl?me vient de la, le script a été fait avec python 2.7.
print doit ?tre utilisé comme une fonction et non plus comme un statement : print()
aeskey.decode("hex") n'existe plus il faut utiliser binascii.unhexlify(aeskey) par exemple.


All times are GMT -6. The time now is 09:49 PM.