Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#2326 Le 02/11/2012, à 10:32

k3c

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

Et Tf1 est identique (pour le parsing) à TMC

>>> a = urlopen('http://videos.tf1.fr/mentalist/saison-4/episode-13-saison-04-la-preuve-par-la-plume-7608805.html').read()
>>> s = BeautifulSoup.BeautifulSoup(a)
>>> s.find('div', attrs={'class' : 'unique'})
<div class="unique"> <meta content="Flash" itemprop="playerType"/><meta content="640" itemprop="width"/><meta content="360" itemprop="height"/> <div id="FlashPlayer" style="background:#FFF; width:100%; height:360px"><div id="FlashPlayer2"></div></div><script charset="utf-8" src="http://s.wat.fr/js/v2.5/swfobject.js" type="text/javascript"></script><script charset="utf-8" src="http://s.wat.fr/js/v2.5/WATPlayer.js" type="text/javascript"></script><script type="text/javascript">if (!typeof(PWpreroll)) {var PWpreroll = '';}if ( typeof( sitepage ) != "undefined" ) {WATPlayer.showSyndicated({modeWatPlayEvent : 1,previewMedia : "http://s.tf1.fr/mmdia/i/74/0/10787740lncdh.jpg",mediaId : 8934147,enableCompanion : 1,isStartAd : true,ad20 : 1,modeWatMedia : true,autoStart : 1,wmode : "transparent",recoTf1 : "http://www.tf1.fr/js/video/poursuite/0, … 1351674736",unvId : "1",conId : "4479021",chaId : "2566327",setVolume : "10",playlistIdCustom : "2485724",baseURL : "http://www.wat.tv",url : "http://www.wat.tv/swfpu/112025nIc0K118934147",width : "100%",height : "100%",container : "FlashPlayer2", oasTag : sitepage, PWpreroll : PWpreroll});}else{WATPlayer.showSyndicated({modeWatPlayEvent : 1,previewMedia : "http://s.tf1.fr/mmdia/i/74/0/10787740lncdh.jpg",mediaId : 8934147,enableCompanion : 1,isStartAd : true,ad20 : 1,modeWatMedia : true,autoStart : 1,wmode : "transparent",recoTf1 : "http://www.tf1.fr/js/video/poursuite/0, … 1351674736",unvId : "1",conId : "4479021",chaId : "2566327",setVolume : "10",playlistIdCustom : "2485724",baseURL : "http://www.wat.tv",url : "http://www.wat.tv/swfpu/112025nIc0K118934147",width : "100%",height : "100%",container : "FlashPlayer2", PWpreroll : PWpreroll});}</script><script type="text/javascript">var permalinkWat = document.location.href;WATPlayer.setPermalink(permalinkWat);</script> </div>
>>> 'mediaId' in str(s.find('div', attrs={'class' : 'unique'}))
True
>>>


Acer Aspire One 150 8,9 "
Norhtec avec une Clé Usb bootable http://www.norhtec.com/products/mcsr/index.html

Toshiba Satellite L750

Hors ligne

#2327 Le 02/11/2012, à 13:53

11gjm

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

Bonjour ,

@k3c : Je ne suis pas un spécialiste de linux et de python .

1) sous win , j'ai créé un batch intégrant tout
=> plantage à cause des >>>
il faut taper : help , etc .

2) je créé un fichier .py ; là , c'est la caca !!!
indentation , mauvaise écriture .

Re-explique , STP .

A+ .

Hors ligne

#2328 Le 02/11/2012, à 14:47

k3c

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

@ 11gjm

Oui Python est un langage avec indentation mais il n'y en a absolument pas ici.

Ne fais pas de batch, tu fais Windows R, tu tapes

python

puis

from urllib2 import urlopen
import bs4 as BeautifulSoup
a = urlopen('http://videos.nt1.tv/haven/saison-2-episode-2-a-chacun-sa-peur-7598701-846.html').read()
soup = BeautifulSoup.BeautifulSoup(a)
soup.find('section', attrs={'class' : 'player-unique' })
'mediaId' in str(soup.find('section', attrs={'class' : 'player-unique' }))

Acer Aspire One 150 8,9 "
Norhtec avec une Clé Usb bootable http://www.norhtec.com/products/mcsr/index.html

Toshiba Satellite L750

Hors ligne

#2329 Le 02/11/2012, à 17:06

11gjm

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

Re-... ,

@k3c :

----
Suivant ta procédure Windows+R , python.exe ; on arrive dans une fenêtre dos .
Et , là , pas moyen de coller quoi que ce soit .

La seule possibilité est un batch , mais comment écrire que python doit lire les instructions .
exemple : python "read" fichier.txt (ou autre) .
----
Laisse tomber les tests .
----
Quand l'instruction :
"...\python.exe" tf1_02_retour.py http://videos.tmc.tv/las-vegas/saison-5 … ..848.html
fonctionne , le flux est interrompu n'importe quand (???) .

On relance le batch (python) , qui "Écrase" ce qui a déjà été enregistré .
----
D'où ma question : Pourrais-tu ajouter des lignes de commandes ,
afin de récupérer dans un fichier texte , toutes les données ['RTMPDUMP...à...mp4'] .

Auquel cas , on peut créer un batch ( sous Win ) , qui continue l'enregistrement à la suite (-e) .

=====
Pour mon instruction :
Où dois-je placer les fichiers .py ( exemple : tf1_02_retour.py ) ;
_ au niveau de Python.exe
_ ou au niveau de main.py

Il me semble que cela fonctione , quand c'est avec main.py .
=====

A+ .

Hors ligne

#2330 Le 02/11/2012, à 18:24

k3c

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

@ 11gjm

Tu peux peut-être écrire, de manière interactive, ce que j'ai indiqué ?
Ce n'est pas si long.
Sinon, on peut faire du paste dans une fenêtre DOS (édition modifier coller, ou un truc du genre).

Ok je vais ajouter dans un fichier la commande générée. Je pensais à le faire, quand on a une ligne de qualité pas terrible, ça peut être utile.
Mais il faut garder à l'esprit que la commande ne marchera pas longtemps (la durée de vie du token est courte).

Je n'ai pas compris, que vient faire ton fichier main.py ?
Si ton installation de Python est correcte, tu peux faire
python
de n'importe où, si ce n'est pas le cas, tu as sans doute oublié un truc à la fin de l'installation de Python (pythonpath, variable d'environnement Python...).

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


Acer Aspire One 150 8,9 "
Norhtec avec une Clé Usb bootable http://www.norhtec.com/products/mcsr/index.html

Toshiba Satellite L750

Hors ligne

#2331 Le 02/11/2012, à 18:29

chaoswizard

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

Je ne comprends pas trop ce que vous essayez de faire mais quelques infos en vrac :
- c'est assez pratique de rajouter dans le path le répertoire qui contient le binaire Python.exe
- en lançant

python

depuis cmd, on récupere un shell Python pour lancer des commandes Python (pratique pour faire des tests)
- en faisait

python script.py

on lance le script Python script.py (il faut cependant se trouver dans le bon répertoire, il est possible d'en changer avec la commande cd)
- je crois que la version "courante" de Beautiful soup est la 3, il faut faire attention de ne pas avoir de conflit avec la 4
- est-ce que Beautiful soup est bien installé ? (pas contenu par défaut avec l’interpréteur Python)


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#2332 Le 02/11/2012, à 19:18

k3c

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

@ chaoswizard

Je regardais pour un module BFMTV, en particulier des scripts utilisant pyamf et brightcove,

J'ai trouvé sur le site de BFMTV des choses comme
playerID=1227981751001
publisherID=876450610001
@videoPlayer" value="1940824583001

mais pas la constante que je vois ligne 26
de
http://code.google.com/p/xbmc-addons/so … .py?r=2267

envelope = build_amf_request( playerId, contentId, key, const )

Si tu as une idée...

Edit :  au fait, très belle page
http://c.brightcove.com/services/messagebroker/amf

Dernière modification par k3c (Le 03/11/2012, à 18:10)


Acer Aspire One 150 8,9 "
Norhtec avec une Clé Usb bootable http://www.norhtec.com/products/mcsr/index.html

Toshiba Satellite L750

Hors ligne

#2333 Le 04/11/2012, à 22:00

duocore

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

bibichouchou a écrit :

salut,

à chaoswizard : Félicitations pour la nouvelle mouture de pluzzdl (intégration des sous-titres). Ça fonctionne très bien.
à k3c, 11gjm : Merci pour le code. Pour tmc ou tf1, je dois veillir le jeton d'autentification pour que cela fonctionne : j'ai remplacé

ts = base36encode(int(time.time()))

par

ts = base36encode(int(time.time() + 60))

NB 1 : je ne peux pas faire marcher votre code tel quel mais comme ma distrib + ses paquets sont bloqués à l'époque 10.10, je pense que cela vient de moi.

NB 2 : votre code devrait marcher pour nt1 (modulo 1 modif ou 2) qui met ses vidéos chez wat.

à duocore : voilà une ligne de commande pour la viédo que tu mentionnes. Fontctionne chez moi avec rtmpdump v2.4. A utiliser rapidement. Pour la génération d'une telle ligne, voir le code de k3c/11gjm pour tf1/tmc.

rtmpdump -e -r 'rtmpte://wske.wat.tv/ondemand/mp4:vod/H264-384x288/11/23/8921123.h264?bu=&login=Haven-nt1&u=68a27801372a38cb7ddb916301c61d63&sum=1398f2768bbce391058a8db6dfabaaa8' -o Saison_2_-_Episode_2_A_chacun_sa_peur.mp4

Amicalement

j'ai essayer de comprendre comment faire pour recuperer les videos sur nt1, je ne comprend pas comment cela fonctionne

Hors ligne

#2334 Le 04/11/2012, à 22:17

k3c

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

@ duocore

Est-ce que tu peux taper (de manière interactive) les quelques lignes indiquées, pour vérifier si ton BeautifulSoup est correctement installé ?


Acer Aspire One 150 8,9 "
Norhtec avec une Clé Usb bootable http://www.norhtec.com/products/mcsr/index.html

Toshiba Satellite L750

Hors ligne

#2335 Le 04/11/2012, à 22:24

duocore

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

c'est bon le fichier python fonctionne , beautifulsoup n'etait pas installé

Je vous remercie de votre aide.

Hors ligne

#2336 Le 05/11/2012, à 21:49

mydjey

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

Bonjour,

J'ai essayé d'installer TVDownloader via le ppa sur Quantal 12.10, j'ai un retour 404 not found lors de l'update.
Après vérif le ppa pour Quantal ne semble pas être disponible.
Est-il prévu de le créer ?

Merci pour ce soft.


Mon site : http://mydjey.eu/

Hors ligne

#2337 Le 05/11/2012, à 22:15

11gjm

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

Bonjour ,

@k3c : Résultats des essais . Sorry pour le retard .

=== Préambule ===

Je suis sous Win XP SP3 . Donc , pas Linuxien !!!

Je possède plusieurs répertoires possédant "Python27" .
Indépendants les uns des autres .
Sans procédure particulière pour intégrer : BeautifulSoup ou bs4

Python ne fait pas partie de mon "Environnement" ,
ne souhaitant que des éléments portables .

=================

Je viens d'effectuer 5 essais différents .

=== Pour 3 ===

Après avoir entré :
soup = BeautifulSoup.BeautifulSoup(a)

J'ai le message d'erreur :
name BeautifoulSoup is not defined .

====
=== Pour 2 ===

après avoir tout entré .
Réponse finale : "False" .

=====

Q1 : Est-ce que le lien http est toujours valable ?

Q2 : Que dois-je faire pour initialiser bs4 et BeautifulSoup (3 ou 4) ?

Cordialement .

Hors ligne

#2338 Le 05/11/2012, à 23:35

k3c

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

@ duocore

je ne pense pas que ce soit une bonne idée (avoir plusieurs environnements Python 2.7)

Sinon pour BeautifulSoup 4, de mémoire, tu télécharges où tu veux, tu dézippes, puis

python setup.py install

va mettre où il faut BeautifulSoup, pour que ça soit disponible pour n'importe quel programme Python

Sinon un exemple de programme pour TF1/tmc qui sauvegarde la commande dans un fichier du nom de l'émission

# -*- coding:utf-8 -*-
# TF1 version 0.3 par k3c, correction de 11gjm
import subprocess, optparse, re, sys, os, shlex
import socket
from urllib2 import Request, urlopen, URLError, HTTPError
from urllib2 import ProxyHandler, Request, urlopen, URLError, HTTPError
import time,md5,random,urllib2
import bs4 as BeautifulSoup
timeout = 90
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.13
'
,
                                                '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' ]

def get_wat(id):
    ID_WAT = id
    def base36encode(number):
        if not isinstance(number, (int, long)):
            raise TypeError('number must be an integer')
        if number < 0:
            raise ValueError('number must be positive')
        alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
        base36 = ''
        while number:
            number, i = divmod(number, 36)
            base36 = alphabet[i] + base36
        return base36 or alphabet[0]
    ts = base36encode(int(time.time()))
    timesec = hex(int(ts, 36))[2:]
    while(len(timesec)<8):
        timesec="0"+timesec
    token = md5.new("9b673b13fa4682ed14c3cfa5af5310274b514c4133e9b3a81e6e3aba00912564/web/"+str(ID_WAT)+""+timesec).hexdigest()
    id_url1 = "http://www.wat.tv/get/web/"+str(ID_WAT)+"?token="+token+"/"+timesec+"&getURL=1&country=FR"
    return id_url1

def main():
    # timeout en secondes
    socket.setdefaulttimeout(timeout)
    usage   = "usage: python tmc_tf1.py     [options] <url de l'emission>"
    parser  = optparse.OptionParser( usage = usage )
    parser.add_option( "--nocolor",         action = 'store_true', default = False, help = 'desactive la couleur dans le terminal' )
    parser.add_option( "-v", "--verbose",   action = "store_true", default = False, help = 'affiche les informations de debugage' )
    ( options, args ) = parser.parse_args()
    if( len( args ) > 2 or args[ 0 ] == "" ):
        parser.print_help()
        parser.exit( 1 )
    the_url = sys.argv[1] 
    html = urlopen(sys.argv[1]).read()
    nom = sys.argv[1].split('/')[-1:][0]
    no = nom.split('.')[-2:][0]
    soup = BeautifulSoup.BeautifulSoup(html)
    debut_id = str(soup.find('div', attrs={'class' : 'unique' }))
    id = [x.strip() for x in re.findall("mediaId :([^,]*)",debut_id)][0]
    id_url1 = get_wat(id)
    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', random.choice(listeUserAgents))]
    data = opener.open(id_url1).read()
    opener.close()
    if data[0:4] == 'http':
        ua = random.choice(listeUserAgents)
        arguments = 'curl "%s" -L -g -A "%s" -o "%s.mp4"' % (data, ua, no)
        process = subprocess.Popen(arguments, stdout=subprocess.PIPE, shell=True).communicate()[0]
    if data[0:4] == 'rtmp':
	host = re.search('rtmpte://(.*)/ondemand',data).group(1)
        host = host.replace('rtmpte','rtmpe')
        player = "http://www.wat.tv/images/v40/PlayerWat.swf?revision=4.0.992"
        data0 = re.search('rtmpte://(.*)h264',data).group(0)
        data1 = re.search('&u=(.*)&sum',data).group(1)
        data2 = re.search('&sum=(.*)$',data).group(1)
        data3 = data1+data2
        app = re.search('wske.wat.tv/(.*)/mp4:vod',data).group(1)
        playpath = re.search('mp4:vod(.*).h264',data).group(0)
        cmds = 'rtmpdump -r "%s" -c 1935 -m 10 -w 40ee2a765514facfc6b1eb2745d22cdbdfaaf7f1488b17600c1a22dd3074735d -x 339543 -o "%s.mp4" " --resume"' % (data0, str(no)
)
        f = open(str(no),'w')
        f.write(cmds)
        f.close()
        arguments = shlex.split( cmds )
        process = subprocess.Popen( arguments, stdout = subprocess.PIPE).communicate()[0]
if __name__ == "__main__":
    main()

Tu peux ajouter les 3 lignes

        f = open(str(no),'w')
        f.write(cmds)
        f.close()

pour avoir un fichier du nom de l'émission, qui contiendra la commande rtmpdump


Acer Aspire One 150 8,9 "
Norhtec avec une Clé Usb bootable http://www.norhtec.com/products/mcsr/index.html

Toshiba Satellite L750

Hors ligne

#2339 Le 06/11/2012, à 18:09

11gjm

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

Bonjour ,

@k3c : J'ai installé BeautifulSoup 4 .

J'ai lancé le script , servant de test .

J'ai remplacé le lien de la vidéo (non fonctionnel) par :
http://videos.nt1.tv/haven/saison-2-epi … 4-846.html
----
Après "soup.find...'player-unique' })" , j'obtiens :
--
<section class="player-unique">.......</section>  (beaucoup d'écritures) .
--

Après "'mediaId'...'player-unique' }))" , j'obtiens :
--
False
--
----
Qu'est-ce que j'aurais dû avoir à l'écran ?

Cordialement .

Hors ligne

#2340 Le 06/11/2012, à 19:03

k3c

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

@ 11gjm

Pour moi ça marche

>>> a = urlopen('http://videos.nt1.tv/haven/saison-2-episode-4-coups-de-foudre-7617104-846.html')
>>> soup = BeautifulSoup.BeautifulSoup(a)
>>> soup.find('section', attrs={'class' : 'player-unique' })
<section class="player-unique"><article> <meta content="Flash" itemprop="playerType"/> <meta content="PT2484S" itemprop="duration"/><meta content="2012-10-31T11:52:00+0100" itemprop="uploadDate"/><meta content="2012-11-09T22:30:00+0100" itemprop="expires"/><link content="/haven/saison-2-episode-4-coups-de-foudre-7617104-846.html" itemprop="url"/><link content="/mmdia/i/59/9/saison-2-episode-4-coups-de-foudre-10797599mfwpd.jpg?v=2" itemprop="thumbnailUrl"/> <meta content="628" itemprop="width"/><meta content="353" itemprop="height"/> <div id="FlashPlayer" style="background:#FFF; width:100%; height:353px"><div id="FlashPlayer2"></div></div><script charset="utf-8" src="http://s.wat.fr/js/v2.5/swfobject.js" type="text/javascript"></script><script charset="utf-8" src="http://s.wat.fr/js/v2.5/WATPlayer.js" type="text/javascript"></script><script type="text/javascript">if (!typeof(PWpreroll)) {var PWpreroll = '';}if ( typeof( sitepage ) != "undefined" ) {WATPlayer.showSyndicated({previewMedia : "http://s.nt1.tv/mmdia/i/59/9/10797599mfwpd.jpg",mediaId : 8948529,isStartAd : true,ad20 : 1,modeWatMedia : true,autoStart : 1,recoTf1 : "http://www.nt1.tv/js/video/poursuite/0,,4484043-e0NIQUlORV9JRCBVTlZfSUR9IHszNDI3MDYxIDg0Nn0=,00.js?1351680792",unvId : "846",conId : "4484043",chaId : "3427061",setVolume : "10",playlistIdCustom : "8806145",baseURL : "http://www.wat.tv",url : "http://www.wat.tv/swfnt1/531940nIc0K118948529",width : "100%",height : "100%",container : "FlashPlayer2", oasTag : sitepage, PWpreroll : PWpreroll});}else{WATPlayer.showSyndicated({previewMedia : "http://s.nt1.tv/mmdia/i/59/9/10797599mfwpd.jpg",mediaId : 8948529,isStartAd : true,ad20 : 1,modeWatMedia : true,autoStart : 1,recoTf1 : "http://www.nt1.tv/js/video/poursuite/0,,4484043-e0NIQUlORV9JRCBVTlZfSUR9IHszNDI3MDYxIDg0Nn0=,00.js?1351680792",unvId : "846",conId : "4484043",chaId : "3427061",setVolume : "10",playlistIdCustom : "8806145",baseURL : "http://www.wat.tv",url : "http://www.wat.tv/swfnt1/531940nIc0K118948529",width : "100%",height : "100%",container : "FlashPlayer2", PWpreroll : PWpreroll});}</script><script type="text/javascript">var permalinkWat = document.location.href;WATPlayer.setPermalink(permalinkWat);</script> </article></section>
>>> 'mediaId' in soup.find('section', attrs={'class' : 'player-unique' })
False
>>> 'mediaId' in str(soup.find('section', attrs={'class' : 'player-unique' }))
True
>>> 

Tu n'aurais pas tapé mon avant-dernière ligne au lieu de la dernière, par hasard ?


Acer Aspire One 150 8,9 "
Norhtec avec une Clé Usb bootable http://www.norhtec.com/products/mcsr/index.html

Toshiba Satellite L750

Hors ligne

#2341 Le 06/11/2012, à 20:23

11gjm

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

Re-... ,

@k3c : J'y suis arrivé !!!
Que fait-on ensuite ?

Parce que sous Windows , je n'ai pas la possibilité de copier toutes les infos ,
que tu donnes , entre :
<section class="player-unique">.......</section>
( Je ne peux que faire des copies d'écran  ).
C'est ça qui est important .

A+ .

Hors ligne

#2342 Le 06/11/2012, à 21:03

k3c

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

@ 11gjm

Bien, donc maintenant tu devrais plus avoir l'erreur précédente, tu dois pouvoir faire des choses du genre

python nt1.py http://videos.nt1.tv/haven/saison-2-episode-3-love-machine-7615303-846.html

ou

python tmc.py http://videos.tmc.tv/las-vegas/las-vegas-episode-9-saison-1-l-annee-du-tigre-7620663-848.html

et récupérer des vidéos.

Si tu as envie d'étudier un peu Python, tu as un livre libre en français d'initiation

http://www.swaroopch.com/notes/Python_f … %C3%A8res/


Acer Aspire One 150 8,9 "
Norhtec avec une Clé Usb bootable http://www.norhtec.com/products/mcsr/index.html

Toshiba Satellite L750

Hors ligne

#2343 Le 06/11/2012, à 22:16

11gjm

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

Re-... ,

@k3c : Merci pour tout .

Donc , j'ai récupéré le dernier tf1_03.py , ainsi que NT1_01.py .

J'ai modifié NT1_01.py , afin d'y intégrer les 3 lignes :
        f = open(str(no),'w')
        f.write(cmds)
        f.close()
comme indiqué dans un post précédent .

NB: quelle galère , avec le pb "indentation" (!!!) .

J'ai créé un batch pour lancer tout cela .
On obtient les fichiers ( à renommer .txt ) , pour lire toutes les infos rtmpdump...
Excellent !!!

Maintenant , même si coupure du stream , on peut toujours faire un batch (win) et relancer le process .

OUF !!!

Cordialement .

Dernière modification par 11gjm (Le 06/11/2012, à 22:17)

Hors ligne

#2344 Le 07/11/2012, à 18:42

grandtoubab

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

Salut,
Un petit soucis

@ubuntu-desktop:~/Videos$ man pluzzdl
@ubuntu-desktop:~/Videos$ pluzzdl --version
pluzzdl 0.9.3
@ubuntu-desktop:~/Videos$ pluzzdl http://www.pluzz.fr/faites-entrer-l-accuse.html
[INFO    ]  PluzzDL.py          Reprise du téléchargement de la vidéo au fragment 1
[INFO    ]  PluzzDL.py          Début du téléchargement des fragments
[INFO    ]  PluzzDL.py          Le hash du player semble invalide ; calcul du nouveau hash
[INFO    ]  PluzzDL.py          Un nouveau hash a été trouvé ; essayez de relancer l'application
@ubuntu-desktop:~/Videos$ pluzzdl http://www.pluzz.fr/faites-entrer-l-accuse.html
[INFO    ]  PluzzDL.py          Reprise du téléchargement de la vidéo au fragment 1
[INFO    ]  PluzzDL.py          Début du téléchargement des fragments
[INFO    ]  PluzzDL.py          Le hash du player semble invalide ; calcul du nouveau hash
[INFO    ]  PluzzDL.py          Un nouveau hash a été trouvé ; essayez de relancer l'application

Que faire ? smile

@ubuntu-desktop:~/Videos$ pluzzdl -v http://www.pluzz.fr/faites-entrer-l-accuse.html
[DEBUG   ]  main.py             pluzzdl 0.9.3 avec Python 2.7.3
[DEBUG   ]  Navigateur.py       GET http://www.pluzz.fr/faites-entrer-l-accuse.html
[DEBUG   ]  PluzzDL.py          ID de l'émission : 72106520
[DEBUG   ]  Navigateur.py       GET http://www.pluzz.fr/appftv/webservices/video/getInfosOeuvre.php?mode=zeri&id-diffusion=72106520
[DEBUG   ]  PluzzDL.py          Lien MMS : mms://videozones.francetv.fr/france-dom-tom/Autre/Autre/2012/S45/J1/493325_fela_integrale_20121104.wmv
[DEBUG   ]  PluzzDL.py          Lien RTMP : None
[DEBUG   ]  PluzzDL.py          URL manifest : http://ftvodhdsecz-f.akamaihd.net/z/streaming-adaptatif_france-dom-tom/2012/S44/J7/72106520-20121104-,398,632,934,k.mp4.csmil/manifest.f4m
[DEBUG   ]  PluzzDL.py          URL m3u8 : None
[DEBUG   ]  PluzzDL.py          Utilisation de DRM : non
[DEBUG   ]  PluzzDL.py          Chaine : France 2
[DEBUG   ]  Historique.py       Historique chargé
[DEBUG   ]  Navigateur.py       GET http://hdfauth.francetv.fr/esi/urltokengen2.html?url=/z/streaming-adaptatif_france-dom-tom/2012/S44/J7/72106520-20121104-,398,632,934,k.mp4.csmil/manifest.f4m
[DEBUG   ]  Navigateur.py       GET http://ftvodhdsecz-f.akamaihd.net//z/streaming-adaptatif_france-dom-tom/2012/S44/J7/72106520-20121104-,398,632,934,k.mp4.csmil/manifest.f4m?hdnea=exp=1352307353~acl=%2fz%2fstreaming-adaptatif_france-dom-tom%2f2012%2fS44%2fJ7%2f72106520-20121104-*~hmac=66fcbb1412763e343bffd35542033f343c8f7d27377d09305c541dc55e6f7468
[INFO    ]  PluzzDL.py          Reprise du téléchargement de la vidéo au fragment 1
[DEBUG   ]  PluzzDL.py          Estimation du nombre de fragments : 869
[INFO    ]  PluzzDL.py          Début du téléchargement des fragments
[DEBUG   ]  Navigateur.py       GET http://ftvodhdsecz-f.akamaihd.net//z/streaming-adaptatif_france-dom-tom/2012/S44/J7/72106520-20121104-,398,632,934,k.mp4.csmil/2_288d3b7e30a3e7a0_Seg1-Frag1
[DEBUG   ]  Navigateur.py       Forbidden
[INFO    ]  PluzzDL.py          Le hash du player semble invalide ; calcul du nouveau hash
[DEBUG   ]  Navigateur.py       GET http://static.francetv.fr/players/Flash.H264/player.swf
[INFO    ]  PluzzDL.py          Un nouveau hash a été trouvé ; essayez de relancer l'application
[DEBUG   ]  Historique.py       Historique sauvé

utiliser mimms  big_smile

@ubuntu-desktop:~/Videos$ mimms mms://videozones.francetv.fr/france-dom-tom/Autre/Autre/2012/S45/J1/493325_fela_integrale_20121104.wmv
mms://videozones.francetv.fr/france-dom-tom/Autre/Autre/2012/S45/J1/493325_fela_integrale_20121104.wmv => 493325_fela_integrale_20121104.wmv

Cool cool

583.56 MB / 604.46 MB (106.66 kB/s, 00:03:16 remaining)      
Download complete!

Dernière modification par grandtoubab (Le 07/11/2012, à 21:10)


Linux tout seul sur le disque dur  Acer Aspire T650 :=))
RAM: 1,7 Gio, CPU: Intel® Pentium(R) 4 CPU 3.06GHz × 2. Carte graphique Gallium 0.4 on ATI RC410 (Radeon Xpress200)
Partition 1: Debian Jessie & Gnome Version 3.8.4
Partition 2: Ubuntu Trusty 14.04 & Unity

Hors ligne

#2345 Le 07/11/2012, à 21:29

Hizoka

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

meme soucis, impossible de telecharger les videos.

Hors ligne

#2346 Le 07/11/2012, à 21:45

11gjm

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

Bonjour à tous :

Suite à mes investigations , il faut remplacer mms par mmsh .

mmsh://videozones.francetv.fr/france-dom-tom/Autre/Autre/2012/S45/J1/493325_fela_integrale_20121104.wmv

Cordialement .

Hors ligne

#2347 Le 07/11/2012, à 22:14

k3c

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

@ 11gjm

voici une version du script pour TMC qui re-essaye 5 fois avec 3 secondes d'attente entre chaque essai.

Je me suis amusé à lancer une récupération de vidéo, déconnecter mon wifi, voir le message d'erreur, reconnecter mon wifi, la récupération de la vidéo reprend bien.

Remplacer 5 dans la ligne
if cpt > 5:
par la valeur de votre choix si vous voulez plus d'essais

# -*- coding:utf-8 -*-
# TF1 version 0.3 par k3c, correction de 11gjm
import subprocess, optparse, re, sys, os, shlex
import socket, time
from urllib2 import Request, urlopen, URLError, HTTPError
from urllib2 import ProxyHandler, Request, urlopen, URLError, HTTPError
import time,md5,random,urllib2
import bs4 as BeautifulSoup
timeout = 90
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' ]

def get_wat(id):
    ID_WAT = id
    def base36encode(number):
        if not isinstance(number, (int, long)):
            raise TypeError('number must be an integer')
        if number < 0:
            raise ValueError('number must be positive')
        alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
        base36 = ''
        while number:
            number, i = divmod(number, 36)
            base36 = alphabet[i] + base36
        return base36 or alphabet[0]
    ts = base36encode(int(time.time()))
    timesec = hex(int(ts, 36))[2:]
    while(len(timesec)<8):
        timesec="0"+timesec
    token = md5.new("9b673b13fa4682ed14c3cfa5af5310274b514c4133e9b3a81e6e3aba00912564/web/"+str(ID_WAT)+""+timesec).hexdigest()
    id_url1 = "http://www.wat.tv/get/web/"+str(ID_WAT)+"?token="+token+"/"+timesec+"&getURL=1&country=FR"
    return id_url1

def main():
    # timeout en secondes
    socket.setdefaulttimeout(timeout)
    usage   = "usage: python tmc_tf1.py     [options] <url de l'emission>"
    parser  = optparse.OptionParser( usage = usage )
    parser.add_option( "--nocolor",         action = 'store_true', default = False, help = 'desactive la couleur dans le terminal' )
    parser.add_option( "-v", "--verbose",   action = "store_true", default = False, help = 'affiche les informations de debugage' )
    ( options, args ) = parser.parse_args()
    if( len( args ) > 2 or args[ 0 ] == "" ):
        parser.print_help()
        parser.exit( 1 )
    the_url = sys.argv[1] 
    html = urlopen(sys.argv[1]).read()
    nom = sys.argv[1].split('/')[-1:][0]
    no = nom.split('.')[-2:][0]
    soup = BeautifulSoup.BeautifulSoup(html)
    debut_id = str(soup.find('div', attrs={'class' : 'unique' }))
    id = [x.strip() for x in re.findall("mediaId :([^,]*)",debut_id)][0]
    id_url1 = get_wat(id)
    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', random.choice(listeUserAgents))]
    data = opener.open(id_url1).read()
    opener.close()
    if data[0:4] == 'http':
        ua = random.choice(listeUserAgents)
        arguments = 'curl "%s" -L -g -A "%s" -o "%s.mp4"' % (data, ua, no)
        process = subprocess.Popen(arguments, stdout=subprocess.PIPE, shell=True).communicate()[0]
    if data[0:4] == 'rtmp':
	host = re.search('rtmpte://(.*)/ondemand',data).group(1)
        host = host.replace('rtmpte','rtmpe')
        player = "http://www.wat.tv/images/v40/PlayerWat.swf?revision=4.0.992"
        data0 = re.search('rtmpte://(.*)h264',data).group(0)
        data1 = re.search('&u=(.*)&sum',data).group(1)
        data2 = re.search('&sum=(.*)$',data).group(1)
        data3 = data1+data2
        app = re.search('wske.wat.tv/(.*)/mp4:vod',data).group(1)
        playpath = re.search('mp4:vod(.*).h264',data).group(0)
        cmds = 'rtmpdump -r "%s" -c 1935 -m 10 -w 40ee2a765514facfc6b1eb2745d22cdbdfaaf7f1488b17600c1a22dd3074735d -x 339543 -o "%s.mp4" " --resume"' % (data0, str(no)
)
        f = open(str(no),'w')
        f.write(cmds)
        f.close()
        arguments = shlex.split( cmds )
        N = 3 # for 3 lines of output
        cpt = 0 
        while True:
            p = subprocess.Popen( arguments,
                stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            stdout, stderr = p.communicate()
            if p.returncode != 0:
                print "Erreur : le sous-process s\'est terminé avec (le code d\'erreur est " + str(p.returncode) + ")"
                status = False
                if cpt > 5:
                    break
                cpt += 1
                time.sleep(3) 
            else:
                status = True
                break
if __name__ == "__main__":
    main()

Acer Aspire One 150 8,9 "
Norhtec avec une Clé Usb bootable http://www.norhtec.com/products/mcsr/index.html

Toshiba Satellite L750

Hors ligne

#2348 Le 07/11/2012, à 23:02

11gjm

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

Bonjour ,

@k3c : Merci , je ferai l'essai ( après visionnage de faites-entrer-l'accusé .

A+ .

Hors ligne

#2349 Le 08/11/2012, à 00:24

11gjm

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

Re-... ,

@k3c : Résultats .

1) Récupéré le fichier "TF1 version 0.3" que tu viens de modifier .
_ J'ai fait un essai avec 1 vidéo "las Vegas" , ça n'a pas marché .

2) J'ai trouvé une nouvelle adresse .
_ J'ai fait un essai avec l'ancien "TF1 version 0.3" . Nickel !!!

3) Je fais un essai avec le nouveau "TF1 version 0.3" . Pas de vidéo (mais on a son nom) .
PB : " le sous-process s'est terminé avec <le code d'erreur 2> .

Dans les 2 cas , on a bien le fichier avec "rtmp..."

A+ .

Hors ligne

#2350 Le 08/11/2012, à 23:43

11gjm

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

Bonjour à tous ,

Concernant le "plugin.video.M6Replay" , une MàJ du 26/09/2012 a été effectuée .
http://passion-xbmc.org/addons/?Page=Vi … o.M6Replay
téléchargement à :
http://passion-xbmc.org/addons/Download … -2.0.6.zip
---
N'étant pas un spécialiste de Python , la commande pour installer est du style
"python setup.py install" .

Il n'existe que "default.py" .
Que faire ???

Merci , pour votre aide .
Cordialement .

Hors ligne

Haut de page ↑