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.

#1376 Le 24/02/2012, à 12:58

k3c

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

Dans Navigateur.py, j'ai remplacé la ligne commençant par cookie.value += par ce qui suit

cookie.value += "; PV-IDENT=exp=1330166750~acl=%2f*~hmac=bd21ab1744354fdd05372dae1700c7af86bf005f4d350ad70bf9211fcb92b762"

et je suis en train de télécharger "plus belle la vie"

Oui, bricolage, tout ça...

Edit : téléchargement terminé, 24 mns 10 sec

Dernière modification par k3c (Le 24/02/2012, à 13:02)


Archlinux sur Xiaomi Air 13

Hors ligne

#1377 Le 24/02/2012, à 21:22

chaoswizard

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

J'ai pi être une idée !

exp = expire
et la valeur = timestamp

Ça a l'air cohérent : 1330166750 <-> Sat, 25 Feb 2012 10:45:50 GMT

Reste plus qu'a trouvé comment avoir le hmac big_smile

EDIT : Il suffit peut être de prendre le exp d'une page au hasard avec le hmac qui correspond...
Ouais, je ne sais pas, je regarde ça demain !

Dernière modification par chaoswizard (Le 24/02/2012, à 21:25)


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#1378 Le 24/02/2012, à 21:35

LeSylV

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

Bonjour. Désolé, mais mon post est celui d'un nul en script. Et depuis le passage à Oneiric, je galère car plus rien ne fonctionne. Bon, mon problème : je voudrais récupérer

http://www.pluzz.fr/vaccins-le-virus-du-doute.html
(docu sur France 5)
mais

python main.py http://www.pluzz.fr/vaccins-le-virus-du-doute.html

me renvoie :

python: can't open file 'main.py': [Errno 2] No such file or directory

Ai-je fais une mauvaise manip ?


La route est longue pour ceux qui veulent accéder à la liberté !

Hors ligne

#1379 Le 24/02/2012, à 21:42

czed

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

Oui je confirme pour la valeur exp, mais le hmac a l'air un peu plus compliqué

Flo_ a écrit :
czed a écrit :

Dans les traces on voit apparaitre ce cookie sans trop savoir d'où il vient (le lecteur Flash peut être ?)

Petite précision, je n'ai pas flash d'installé ^^
Donc ça ne devrait pas avoir de rapport avec.

Flo

Je ne voulais pas dire qu'il fallait avoir Flash pour télécharger la vidéo avec PluzzDL, mais plutôt qu'il fallait lancer la vidéo avec le lecteur Flash pour trouver le cookie dans les traces (PV-IDENT=exp=1330166750~acl=%2f*~hmac=bd21... par exemple)

@LeSylV : malheureusement PluzzDL ne marche plus pour l'instant, une solution serait de modifier une ligne de Navigateur.py avec cette valeur

cookie.value += "; PV-IDENT=exp=1330166750~acl=%2f*~hmac=bd21ab1744354fdd05372dae1700c7af86bf005f4d350ad70bf9211fcb92b762"

PS: Sous Windows Captvty remarche et si je ne me trompe la solution que son auteur a trouvé, c'est de publier manuellement le fameux cookie sur son site. Cookie que Captvty récupère ensuite et utilise pour télécharger les vidéos

Dernière modification par czed (Le 24/02/2012, à 21:47)

Hors ligne

#1380 Le 24/02/2012, à 22:11

LeSylV

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

Merci czed. Mais je suis vraiment pas doué.

czed a écrit :

@LeSylV : malheureusement PluzzDL ne marche plus pour l'instant, une solution serait de modifier une ligne de Navigateur.py avec cette valeur

Comment faire concrètement pour modifier Navigateur.py ?


La route est longue pour ceux qui veulent accéder à la liberté !

Hors ligne

#1381 Le 24/02/2012, à 22:49

LeSylV

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

C'est bon, je l'ai trouvé et édité. Je rajoute juste la ligne ? En effet, aucune ligne commençant par cookie.value +=

Voici ce que me donne :  user/share/tvdoawloader/navigateur.py :

#!/usr/bin/env python
# -*- coding:Utf-8 -*-

#########################################
# Licence : GPL2 ; voir fichier COPYING #
#########################################

# Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation (version 2 ou bien toute autre version ultérieure choisie par vous).
# Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de commercialisation ou d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU pour plus de détails.
# Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis.

###########
# Modules #
###########

import urllib
import urllib2
import mechanize

import random
import re
import threading
import time

import logging
logger = logging.getLogger( __name__ )

#
# Liste d'user agent
#
listeUserAgents = [ 'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1',
                    'Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1',
                    'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3',
                    'Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6',
                    'Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2',
                    'Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1',
                    'Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2) Gecko/20100115 Firefox/3.6',
                    'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13',
                    'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
                    'Mozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori',
                    'Opera/8.50 (Windows NT 5.1; U; en)',
                    'Opera/9.80 (X11; Linux x86_64; U; fr) Presto/2.2.15 Version/10.00',
                    'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312' ]

##########
# Classe #
##########

## Classe Navigateur pour charger les pages web
class Navigateur( object ):
    
    timeOut   = 5
    maxThread = 10
    
    ## Constructeur
    def __init__( self ):
        
        # Navigateur
        self.navigateur = mechanize.Browser()
        
        #
        # Options du Navigateur
        #

        # User Agent
        self.navigateur.addheaders = [ ('User-agent', random.choice( listeUserAgents ) ) ]
        # 
        self.navigateur.set_handle_equiv( True )
        # Active compression gzip
        #~ self.navigateur.set_handle_gzip( True )
        # 
        self.navigateur.set_handle_redirect( True )
        # N'ajoute pas le referer a l'en-tete
        self.navigateur.set_handle_referer( False )
        # Ne prend pas en compte les robots.txt
        self.navigateur.set_handle_robots( False )
        # Ne doit pas gerer les cookies
        self.navigateur.set_cookiejar( None )
        
    ## Methode pour recuperer une page web
    # @param  URLPage URL de la page web a charger
    # @return Code de la page
    def getPage( self, URLPage ):
        logger.info( "acces a la page %s" %( URLPage ) )
        try:
            # Page a charger
            page = self.navigateur.open( URLPage, timeout = self.timeOut )            
            
            # Si le fichier est un XML
            if( URLPage[ -4 : ] == ".xml" ):
                # On la page telle quelle, sans aucun traitement
                return page.read()
            else: # Sinon, on va cherche a determiner son encodage
                
                # Donnees de la page
                donnees = self.unescape( page.read() )
                
                # On recupere si possible l'encodage de la page
                contentType = page.info()[ "Content-type" ]
                # Type d'encodage de la page
                encodagePage = ""
                # On extrait l'encodage
                res = re.findall( "charset=(.+)", contentType )
                if( len( res ) != 0 ):
                    encodagePage = res[ 0 ].lower()
                
                # Si on a trouve un encodage et qui n'est pas de l'utf-8
                if( encodagePage != "" and encodagePage != "utf-8" ):
                    # On retourne la page dans le bon encodage
                    return unicode( donnees, encodagePage ).encode( 'utf-8', 'replace' )
                else:
                    return donnees
        except urllib2.URLError, erreur:
            try:
                logger.error( erreur.reason )
            except :
                pass
            return ""
        except:
            return ""
    
    ## Methode pour recuperer plusieurs pages web
    # @param listeURL Liste des URLs des pages web a charger
    # @return         La liste (dictionnaire) des pages web recuperees { URLPage : Page }
    def getPages( self, listeURL ):
        ## Sous methode qui gere le telechargement d'une page (thread)
        # @param URLPage   URL de la page a charger
        def ajoutPage( self, URLPage ):
            # On a un thread lance de plus
            self.lock.acquire()
            self.nbThreadLances += 1
            self.lock.release()
            
            # On recupere la page web
            try:
                page = self.getPage( URLPage )
            except:
                page = ""
            #~ print "DL de %s fini" %( URLPage )
            
            # On ajoute la page a la liste et on a un thread lance de moins
            self.lock.acquire()
            self.listePage[ URLPage ] = page
            self.nbThreadLances -= 1
            self.lock.release()
            
        self.listePage      = {}
        self.nbThreadLances = 0
        indiceActuelListe   = 0
        tailleListe         = len( listeURL )
        self.lock           = threading.Lock()
        
        # Boucle pour lancer les threads
        self.lock.acquire()
        while( indiceActuelListe < tailleListe ): # Tant qu'on a pas fini de parcourir la liste
            if( self.nbThreadLances < self.maxThread ): # Si on peut encore lance des threads
                #~ print "Indice = %d" %( indiceActuelListe )
                self.lock.release()
                # On en lance un
                threading.Thread( target = ajoutPage, 
                                  args = ( self, listeURL[ indiceActuelListe ] ) 
                                ).start()
                indiceActuelListe += 1
                #~ self.lock.release()
                #~ time.sleep( 0.01 ) # Legere attente pour que le thread ait le temps d'incrementer le nombre de threads lances
            else: # Sinon,
                # On attend un peu avant de reessayer
                self.lock.release()
                time.sleep( 0.1 )
            #~ print self.nbThreadLances
            self.lock.acquire()
        self.lock.release()
        
        # Boucle pour attendre la fin de tous les threads
        self.lock.acquire()
        while( self.nbThreadLances > 0 ): # Si des threads ne sont pas finis
            #~ print self.nbThreadLances
            # On attend un peu
            self.lock.release()
            time.sleep( 0.1 )
            self.lock.acquire()
        self.lock.release()
        
        return self.listePage
    
    ## Methode pour recuperer une image
    # @param  URLPicture URL de l'image a charger
    # @return Image
    def getPicture( self, URLPicture ):
        try:
            # Image a charger
            page = self.navigateur.open( URLPicture, timeout = self.timeOut )
            
            # Donnees de l'image
            donnees = page.read()
            
            return donnees
        except urllib2.URLError, erreur:
            try:
                logger.error( erreur.reason )
            except :
                pass
            return ""

    def unescape( self, texte ):
        def ent2chr( m ):
            code = m.group( 1 )
            if( code.isdigit() ): 
                code = int( code )
            else:
                code = int( code[ 1 : ], 16 )
            if( code < 256 ): 
                return chr( code )
            else: 
                return '?'

        texte = texte.replace( "&lt;", "<" )
        texte = texte.replace( "&gt;", ">" )
        texte = texte.replace( "&amp;", "&" )
        texte = re.sub( r'\&\#(x?[0-9a-fA-F]+);', ent2chr, texte )
        return texte

#~ n = Navigateur()
#~ 
#~ print n.getPages( [ "[url]http://effbot.org/zone/thread-synchronization.htm[/url]",
              #~ "http://www.google.fr/" ] )

Dernière modification par LeSylV (Le 24/02/2012, à 23:30)


La route est longue pour ceux qui veulent accéder à la liberté !

Hors ligne

#1382 Le 25/02/2012, à 00:30

ub821

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

czed a écrit :

Oui je confirme pour la valeur exp, mais le hmac a l'air un peu plus compliqué

...
Flo
Je ne voulais pas dire qu'il fallait avoir Flash pour télécharger la vidéo avec PluzzDL, mais plutôt qu'il fallait lancer la vidéo avec le lecteur Flash pour trouver le cookie dans les traces (PV-IDENT=exp=1330166750~acl=%2f*~hmac=bd21... par exemple)

...

Oh, purée... c'te manip qu'"ils" vous forcent à faire... ah, sont coquins, les p'tits gars... smile

Tout çà pour abonder avec czed, car tant que l'on ne lance pas le démarrage, en faisant "inspection de l'élément" sur la page concernée, rien ne s'affiche, puis au lancement de la vidéo, il y a pas mal d'informations (que je suis incapable de lire et d'interpréter... ) qui s'affichent !
toujours cela avec chromium !
Firefox fait de même ?


Cordialement
Bernard
Debian 10.0 / HP-8200SFF, Intel I7-2600, 3.4GHz, Ram 16Go, SSD 1To
Le Blog des bonnes questions à se poser, et comment se les poser...

Hors ligne

#1383 Le 25/02/2012, à 09:56

k3c

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

Un cookie tout neuf

PV-IDENT    exp=1330242849~acl=%2f*~hmac=d9c05bf4bb3d3b2bfe41bd75e961a4fc8f1cdb5596eea842320aec0400aa241b

Dernière modification par k3c (Le 25/02/2012, à 09:56)


Archlinux sur Xiaomi Air 13

Hors ligne

#1384 Le 25/02/2012, à 09:56

grandtoubab

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

salut,
Par Opera aussi c'est possible

Clic droit sur la video en flash -> inspecter l'élément
onglet reseau
1330156198.png

@ubuntu-desktop:~/Linux/new_pluzz$ python main.py http://www.pluzz.fr/jt-reunion-.html
[INFO    ]  PluzzDL.py          Début du téléchargement des fragments
[CRITICAL]  PluzzDL.py          Impossible de charger la vidéo

Petite modif du code:

@ubuntu-desktop:~/Linux/new_pluzz$ sudo gedit Navigateur.py
[sudo] password for xxx:

            # Modif à la con du cookie >< !
            for cookie in self.cookiejar:
                if( cookie.name == "hdntl" and cookie.value.find( "PV-IDENT" ) == -1 ):
                    cookie.value += "; PV-IDENT=exp=1330242038~acl=%2f*~hmac=2cfbd2251bf4ce6b0a0162f53fe95c13dc7206caf189f2a6cc2c6de33255001f"

J'ai récupéré les infos de la fenetre Opera en les sélectionnant puis par Ctrl + C et coller Ctrl +V

ça ma l'air de bien télécharger j'ai un fichier jt-reunion-.flv qui se remplit

@ubuntu-desktop:~/Linux/new_pluzz$ python main.py http://www.pluzz.fr/jt-reunion-.html
[INFO    ]  PluzzDL.py          Début du téléchargement des fragments

Nickel cool

@ubuntu-desktop:~/Linux/new_pluzz$ python main.py http://www.pluzz.fr/jt-reunion-.html
[INFO    ]  PluzzDL.py          Début du téléchargement des fragments
[INFO    ]  PluzzDL.py          Fin du téléchargement
@ubuntu-desktop:~/Linux/new_pluzz$

42 minutes d'infos sur les émeutes ça change de tf1

Dernière modification par grandtoubab (Le 25/02/2012, à 10:02)


Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....

Hors ligne

#1385 Le 25/02/2012, à 12:06

LesH

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

Bonjour à tous. Le fameux cookie est obtenu lors du chargement du manifest. A ce stade il est incomplet. Après lecture de la pub, il y a un get http://ftvodhdsecz-f.akamaihd.net/crossdomain.xml qui le met à jour en y ajoutant PV-IDENT=exp=.... Cela ressemble à un truc du genre : si tu n'as pas regardé la pub, pas de vidéo. Vive la pub !!! A+

Hors ligne

#1386 Le 25/02/2012, à 18:49

czed

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

Pour info une nouvelle révision est disponible : http://tvdownloader.googlecode.com/hg-h … Pluzz/src/
Merci chaoswizard wink

Hors ligne

#1387 Le 25/02/2012, à 19:40

chaoswizard

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

Oui, comme je n'ai pas trouvé pour l'instant, on va faire la méthode sale : une page web qui contient le cookie a utiliser.
S'il y avait 1 ou 2 volontaires pour m'aider à mettre à jour ce cookie, ça serait bien.

Solution provisoire en attendant...


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#1388 Le 25/02/2012, à 20:10

k3c

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

@chaoswizard

Oui je pensais à cela, je suis volontaire pour mettre à jour la page.

Par contre comment va se faire l'authentification ?

Dernière modification par k3c (Le 25/02/2012, à 20:11)


Archlinux sur Xiaomi Air 13

Hors ligne

#1389 Le 25/02/2012, à 20:12

chaoswizard

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

J'ai crée "un site" sur un hébergeur gratuit.
Ce n'est pas très compliqué du coup !


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#1390 Le 25/02/2012, à 22:41

Hizoka

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

ca m'a l'air de passer smile

merci


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#1391 Le 25/02/2012, à 23:10

ub821

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

wink

chaoswizard a écrit :

Oui, comme je n'ai pas trouvé pour l'instant, on va faire la méthode sale : une page web qui contient le cookie a utiliser.
S'il y avait 1 ou 2 volontaires pour m'aider à mettre à jour ce cookie, ça serait bien.

Solution provisoire en attendant...

chaoswizard a écrit :

J'ai crée "un site" sur un hébergeur gratuit.
Ce n'est pas très compliqué du coup !

Indiques ce que tu souhaites chaoswizard que j'aide un ch'tit peu... wink


Cordialement
Bernard
Debian 10.0 / HP-8200SFF, Intel I7-2600, 3.4GHz, Ram 16Go, SSD 1To
Le Blog des bonnes questions à se poser, et comment se les poser...

Hors ligne

#1392 Le 25/02/2012, à 23:38

chaoswizard

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

Ben en gros, aller mettre à jour le cookie de temps en temps (il doit dure 1 jour normalement).


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#1393 Le 25/02/2012, à 23:40

k3c

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

Je viens de mettre un nouveau cookie, que j'ai testé avec succès.


Archlinux sur Xiaomi Air 13

Hors ligne

#1394 Le 25/02/2012, à 23:58

Hizoka

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

bon ba ca passe plus...

je pige pas grand chose ....


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#1395 Le 26/02/2012, à 00:01

k3c

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

Ca doit être mon cookie qui est pas bon, je regarde...


Archlinux sur Xiaomi Air 13

Hors ligne

#1396 Le 26/02/2012, à 00:17

k3c

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

C'est bizarre, le cookie dans l'ancienne version de Navigateur.py permet de télécharger, mais le même sur le site web de Chaoswizard ne le permet pas...
Il doit y avoir un problème de format...

Edit :  dans l'ancienne version de Navigateur.py, ce qui suit marche
grep PV Navigateur.py
                    if( cookie.name == "hdntl" and cookie.value.find( "PV-IDENT" ) == -1 ):
                        cookie.value += "; PV-IDENT=exp=1330285713~acl=%2f*~hmac=d3a3ccd7aedf647bd81135f6d3f37e05a6aff8444b5c159a261e1f0d5483a385"

Dernière modification par k3c (Le 26/02/2012, à 00:20)


Archlinux sur Xiaomi Air 13

Hors ligne

#1397 Le 26/02/2012, à 00:25

chaoswizard

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

Euh, le format dans le fichier doit être de la forme :
PV-IDENT=exp=1330285713~acl=%2f*~hmac=d3a3ccd7aedf647bd81135f6d3f37e05a6aff8444b5c159a261e1f0d5483a385
sans le " à la fin !


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#1398 Le 26/02/2012, à 00:31

k3c

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

Ok c'est noté, désolé pour la boulette.

Edit : j'ai modifié sur le site comme indiqué, mais ça ne passe toujours pas...

Edit2 : encore modifié, avec
PV-IDENT=exp=1330293698~acl=%2f*~hmac=e52a897c752d02f0188fa92eb65ee49cd9abc48c2fa9dbf9cacfeca0a280d96e
mais pas mieux.

Il faut le
PV-IDENT au début de la ligne ?

Edit3 :  ça remarche suite à une modif de Chaoswizard, mais je cherche laquelle !

Dernière modification par k3c (Le 26/02/2012, à 01:05)


Archlinux sur Xiaomi Air 13

Hors ligne

#1399 Le 26/02/2012, à 00:57

chaoswizard

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

Il me semble que oui.
Je vais voir.


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#1400 Le 26/02/2012, à 01:24

ub821

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

wink

chaoswizard a écrit :

Ben en gros, aller mettre à jour le cookie de temps en temps (il doit dure 1 jour normalement).

J'dois être bouché... sur quelle page aller mettre le cookie... ?


Cordialement
Bernard
Debian 10.0 / HP-8200SFF, Intel I7-2600, 3.4GHz, Ram 16Go, SSD 1To
Le Blog des bonnes questions à se poser, et comment se les poser...

Hors ligne