Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#401 Le 17/07/2013, à 16:38

k3c

Re : TVDownloader: télécharger les médias du net ! [2]

Hors-sujet (quoi que)

TF1 attaque l'auteur de Captvty en justice.

Extrait de
http://korben.info/captvty-tf1.html

Les raisons invoquées par e-TF1 sont :

    Le contournement de mesures techniques de protection pour décrypter (sic!) les flux -> FAUX, TF1 n'utilise pas de DRM.
    La mise à disposition d'une application qui permet de commettre une infraction -> La copie privée serait une infraction aux yeux de TF1 ?
    De tromperie du consommateur en déclarant que cet outil est légal -> Jusqu'à présent il n'y a rien qui prouve que c'est illégal, bien au contraire...

S'en suivent quelques mentions de milliers d'euros d'amende et de peines de prison, une indication que l'affaire a été portée en justice ainsi qu'une mise en demeure à l'encontre d'OVH pour fermer le site.

Le Raspberry Pi pour lire ses replays a du plomb dans l'aile (il reste plein d'utilisations possibles d'un Rasp.)

Edit: @ pacome
tu crois que TF1 va nous (toi, bibichouchou, moi, et quelques autres) attaquer aussi et nous faire l'honneur d'une mise en demeure ? 

:-)

Dernière modification par k3c (Le 17/07/2013, à 17:56)


Archlinux sur Xiaomi Air 13

Hors ligne

#402 Le 17/07/2013, à 19:02

11gjm

Re : TVDownloader: télécharger les médias du net ! [2]

Bonjour ,

@k3c : merci pour l'info .

Cordialement .

Hors ligne

#403 Le 17/07/2013, à 19:56

ynad

Re : TVDownloader: télécharger les médias du net ! [2]

Bonsoir à tous,
cela me rappelle l'affaire "Wizzgo" pour ceux qui ont connu en 2008 un magnétoscope numérique génial...
procès etc etc...
je suis dégouté  sad
sincèrement je plains l'auteur de captvty.

Hors ligne

#404 Le 17/07/2013, à 23:37

pacome

Re : TVDownloader: télécharger les médias du net ! [2]

Bonsoir,

k3c a écrit :

tu crois que TF1 va nous (toi, bibichouchou, moi, et quelques autres) attaquer aussi et nous faire l'honneur d'une mise en demeure ?
:-)

Si les scritpts qu'on développe deviennent de plus en plus utilisés et visibles sur le net ce n'est pas impossible, et ce forum est très bien indexé par les moteurs de recherche (normal, mais faites le test en recherchant sur google un bout de phrase d'un post, c'est bluffant…), mais je trouve ça bien sympa de partager des connaissances et compétences techniques smile.

Le but de tf/nt/hd/1 n'est pas de diffuser du contenu pour notre plaisir: c'est juste un moyen de gagner de l'argent; ils achètent les droits de diffusion des programmes pour rentabiliser cet investissement avec la publicité, et plus celle-ci est visionnée plus elle vaut cher. Donc proposer un système qui permet de profiter de ce qu'ils achètent sans obliger à subir ce qui leur rapporte «met en péril [leur] "modèle économique"». Tant que c'est à petite échelle et pas très connu ça peut passer, mais si ça se généralise ils ne pourront pas vendre leurs pubs aussi cher, d'où le "manque à gagner" (j'abhorre cette expression…), et j'ai lu il n'y a pas si longtemps qu'ils ne gagnaient pas autant qu'ils l'espéraient depuis l'arrêt de la pub sur les chaînes publiques et la multiplication des chaînes TNT (je n'ai pas la source).

Ce que je trouve très discutable, c'est que même si on télécharge les vidéos pour les regarder comme on le souhaite (sans coupure, sur un autre appareil, un ou deux mois plus tard, sans pub avant/pendant/après, ou ¼h à la fois quand on a le temps…), on est bien obligé de visionner ces pubs à la tv ou sur les sites pour choisir le programme, que ça soit sur tf1 ou sur pluzz, sur les pages, avant la vidéo, en cas de coupure et donc de rechargement… on rémunère donc nous aussi le diffuseur.

Je suis tout à fait d'accord pour participer à la rémunération des différents acteurs de cette "industrie du divertissement", mais pas du tout pour me faire bourrer le crane pour que des entreprises cotées en bourse soient encore mieux cotées en bourse…

Mais ce n'est qu'un point de vue qui ne pèserait sans doute pas bien lourd dans un procès sans un très bon avocat.

Je pensais avancer sur le code ce soir mais j'ai passé un peu plus de temps que prévu sur ce post hmm… comme quoi ça fait réfléchir le risque de la "mise en demeure" wink

À+

Hors ligne

#405 Le 18/07/2013, à 07:41

bibichouchou

Re : TVDownloader: télécharger les médias du net ! [2]

salut k3c et les autres,

oui, j'ai vu la nouvelle sur le site de korben aussi. ça craint.
mais je le redoutais étant donné la visibilité de + en + grande de cap*vty...
un truc qu'ils ne comprennent pas, c'est que les internautes utilisent peut-être un bloqueur de pub. Donc même si on va sur leur site moisi, on ne visionne pas forcément les pubs et donc notre visite ne leur rapporte pas plus. et comme le dit pacome, ce type de logiciel ne remplace pas complètement une visite sur le site des chaînes.
pour notre cas, on est une toute petite communauté. Pour vivre heureux, vivons cachés...

Dernière modification par bibichouchou (Le 18/07/2013, à 07:42)

Hors ligne

#406 Le 18/07/2013, à 08:34

k3c

Re : TVDownloader: télécharger les médias du net ! [2]

@ bibichouchou et pacome

Je ne crains pas une mise en demeure venant de TF1 pour la discussion tvdownloader :-)
Ils vont nous demander d'arrêter d'écrire des scripts ? Comme dit bibichouchou, au pire, on, se fait une communauté, moins visible que ubuntu-fr, et on continue.
Oui la pub est le principal modèle économique de plein de boites (un exemple, Google), mais Adblock existe depuis longtemps, et plein de sites web vivent quand même.


Archlinux sur Xiaomi Air 13

Hors ligne

#407 Le 18/07/2013, à 09:21

duocore

Re : TVDownloader: télécharger les médias du net ! [2]

thom83 a écrit :

@ duocore
Suivant le lien https://github.com/K-S-V/Scripts/wiki à la rubrique Manual method, il est proposé de faire un Ctrl+Shift+K pour faire apparaitre l'icone de HDS Link Detector.

Ensuite, c'est le clic sur cette icone qui active ou désactive l'outil.

je suis rester a la version firefox 20 et HDS 0.5

je vais tester cela plus tard

Hors ligne

#408 Le 18/07/2013, à 16:03

k3c

Re : TVDownloader: télécharger les médias du net ! [2]

N'ayant pas reçu de mise en demeure de Gulli, voici un script testé sur quelques épisodes de "Les Parents", "Madame la proviseur"

Les noms des vidéos sont sans lettres accentuées, donc numéro devient numro, car j'ai galéré avec le HTML qui ne s'annonce ni UTF-8, ni quoi que ce soit.

Exemple

python gulli.py http://replay.gulli.fr/replay/video/series/les_parent/VOD360967 -V
INFO:	16:02:06: verbose mode
INFO:	16:02:06: url: ['http://replay.gulli.fr/replay/video/series/les_parent/VOD360967']
INFO:	16:02:07: rtmpdump -r rtmp://stream2.lgdf.yacast.net/gulli_replay/ -a gulli_replay/ -f LNX 11,2,202,291 -W http://cdn1-gulli.ladmedia.fr/extension/lafrontoffice/design/standard/flash/jwplayer/release/player.swf -p http://replay.gulli.fr/replay/video/series/les_parent/VOD360967 -y mp4:29303VOD317.mp4 -o _Les_Parent_-_Saison_1_-_tude_de_murs_-_Episode_numro_4_-_Gulli_Replay_.flv --port 443 --timeout 10

le script

#!/usr/bin/python
#-*- coding:utf-8 -*-
# Gulli 0.1 par k3c

# args & log
import argparse
from time import localtime, strftime
import logging

import subprocess, re, sys, shlex
import socket
import urllib2                  # → urlopen & exceptions
from urllib2 import URLError
from urllib2 import urlopen
import time, random
import bs4 as BeautifulSoup
from urlparse import urlparse
import string
import unicodedata

# global var
scriptName = 'gulli.py'
scriptVersion = '0.1'
validFilenameChars = "-_.() %s%s" % (string.ascii_letters, string.digits)


# programmes externes utilisés
ffmpegEx = 'ffmpeg'               # ou avconv
rtmpdumpEx = 'rtmpdump'
curlEx = 'curl'

def removeDisallowedFilenameChars(filename):
    "Remove invalid filename characters" 
    filename = filename.decode('ASCII', 'ignore')
    cleanedFilename = unicodedata.normalize('NFKD', filename).encode('ASCII', 'ignore')
    cleanedFilename = cleanedFilename.replace(' ', '_')
    return ''.join(c for c in cleanedFilename if c in validFilenameChars)

listeUserAgents = [ 
    'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; fr-fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1',
    'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1',
    'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.',
    'Mozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori',
    'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1',
    'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312',
    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11',
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.940.0 Safari/535.8' ]

# random user agent
ua = random.choice(listeUserAgents)

# global logger
log = logging.getLogger(__name__)

defaultSwfPlayerUrl = "http://cdn1-gulli.ladmedia.fr/extension/lafrontoffice/design/standard/flash/jwplayer/release/player.swf" 

def checkExternalProgram(prog, optArg='', expectedValue=''):
    """ Permet de vérifier la présence des programmes externes requis """
    log.debug('→checkExternalProgram(%s, %s, %s)'%(prog, optArg, expectedValue))
    args = shlex.split('%s %s' % (prog, optArg))
    try:
        process = subprocess.Popen(args,
                                 stdout=subprocess.PIPE,
                                 stderr=subprocess.STDOUT)
        stdout, stderr = process.communicate()
        if expectedValue == '':
            return True
        elif expectedValue in stdout: # à améliorer pour versions > ...
            return True
        else:
            return False
    except OSError:
        log.error('Le programme %s n\'est pas présent sur votre système' % (prog))
        return False

def get_soup(url, ua):
    """ on récupère la soupe """
    req  = urllib2.Request(url)
    req.add_header('User-Agent', ua)
    soup = urllib2.urlopen(req).read()
    # log.debug('←get_soup(%s, %s, %s): %s' % (url, ua, soup))
    return soup


def rtmpDownload(rtmpUrl,
                 swfPlayerUrl,
                 swfForceRefresh):
    """ Appel de rtmpdump avec traitement des options et reprise (récursif)
    """
    global titre
    log.debug('→rtmpDownload(%s, %s, %s)' % (
            rtmpUrl, swfPlayerUrl, swfForceRefresh))
#exemple de commande
#rtmpdump -r "rtmp://stream2.lgdf.yacast.net/gulli_replay/" -a "gulli_replay/" -f "LNX 11,2,202,291" 
#-W "http://cdn1-gulli.ladmedia.fr/extension/lafrontoffice/design/standard/flash/jwplayer/release/player.swf" 
#-p "http://replay.gulli.fr/replay/video/series/les_parent/VOD360869" -y "mp4:29248VOD317.mp4" -o le_nom_qu_on_veut
    titre = re.sub('__+', '_', titre)
    rtmpCmd = '%s -r %s -a %s -f %s -W %s -p %s -y %s -o %s --port 443 --timeout 10' % (rtmpdumpEx, "rtmp://stream2.lgdf.yacast.net/gulli_replay/", "gulli_replay/", "LNX 11,2,202,291", "http://cdn1-gulli.ladmedia.fr/extension/lafrontoffice/design/standard/flash/jwplayer/release/player.swf" , sys.argv[1], lemp4, titre )    # initialisation de la commande
    log.info(rtmpCmd)
    rtmpCall = shlex.split(rtmpCmd)

    rtmpProc = subprocess.Popen(rtmpCall,
                                stdout=subprocess.PIPE,
                                stderr=subprocess.STDOUT)
    (stdout, stderr) = rtmpProc.communicate()


    if rtmpProc.returncode == 1:   # sortie en erreur →
        if swfComputeHashSize:     # on ré-essaye avec le calcul par rtmpdump
            return rtmpDownload(rtmpUrl, swfPlayerUrl, True,
                                False)
        else:               # rtmpdump computation & refresh KO →
            log.warning ('Veuillez ré-essayer plus tard (pb réseau ou algo?)')
    elif rtmpProc.returncode == 2:   # téléchargement incomplet →
        log.info('Téléchargement incomplet: nouvel essai dans 3s...')
        time.sleep(3)                # petite temporisation
        
    else:
        return rtmpProc.returncode # = 0

def downloadVideo(videoUrl, swfPlayerUrl, swfForceRefresh):
    """ recuperation de vidéos sur Gulli"""
    log.debug('→downloadVideo(%s, %s, %s)' % (videoUrl, swfPlayerUrl, swfForceRefresh))
    # timeout en secondes
    socket.setdefaulttimeout(90)
    get_id(sys.argv[1])
    global lemp4
    url_smil = "http://replay.gulli.fr/replay/smil/" + str(ident)
    try:
        le_smil = urllib2.urlopen(url_smil).read()
        # contient un truc du genre
        # {"smil":"http:\/\/cdn1-gulli.ladmedia.fr\/var\/storage\/imports\/replay\/smil\/VOD360869.smil","filename":"29248VOD317.mp4"}
        m = re.search('[0-9]+VOD[0-9\.]?.*mp4', le_smil)
        lemp4 = 'mp4:' + m.group(0)
        # par exemple m.group(0) va valoir dans ce cas 29248VOD317.mp4
    except URLError, e :
        print e.code                
        log.error( URLError, e, url_smil)
        return
    rtmpDownload("rtmp://stream2.lgdf.yacast.net/gulli_replay/",
                 swfPlayerUrl,
                 swfForceRefresh)
        

def get_id(url):
    """ récupère l'identifiant de la vidéo"""
    # exemple d'url
    # http://replay.gulli.fr/replay/video/series/la_methode_becky/VOD361555
    global ident
    global titre
    html = urlopen(sys.argv[1]).read()
    soup = BeautifulSoup.BeautifulSoup(html, "html5lib")
    titre = soup.title.contents[0].encode('ascii', errors='replace')
    titre = removeDisallowedFilenameChars(titre) + ".flv"
    centre = urlparse(url)
    lepath = centre.path
    # dans ce cas lepath vaut '/replay/video/series/la_methode_becky/VOD361555'
    ident = lepath.split('/')[-1:]
    # par exemple ['VOD361555']
    ident = ''.join(ident)        
    # renvoie 'VOD361555'
    return ident

def main():
    """
    Analyse les arguments et lance le téléchargement
    """

    parser = argparse.ArgumentParser(prog=scriptName,
                                   description='Récuperation de vidéos sur' +
                                   ' Gulli.',
                                   version='%s v%s' % (scriptName,
                                                       scriptVersion))
    verbOrLog = parser.add_mutually_exclusive_group()
    verbOrLog.add_argument('-V', '--verbose',
                           help="affiche des messages",
                           dest='verbose',
                           action='store_true',
                           default=False)
    verbOrLog.add_argument('-l', '--log',
                           help="logue les messages",
                           dest='log',
                           action='store_const',
                           const='%s-%s.log' % (scriptName,
                                                strftime("%Y%m%d%H%M%S",
                                                         localtime())),
                           metavar='FILE')
    parser.add_argument('-p', '--swf-player-url',
                        help='url du player swf à utiliser (défaut= %s)' % (
            defaultSwfPlayerUrl),
                        dest='swfPlayerUrl',
                        default=defaultSwfPlayerUrl,
                        action='store',
                        metavar='URL')
    parser.add_argument('-f', '--swf-force-refresh',
                        help='force la vérification du hash/size du player swf' +
                        ' (met éventuellement à jour ~/.swfinfo)',
                        dest='swfForceRefresh',
                        default=False,
                        action='store_true')
    parser.add_argument('url',
                        help='url de la page de la video',
                        metavar='URL',
                        nargs='+')
    args = parser.parse_args()

    if args.verbose:
        logging.basicConfig(format='%(levelname)s:\t%(asctime)s: %(message)s',
                            datefmt='%H:%M:%S',
                            level=logging.INFO)
        log.info('verbose mode')
    else:
        if args.log:
            logging.basicConfig(filename=args.log,
                                format='%(levelname)s:\t%(asctime)s: %(message)s',
                                datefmt='%H:%M:%S',
                                level=logging.DEBUG)
            log.info(args.log)
        else:
            logging.basicConfig(format='%(message)s',
                                datefmt='%H:%M:%S',
                                level=logging.WARNING)
    if args.url:
        for url in args.url:
            log.info('url: %s' % (args.url))
            downloadVideo(url,
                             args.swfPlayerUrl,
                             args.swfForceRefresh)

if __name__ == "__main__":
    main()

Archlinux sur Xiaomi Air 13

Hors ligne

#409 Le 19/07/2013, à 15:29

11gjm

Re : TVDownloader: télécharger les médias du net ! [2]

Bonjour ,

@k3c : Merci pour le .py . Suite à cela , j'ai essayé 2 batchs , port : 443 et 1935 .

rtmpdump -V -v -r "rtmp://stream2.lgdf.yacast.net/gulli_replay/29303VOD317.mp4" -c 1935 -m 10 -k 1 -o "P1935_Les_Parents_Saison1Episode4.flv"
rem
rtmpdump -V -v -r "rtmp://stream2.lgdf.yacast.net/gulli_replay/29303VOD317.mp4" -c 443 -m 10 -k 1 -o "P443_Les_Parents_Saison1Episode4.flv"
...

Pour apporter d'autres infos éventuelles .

Cordialement .

Hors ligne

#410 Le 21/07/2013, à 19:08

k3c

Re : TVDownloader: télécharger les médias du net ! [2]

J'ai l'impression que Pluzz est en train de chiffrer ses flux, avec Akamai DRM, exemple avec Private Practice

gg@vientiane:~$ php AdobeHDS.php --manifest "http://ftvodhdsecz-f.akamaihd.net/z/streaming-adaptatif_media-secure_france-dom-tom/2013/S29/J1/85465011-20130715-,398,632,934,k.mp4.csmil/manifest.f4m?hdnea=exp=1374426869~acl=%2fz%2fstreaming-adaptatif_media-secure_france-dom-tom%2f2013%2fS29%2fJ1%2f85465011-20130715-*~hmac=501695c3f4a4d38fd6152a8f5c8c7844b53186d2915666c508cc10ab080a4305&hdcore=2.8.0&g=XRVVHQJZDCPG" --delete --auth "pvtoken=st%3D0000000000%7Eexp%3D9999999999%7Eacl%3D%252f%252a%7Edata%3DZXhwPTEzNzQ1MTI2NzB+YWNsPSUyZip+ZGF0YT1wdmMsc35obWFjPTdmYWUwMTI3NzI3NWJjMTY3Yjc0ZWRhY2RkMmViZWRmZGFjOGEyMDM1YjM2ZDA1ZjIzN2EwNDJjZGI4NDg0NGU%3D%2147DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU%3D%7Ehmac%3DDCFC1A048E926110FCA971454CE0F122D4C1D2519E8410A249D293957C735666&hdntl=exp=1374512670~acl=%2fz%2fstreaming-adaptatif_media-secure_france-dom-tom%2f2013%2fS29%2fJ1%2f85465011-20130715-*~data=hdntl~hmac=c4f69d742d60af3d279080b22679d8b98f1aa5f8bf8bfda396fb9366abb67d2d&als=0,0.1,0,0,0,NaN,0,0,0,21,f,0,2466.8,f,s,XRVVHQJZDCPG,2.8.0,21&hdcore=2.8.0" --useragent "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:22.0) Gecko/20100101 Firefox/22.0"

                            KSV Adobe HDS Downloader

Processing manifest info....                                                   
Quality Selection:                                                             
 Available: 827 573 303
 Selected : 827                                                                
This stream is encrypted with Akamai DRM. Decryption of such streams isn't currently possible with this script.

Archlinux sur Xiaomi Air 13

Hors ligne

#411 Le 21/07/2013, à 19:53

pacome

Re : TVDownloader: télécharger les médias du net ! [2]

Bonjour à tous.

J'ai poussé une nouvelle version de watdl.py intégrant toutes les modifications que j'ai pu faire pour l'adapter aux nouvelles "protections" mais il en reste au moins une qui m'échappe; le script échoue toujours sur la requête pour récupérer l'adresse rtmp avec une 403: Unauthorized access.

Soit il y des requêtes intermédiaires (par exemple les pubs, que je n'ai pas pris en compte) qui "disponibilisent" l'adresse, soit le calcul du token a été modifié. Je ne crois pas trop que ce soit lié a l'utilisation de cookies puisque j'obtiens cette adresse en jouant les requêtes tracées par tcpdump sans les utiliser.

C'est donc une version de travail non-fonctionnelle, mais si quelqu'un a une idée ou voit un truc je prends!

@k3c:
Merci pour le script pour Gulli; je le pousse sur github?

À+

Hors ligne

#412 Le 21/07/2013, à 21:03

k3c

Re : TVDownloader: télécharger les médias du net ! [2]

@ pacome

Merci pour le script, je vais regarder si je vois quelque chose.
Pour Gulli, oui, tu peux le pousser, j'ai honteusement pompé le squelette de watdl.


Archlinux sur Xiaomi Air 13

Hors ligne

#413 Le 22/07/2013, à 01:40

pacome

Re : TVDownloader: télécharger les médias du net ! [2]

@k3c:
gully.py a rejoint ses collègues sur replaydl smile
Note: j'ai du installer html5lib pour l'utiliser.

Pour ce qui est de «pomper» tu peux jeter un œil sur ce que j'ai fait d'un fork de pluzzdl ici tongue.
L'objectif de ce fork est de rassembler les fonctionnalités des scripts de replaydl dans un ensemble de classes et proposer une interface "standard" pour en rajouter d'autres (ça commençait à fonctionner avant les modifs de pluzz et de wat, mais je n'ai pas eu le temps d'y bosser depuis…).
Tu y verras ce bout de code:

# Pour éviter les erreurs:
# UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 213: ordinal not in range(128)
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

J'ai eu aussi pas mal de problème d'encodage avec des pages pas/mal «annoncées» en utf-8…

À+

Hors ligne

#414 Le 22/07/2013, à 09:08

ekström

Re : TVDownloader: télécharger les médias du net ! [2]

pacome a écrit :

soit le [...] token a été modifié

Un 1 est devenu un l, vers la fin de la chaîne.

Hors ligne

#415 Le 22/07/2013, à 09:40

k3c

Re : TVDownloader: télécharger les médias du net ! [2]

ekström a écrit :
pacome a écrit :

soit le [...] token a été modifié

Un 1 est devenu un l, vers la fin de la chaîne.

Bonjour

J'ai essayé de remplacer successivement les 3 derniers 1 par des I, sans succès.

Comment as-tu trouvé le nouveau token ?


Archlinux sur Xiaomi Air 13

Hors ligne

#416 Le 22/07/2013, à 11:07

ekström

Re : TVDownloader: télécharger les médias du net ! [2]

k3c a écrit :
ekström a écrit :
pacome a écrit :

soit le [...] token a été modifié

Un 1 est devenu un l, vers la fin de la chaîne.

Bonjour

J'ai essayé de remplacer successivement les 3 derniers 1 par des I, sans succès.

Comment as-tu trouvé le nouveau token ?

Un seul 1, en fait (le dernier).
Ouvre le SWF dans ShowMyCode.com, puis recherche "9b" dans la page.

Hors ligne

#417 Le 22/07/2013, à 11:14

k3c

Re : TVDownloader: télécharger les médias du net ! [2]

@ ekstrom

Ok merci

@ pacome

Merci pour l'astuce pour les problèmes d'encodage.
Gulli est le premier site sur lequel je galère autant pour ce type de problème.
Autant le site web d'un particulier, on peut concevoir qu'il ne se préoccupe pas de ce genre de subtilité, mais un site pro, fdans le secteur de la communication...


Archlinux sur Xiaomi Air 13

Hors ligne

#418 Le 22/07/2013, à 11:17

Defett

Re : TVDownloader: télécharger les médias du net ! [2]

k3c a écrit :
ekström a écrit :
pacome a écrit :

soit le [...] token a été modifié

Un 1 est devenu un l, vers la fin de la chaîne.

Bonjour

J'ai essayé de remplacer successivement les 3 derniers 1 par des I, sans succès.

Comment as-tu trouvé le nouveau token ?

Bonjour, apparemment il s'agit d'un l (L minuscule) et non pas d'un I (i majuscule) ;-)
J'en profite pour suivre la discussion...

Hors ligne

#419 Le 22/07/2013, à 11:26

k3c

Re : TVDownloader: télécharger les médias du net ! [2]

En fait

Le player V40 n'a pas changé

Dans le player V60, je trouves ces lignes

           var _local4 = "9b673b13fa4682ed14c3cfa5af5310274b514c4133e9b3a81e6e3aba009l2564";
            if ((((playerMain.getFlashVars().android == "1")) || ((playerMain.getFlashVars().getAndroid == "1")))){
                _local4 = "9b673b13fa4682ed14c3cfa5af5310274b514c4133e9b3a81e6e3aba00912564";

Donc la fin est l (L minuscule) 2564 au lieu de 12564 avant.

Mais le script utilise le player v40 pour l'instant.


Archlinux sur Xiaomi Air 13

Hors ligne

#420 Le 22/07/2013, à 12:52

pacome

Re : TVDownloader: télécharger les médias du net ! [2]

Bonjour!

@ekström, Defett et k3c: MERCI!
Je viens de modifier la chaîne de la base de calcul du token et ça fonctionne! J'ai fait uniquement 2 tests rapides (sans télécharger complètement les vidéos) et il semble que la HD soit à nouveau disponible pour "Les Experts"…

watdl.py v0.9.4.9 est donc opérationnel!

J'ai laissé le player v40 dans le script: il est utilisé pour la vérification de rtmpdump, mais je crois bien que le player chargé dans la page par LoaderExport et donc utilisé est "versionné" (?revision=4.1.207); il faudra que je le récupère pour vérifier ça.

À+

Hors ligne

#421 Le 22/07/2013, à 14:13

k3c

Re : TVDownloader: télécharger les médias du net ! [2]

@ pacome

J'ai téléchargé watdl 0949 mais je n'arrive à rien, j'ai essayé en forçant le recalcul du hash, pas mieux

gg@vientiane:~/pp$ python ../watdl_0949.py http://videos.tf1.fr/les-experts-las-vegas/episode-01-saison-11-tic-tac-7035188.html -V
INFO:	14:10:23: Traitement de l'url: http://videos.tf1.fr/les-experts-las-vegas/episode-01-saison-11-tic-tac-7035188.html
INFO:	14:10:23: rtmpdump --resume --rtmp "rtmpe://wske.wat.tv/ondemand/mp4:vod/HD-1280x720/04/15/8250415.hd" --port 1935 --timeout 10 --swfVfy http://www.wat.tv/images/v40/PlayerWat.swf -o "episode-01-saison-11-tic-tac-7035188-8250415.mp4"
INFO:	14:10:25: rtmpdump --resume --rtmp "rtmpe://wske.wat.tv/ondemand/mp4:vod/HD-1280x720/04/15/8250415.hd" --port 1935 --timeout 10 --swfVfy http://www.wat.tv/images/v40/PlayerWat.swf --swfAge 0 -o "episode-01-saison-11-tic-tac-7035188-8250415.mp4"
WARNING:	14:10:25: Veuillez ré-essayer plus tard...
INFO:	14:10:25: Problème réseau ou algo?
gg@vientiane:~/pp$ python ../watdl_0949.py http://videos.tf1.fr/les-experts-manhattan/replay-les-experts-manhattan-episode-17-saison-09-un-dernier-8124662.html -V
INFO:	14:11:27: Traitement de l'url: http://videos.tf1.fr/les-experts-manhattan/replay-les-experts-manhattan-episode-17-saison-09-un-dernier-8124662.html
INFO:	14:11:27: rtmpdump --resume --rtmp "rtmpe://wske.wat.tv/ondemand/mp4:vod/HD-1280x720/83/51/10678351.hd" --port 1935 --timeout 10 --swfVfy http://www.wat.tv/images/v40/PlayerWat.swf -o "replay-les-experts-manhattan-episode-17-saison-09-un-dernier-8124662-10678351.mp4"
INFO:	14:11:30: rtmpdump --resume --rtmp "rtmpe://wske.wat.tv/ondemand/mp4:vod/HD-1280x720/83/51/10678351.hd" --port 1935 --timeout 10 --swfVfy http://www.wat.tv/images/v40/PlayerWat.swf --swfAge 0 -o "replay-les-experts-manhattan-episode-17-saison-09-un-dernier-8124662-10678351.mp4"
WARNING:	14:11:30: Veuillez ré-essayer plus tard...
INFO:	14:11:30: Problème réseau ou algo?
gg@vientiane:~/pp$ 

Archlinux sur Xiaomi Air 13

Hors ligne

#422 Le 22/07/2013, à 14:27

ekström

Re : TVDownloader: télécharger les médias du net ! [2]

Il me semble que le swfVfy ne sert plus à rien, voire bloque la réception des données...

Hors ligne

#423 Le 22/07/2013, à 14:29

ekström

Re : TVDownloader: télécharger les médias du net ! [2]

pacome a écrit :

le player chargé dans la page par LoaderExport et donc utilisé est "versionné" (?revision=4.1.207);

Voir si ce paramètre n'a pas comme unique rôle la mise en cache forcée de chaque nouvelle version du SWF. Le reste du temps le SWF provient du cache utilisateur car non modifié.

Hors ligne

#424 Le 22/07/2013, à 14:46

Defett

Re : TVDownloader: télécharger les médias du net ! [2]

La même erreur que k3c:

$ python2 ./watdl.py http://videos.tf1.fr/fringe/saison5/replay-fringe-episode-1-saison-05-pensees-transitoires-8126565.html -V
INFO:	14:38:49: Traitement de l'url: http://videos.tf1.fr/fringe/saison5/replay-fringe-episode-1-saison-05-pensees-transitoires-8126565.html
INFO:	14:38:52: rtmpdump --resume --rtmp "rtmpe://wske.wat.tv/ondemand/mp4:vod/HD-1280x720/00/79/10670079.hd" --port 1935 --timeout 10 -o "replay-fringe-episode-1-saison-05-pensees-transitoires-8126565-10670079.mp4"
INFO:	14:38:52: rtmpdump --resume --rtmp "rtmpe://wske.wat.tv/ondemand/mp4:vod/HD-1280x720/00/79/10670079.hd" --port 1935 --timeout 10 -o "replay-fringe-episode-1-saison-05-pensees-transitoires-8126565-10670079.mp4"
WARNING:	14:38:52: Veuillez ré-essayer plus tard...
INFO:	14:38:52: Problème réseau ou algo?

J'ai essayé de désactiver le swfVfy, ce qui m'a permis d'obtenir une partie du son du replay, mais ça a planté avec "Téléchargement incomplet: nouvel essai dans 3s...", depuis j'obtiens la même erreur "Problème réseau ou algo?".
EDIT: ah, ça fonctionne apparemment, enfin je n'ai que le son... et on dirait qu'il essaye plusieurs langues différentes (wtf? :-P)

Dernière modification par Defett (Le 22/07/2013, à 14:54)

Hors ligne

#425 Le 22/07/2013, à 14:47

k3c

Re : TVDownloader: télécharger les médias du net ! [2]

Bon, j'enfonce une porte ouverte, mais les scripts faisant du curl marchent, et ceux avec rtmpdump non.

python ../watdl_0949.py http://videos.tf1.fr/section-de-recherches/replay-section-de-recherches-dernier-acte-8128318.html -V
INFO:	14:27:13: Traitement de l'url: http://videos.tf1.fr/section-de-recherches/replay-section-de-recherches-dernier-acte-8128318.html
INFO:	14:27:13: curl "http://4med.wat.tv/get/d5af85e73218e5cde084ae9ae7419bf4/51ed2521/2/HD-1280x720/17/01/10671701.hd?bu=TF1&login=section-de-recherches&i=78.193.85.106&u=20874cf5d0761dca7ae3253a1cfa6df6&sum=b0c67d59dfe2d6fa6960871244cb265c&st=YRPhYVr2SLnPn0zcaFFZFw&e=1374625633&t=1374496033&seek=wat" -C - -L -g -A "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:22.0) Gecko/20100101 Firefox/22.0" -o "replay-section-de-recherches-dernier-acte-8128318-10671701.mp4"

Archlinux sur Xiaomi Air 13

Hors ligne