#2551 Le 17/12/2012, à 05:57
- k3c
Re : TVDownloader: télécharger les médias du net !
Pour Pluzzdl c'est juste en ligne de commande pour l'instant.
Debian 12 sur Thinkpad reconditionné
Hors ligne
#2552 Le 17/12/2012, à 12:54
- ynad
Re : TVDownloader: télécharger les médias du net !
Le bonjour à tous,
@k3c
j'ai un petit souci avec hd1.py, quelque soit l'url, il me charge toujours la même video (il me semble la première que j'ai du essayer), je ne comprends pas, si tu peux m'expliquer ce que je dois changer, et l'option -v me renvoit l'erreur pour:
python hd1.py -v http://www.hd1.tv/code-barge/videos/cod … -1069.html
"ValueError: unknown url type: -v"
merci
Dernière modification par ynad (Le 17/12/2012, à 12:59)
Hors ligne
#2553 Le 17/12/2012, à 17:21
- jose6a
Re : TVDownloader: télécharger les médias du net !
Je peux poser une question ?
j'ai été développeur, le siècle dernier (si si) et en fait je me pose
une question :
pourquoi ne pas faire une app à qui tu donnes la zone dans laquelle
s'affiche la vidéo, et, qui, en même temps prend le son directement
sur la carte son comme "audio-recorder" ?
certain vont me parler de qualité vidéo ? bof bof ...
Si l'on reste sur ce que l'on "voit" à l'écran, est ce que c'est si important
que cela la HD ?
avec cette "méthode", on s'affranchirait des trucs machiavéliques mis en place
pour nous empêcher de garder les choses que nous jugeons vouloir concerver.
je sais que des applications d'enregistrement de bureau existent deja, c'est peut etre
dans cette voie qu'il faudrait que je m'oriente, mais, en connaissez vous
qui enregistre le bureau, et simultanément le son de la carte son ?
merci pour vos remarques
José
Linux jose6a-HP-Laptop-15-fc0xxx 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Hors ligne
#2554 Le 17/12/2012, à 17:37
- ynad
Re : TVDownloader: télécharger les médias du net !
Hors ligne
#2555 Le 17/12/2012, à 18:02
- jose6a
Re : TVDownloader: télécharger les médias du net !
yep ! presque, j'arrive pas a l'installer, je suis en 12.10 64bits
Linux jose6a-HP-Laptop-15-fc0xxx 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Hors ligne
#2556 Le 17/12/2012, à 18:06
- ynad
Re : TVDownloader: télécharger les médias du net !
Hors ligne
#2557 Le 17/12/2012, à 18:51
- Hizoka
Re : TVDownloader: télécharger les médias du net !
sinon j'ai codé screencastor qui permet de faire ça mais c'est moins pratique qu'un systeme de dl comme celui ci...
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#2558 Le 17/12/2012, à 21:22
- k3c
Re : TVDownloader: télécharger les médias du net !
@ ynad
Il faut que je reprenne le script, de toutes les manières il faut faire comme dans la version XBMC, c'est bien plus propre.
D'ailleurs il ne télécharge pas certaines pages de HD1. Et l'option -v n'est pas gérée pour l'instant (contrairement à pluzzdl)
Par contre je télécharge
python hd1.py http://www.hd1.tv/code-barge/videos/code-barge-la-boite-a-idee-7723610-1069.html
curl "http://wak.wat.tv/2/H264-384x288/47/31/9064731.h264?seek=wat&b=438&t=8&bu=&login=hd1-fictions&i=78.193.85.106&u=b76149e94ecb2b6b568c33e7d59c9624&sum=41f46898af0a149175461af28f26022d&akauth=1355775346_8df76f9470fbe7215bd39913671b7485" -L -g -A "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1" -o "code-barge-la-boite-a-idee-7723610-1069.mp4"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
12 159M 12 20.4M 0 0 58664 0 0:47:35 0:06:04 0:41:31 56395
la dernière version (il y a 2 méthodes suivant les vidéos, le rtmpdump est modifié, pas le curl hélas pour toi)
# -*- coding:utf-8 -*-
# TF1 TMC NT1 HD1 version 0.5 par k3c, correction de 11gjm
import subprocess, optparse, re, sys, shlex
import socket
from urllib2 import urlopen
import time, md5, random, urllib2
import bs4 as BeautifulSoup
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):
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)+""+timesec).hexdigest()
id_url1 = "http://www.wat.tv/get/web/"+str(id)+"?token="+token+"/"+timesec+"&getURL=1&country=FR"
return id_url1
def main():
# timeout en secondes
socket.setdefaulttimeout(90)
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 )
debut_id = ''
html = urlopen(sys.argv[1]).read()
nom = sys.argv[1].split('/')[-1:][0]
no = nom.split('.')[-2:][0]
soup = BeautifulSoup.BeautifulSoup(html)
if 'tmc.tv' in str(soup) or 'tf1.fr' in str(soup):
debut_id = str(soup.find('div', attrs={'class' : 'unique' }))
if 'nt1.tv' in str(soup) or 'hd1.tv' in str(soup):
debut_id = str(soup.find('section', attrs={'class' : 'player-unique' }))
id = [x.strip() for x in re.findall("mediaId :([^,]*)", debut_id)][0]
id_url1 = get_wat('9064731')
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)
print arguments
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')
data0 = re.search('rtmpte://(.*)h264', data).group(0)
cmds = 'rtmpdump -r "%s" -c 1935 -m 10 -w ebb7a6fbdc9021db95e2bd537d73fabb9717508f085bea50bde75f7a8e27698c -x 343642 -o "%s.mp4" " --resume"' % (data0, str(no)
)
f = open(str(no), 'w')
f.write(cmds)
f.close()
arguments = shlex.split( cmds )
print arguments
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()
Debian 12 sur Thinkpad reconditionné
Hors ligne
#2559 Le 17/12/2012, à 22:39
- pguimier
Re : TVDownloader: télécharger les médias du net !
Damned, cela fait un moment qu eje ne suis pas venu sur ce thread...
pluzzdl utilise donc maintenant libav-tools !
Quelqu'un a-t-il réussi à faire cohabiter ffmpeg et libav-tools sur une LMDE (linux mint debian edition) ?
Pour moi impossible, si je veux récupérer une émission, je dois jongler avec apt pour desinstaller / réinstaller tout ce qui utilise ffmpeg (dont openshot et melt que j'utilise régulièrement).
Ou alors il existerait une version fonctionnelle de pluzzdl qui utilise encore ffmpeg et non pas libav-tools ?
Hors ligne
#2560 Le 17/12/2012, à 22:45
- duocore
Re : TVDownloader: télécharger les médias du net !
bonsoir,
j'ai utilisé ceci :python tf1_03.py http://videos.nt1.tv/haven/saison-2-epi … 1-846.html
mais j'ai une erreur: rtmp_readpacket,failed to read rtmp packet header
pouvez vous m'aider
Merci
Hors ligne
#2561 Le 18/12/2012, à 06:09
- k3c
Re : TVDownloader: télécharger les médias du net !
@ duocore
le script hd1, posté quelques lignes plus tôt, le TF1 TMC NT1 HD1 0.5 le télécharge
python hd1.py http://videos.nt1.tv/haven/saison-2-episode-12-les-peches-des-anciens-7721561-846.html
curl "http://3med.wat.tv/get/dc0fc223a3b060d68894a55261a4b4c1/50cffa0a/2/H264-384x288/47/31/9064731.h264?bu=&login=hd1-fictions&i=78.193.85.106&u=a95ca5162a7d53711dde355b6034d4e3&sum=fafdff7c70706f04f4b55b9b6f81b89d&st=atQdHDxG0ah-8uuRel9b6g&e=1355936842&t=1355807242&seek=wat" -L -g -A "Mozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori" -o "saison-2-episode-12-les-peches-des-anciens-7721561-846.mp4"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
16 159M 16 26.1M 0 0 256k 0 0:10:37 0:01:44 0:08:53 300k^[[A
Debian 12 sur Thinkpad reconditionné
Hors ligne
#2562 Le 18/12/2012, à 07:34
- duocore
Re : TVDownloader: télécharger les médias du net !
en utilisant le script:
# -*- coding:utf-8 -*-
# TF1 TMC NT1 HD1 version 0.5 par k3c, correction de 11gjm
import subprocess, optparse, re, sys, shlex
import socket
from urllib2 import urlopen
import time, md5, random, urllib2
import bs4 as BeautifulSoup
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):
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)+""+timesec).hexdigest()
id_url1 = "http://www.wat.tv/get/web/"+str(id)+"?token="+token+"/"+timesec+"&getURL=1&country=FR"
return id_url1
def main():
# timeout en secondes
socket.setdefaulttimeout(90)
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 )
debut_id = ''
html = urlopen(sys.argv[1]).read()
nom = sys.argv[1].split('/')[-1:][0]
no = nom.split('.')[-2:][0]
soup = BeautifulSoup.BeautifulSoup(html)
if 'tmc.tv' in str(soup) or 'tf1.fr' in str(soup):
debut_id = str(soup.find('div', attrs={'class' : 'unique' }))
if 'nt1.tv' in str(soup) or 'hd1.tv' in str(soup):
debut_id = str(soup.find('section', attrs={'class' : 'player-unique' }))
id = [x.strip() for x in re.findall("mediaId :([^,]*)", debut_id)][0]
id_url1 = get_wat('9064731')
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)
print arguments
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')
data0 = re.search('rtmpte://(.*)h264', data).group(0)
cmds = 'rtmpdump -r "%s" -c 1935 -m 10 -w ebb7a6fbdc9021db95e2bd537d73fabb9717508f085bea50bde75f7a8e27698c -x 343642 -o "%s.mp4" " --resume"' % (data0, str(no)
)
f = open(str(no), 'w')
f.write(cmds)
f.close()
arguments = shlex.split( cmds )
print arguments
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()
j'ai ceci:
curl "http://3med.wat.tv/get/25cf43b8af1c7ffc805a299c0e1d0ee3/50d00d76/2/H264-384x288/47/31/9064731.h264?bu=&login=hd1-fictions&i=92.132.247.234&u=babcf91ca2f3b2af36887f28bdf307fa&sum=8d5a8c6bd662189dacee44fb93313e72&st=r6I2dXKDhSqPCDuyOYgODQ&e=1355941814&t=1355812214&seek=wat" -L -g -A "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525." -o "saison-2-episode-12-les-peches-des-anciens-7721561-846.mp4"
Hors ligne
#2563 Le 18/12/2012, à 07:48
- duocore
Re : TVDownloader: télécharger les médias du net !
apres plusieurs lancement du script je me suis retrouver avec AD guerre de l'ombre 2eme partie
Hors ligne
#2564 Le 18/12/2012, à 09:11
- ynad
Re : TVDownloader: télécharger les médias du net !
Bonjour...
pareil... je me retrouve toujours avec aussi la même vidéo en l’occurrence "AD la guerre de l'ombre 2ème partie"
avec le titre "saison-2-episode-12-les-peches-des-anciens-7721561-846.mp4".
Hors ligne
#2565 Le 18/12/2012, à 14:44
- rimram31
Re : TVDownloader: télécharger les médias du net !
...pourquoi ne pas faire une app à qui tu donnes la zone dans laquelle
s'affiche la vidéo, et, qui, en même temps prend le son directement
sur la carte son comme "audio-recorder" ?
Pour xbmc, ça va rapidement "se voir" car la finalité est de regarder sur un écran de télévision, entre SD et HD, la différence est évidente. Autre point a ne pas négliger, les vidéos sont disponibles en plusieurs formats de qualités différentes, le principe de l'adaptation dynamique de la qualité, pluzz par exemple, lance une vidéo de basse qualité quand fenêtré puis passe en qualité supérieure si tu bascules en plein écran. Pas toujours facile de comprendre "comment ça se passe" avec un simple visionnage.
Maintenant, ta remarque reste plus que pertinente :-)
Hors ligne
#2566 Le 18/12/2012, à 17:29
- ynad
Re : TVDownloader: télécharger les médias du net !
...en plus je crois qu'une capture vidéo d'écran avec une bonne résolution de plus d'une heure va être lourde, voire très lourde
Hors ligne
#2567 Le 18/12/2012, à 18:08
- Hizoka
Re : TVDownloader: télécharger les médias du net !
oui, ce n'est pas rentable car en plus de tout ca, il faut regarder la video et ne rien faire d'autre...
il vaut mieux dl un fichier
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#2568 Le 18/12/2012, à 18:17
- mesaieux
Re : TVDownloader: télécharger les médias du net !
bonjour à tous,
on dirait que tou.tv à modifier des choses
avec le script de k3c j'ai l'erreur
WARNING: You haven't specified a protocol (--protocol) or rtmp url (-r), using d
efault protocol RTMP
WARNING: You haven't specified a port (--port) or rtmp url (-r), using default p
ort 1935
Hors ligne
#2569 Le 18/12/2012, à 18:26
- duocore
Re : TVDownloader: télécharger les médias du net !
apres plusieurs lancement du script je me suis retrouver avec AD guerre de l'ombre 2eme partie
Je voudrais savoir si vous avez reussi a trouver de ou vient l'erreur.
merci de votre aide
Hors ligne
#2570 Le 19/12/2012, à 06:36
- k3c
Re : TVDownloader: télécharger les médias du net !
Désolé, j'avais oublié de passer l'id en paramètre pour HD1
# -*- coding:utf-8 -*-
# TF1 TMC NT1 HD1 version 0.6 par k3c, correction de 11gjm
import subprocess, optparse, re, sys, shlex
import socket
from urllib2 import urlopen
import time, md5, random, urllib2
import bs4 as BeautifulSoup
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):
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)+""+timesec).hexdigest()
id_url1 = "http://www.wat.tv/get/web/"+str(id)+"?token="+token+"/"+timesec+"&getURL=1&country=FR"
return id_url1
def main():
# timeout en secondes
socket.setdefaulttimeout(90)
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 )
debut_id = ''
html = urlopen(sys.argv[1]).read()
nom = sys.argv[1].split('/')[-1:][0]
no = nom.split('.')[-2:][0]
soup = BeautifulSoup.BeautifulSoup(html)
if 'tmc.tv' in str(soup) or 'tf1.fr' in str(soup):
debut_id = str(soup.find('div', attrs={'class' : 'unique' }))
if 'nt1.tv' in str(soup) or 'hd1.tv' in str(soup):
debut_id = str(soup.find('section', attrs={'class' : 'player-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)
print arguments
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')
data0 = re.search('rtmpte://(.*)h264', data).group(0)
cmds = 'rtmpdump -r "%s" -c 1935 -m 10 -w ebb7a6fbdc9021db95e2bd537d73fabb9717508f085bea50bde75f7a8e27698c -x 343642 -o "%s.mp4" " --resume"' % (data0, str(no)
)
f = open(str(no), 'w')
f.write(cmds)
f.close()
arguments = shlex.split( cmds )
print arguments
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()
Debian 12 sur Thinkpad reconditionné
Hors ligne
#2571 Le 19/12/2012, à 06:51
- duocore
Re : TVDownloader: télécharger les médias du net !
merci,
cela fonctionne tres bien
encore merci
vous faites de l'excellent boulot
Hors ligne
#2572 Le 19/12/2012, à 10:33
- rimram31
Re : TVDownloader: télécharger les médias du net !
...en plus je crois qu'une capture vidéo d'écran avec une bonne résolution de plus d'une heure va être lourde, voire très lourde
Tu réencodes en h264/aac à la volée ça soulève un autre souci, la qualité de l'encodage alors qu'en download, le boulot est déjà fait. Mais dans la même idée, tu peux aussi "sniffer" les trames http et capturer les mp4 ... c'est un peu ce que je fais dans mon add on xbmc pluzz même si je me contente de capturer le token (et bien content que le même marche pour toutes les qualités ... pas sûr que ça dure)
Hors ligne
#2573 Le 19/12/2012, à 11:30
- ynad
Re : TVDownloader: télécharger les médias du net !
@k3c
Merci c'est bon aussi pour moi
Hors ligne
#2574 Le 19/12/2012, à 12:43
- k3c
Re : TVDownloader: télécharger les médias du net !
je vais bientôt sortir une version plus propre basée sur le plugin xbmc
Debian 12 sur Thinkpad reconditionné
Hors ligne
#2575 Le 23/12/2012, à 09:54
- k3c
Re : TVDownloader: télécharger les médias du net !
Bonjour
J'aurai besoin d'un coup de main pour faire remarcher le script pour TOU.TV.
Ils ont changé leur plate-forme pour récupérer l'adresse et utilisent maintenant un système à la Pluzz
J'ai fait un script provisoire utilisant la méthode de KSV et son script, mais je ne récupère que quelques fragments.
Si vous avez une idée, je suis preneur
Pour l'instant, vu le mal que j'ai à trouver un proxy Canada valide, je travaille sur une vidéo non géolocalisée
Mon script
cat toutvnew.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# TOU.TV version 0.8 par k3c
# passage de proxy en 2 ème parametre
import subprocess, optparse, re, sys, shlex
import socket, random
import urllib2
from urllib2 import ProxyHandler, Request, urlopen, URLError, HTTPError
import bs4 as BeautifulSoup
from lxml import objectify
from lxml import etree
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_proxy():
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', random.choice(listeUserAgents))]
data = opener.open('http://www.xroxy.com/proxy-country-CA.htm').read()
opener.close()
s = BeautifulSoup.BeautifulSoup(data)
hrefs = s.find_all(attrs={'href' : re.compile("host=\d")})
href = random.choice(hrefs)
mastr = href.attrs['href']
m = re.search('host=(([0-9\.])+)?.*port=(([0-9\.])+)?',str(mastr))
port = m.group(3)
host = m.group(1)
return host, port
def main():
# timeout en secondes
timeout = 900
socket.setdefaulttimeout(timeout)
usage = "usage: python toutv [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 ) == 0 or args[ 0 ] == "" ):
parser.print_help()
parser.exit( 1 )
html = urlopen(sys.argv[1]).read()
nom = sys.argv[1][18:].replace('/', '_')
soup = BeautifulSoup.BeautifulSoup(html)
elems = [elem for elem in soup.find('div',{'class':'emissionEpisode_containerPlayer'})]
mastr = elems[1].attrs['src']
m = re.search('"idMedia":"([A-Za-z0-9_]*)', mastr)
if m:
id = m.group(1)
head = random.choice( listeUserAgents )
platform1 = 'http://api.radio-canada.ca/validationMedia/v1/Validation.html?deviceType=flashhd&idMedia='
platform2 = '&connectionType=broadband&appCode=thePlatform&multibitrate=true&output=jsonp&timeout=66&callback=Player_srcAV_21378044.validationSuccess'
print platform1+id+platform2
response = urllib2.urlopen(urllib2.Request(platform1+id+platform2))
newfile = response.read()
print "le retour de l'API de RAdio Canada ",newfile
mm = re.search('url":"(.*)message',str(newfile))
zzz = mm.group(1)[:-3]
print " ce qui nous intéresse ",zzz
z = urlopen(zzz).read()
print "le contenu du manifest ",z
f = open("mani.f4m", 'w')
f.write(z)
f.close()
cmds = "php adobehds.php --manifest "+zzz
# cmds = "php adobehds.php --manifest mani.f4m"
arguments = shlex.split( cmds )
print cmds
process = subprocess.Popen( arguments, stdout = subprocess.PIPE).communicate()[0]
if __name__ == "__main__":
main()
Ma commande
python toutvnew.py http://www.tou.tv/belle-maman
Le résultat
gg@gg-SATELLITE-L755:~$ python toutvnew.py http://www.tou.tv/belle-maman
http://api.radio-canada.ca/validationMedia/v1/Validation.html?deviceType=flashhd&idMedia=UwKabILm2W9_ChVsNs_ztrmFUPIZsuiW&connectionType=broadband&appCode=thePlatform&multibitrate=true&output=jsonp&timeout=66&callback=Player_srcAV_21378044.validationSuccess
le retour de l'API de RAdio Canada Player_srcAV_21378044.validationSuccess({"url":"http://cp143903-f.akamaihd.net/z/003/mp4/b/2011-03-22_bellemaman_0001_,500,800,1200,.mp4.csmil/manifest.f4m?hdnea=st=1356252683~exp=1356252698~acl=/z/003/mp4/b/2011-03-22_bellemaman_0001_*~hmac=4c5e425403f0c0f97a182fcb3d542ad4d967f487e72f768af5c2578fd1a90e73","message":null,"errorCode":0,"params":[{"name":"mediaType","value":"video"},{"name":"streamType","value":"akamaiHDN2"},{"name":"tokenType","value":"flashHDNetSession"}],"bitrates":[{"bitrate":1200,"width":852,"height":480,"lines":"480p","param":null},{"bitrate":800,"width":640,"height":360,"lines":"360p","param":null},{"bitrate":500,"width":640,"height":360,"lines":"270p","param":null}]},66)
ce qui nous intéresse http://cp143903-f.akamaihd.net/z/003/mp4/b/2011-03-22_bellemaman_0001_,500,800,1200,.mp4.csmil/manifest.f4m?hdnea=st=1356252683~exp=1356252698~acl=/z/003/mp4/b/2011-03-22_bellemaman_0001_*~hmac=4c5e425403f0c0f97a182fcb3d542ad4d967f487e72f768af5c2578fd1a90e73
le contenu du manifest <?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns="http://ns.adobe.com/f4m/1.0" xmlns:akamai="uri:akamai.com/f4m/1.0">
<akamai:version>2.0</akamai:version>
<akamai:bw>5000</akamai:bw>
<id>/003/mp4/b/2011-03-22_bellemaman_0001_,500,800,1200,.mp4.csmil_0</id>
<streamType>recorded</streamType>
<akamai:streamType>vod</akamai:streamType>
<duration>336.851</duration>
<streamBaseTime>0.000</streamBaseTime>
<pv-2.0>;hdntl=exp=1356339083~acl=%2fz%2f003%2fmp4%2fb%2f2011-03-22_bellemaman_0001_*~data=hdntl~hmac=7559c92e7cb31dad7888407218fe136b48223ae184ed85079403c021076aacdb</pv-2.0>
<bootstrapInfo profile="named" id="bootstrap_0">AAAAi2Fic3QAAAAAAAAAAQAAAAPoAAAAAAAFI9MAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAADgBAAAARmFmcnQAAAAAAAAD6AAAAAADAAAAAQAAAAAAAAAAAAAXcAAAADgAAAAAAAUJEAAAGsMAAAAAAAAAAAAAAAAAAAAAAA==</bootstrapInfo>
<bootstrapInfo profile="named" id="bootstrap_1">AAAAi2Fic3QAAAAAAAAAAQAAAAPoAAAAAAAFI9MAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAADgBAAAARmFmcnQAAAAAAAAD6AAAAAADAAAAAQAAAAAAAAAAAAAXcAAAADgAAAAAAAUJEAAAGsMAAAAAAAAAAAAAAAAAAAAAAA==</bootstrapInfo>
<bootstrapInfo profile="named" id="bootstrap_2">AAAAi2Fic3QAAAAAAAAAAQAAAAPoAAAAAAAFI9MAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAADgBAAAARmFmcnQAAAAAAAAD6AAAAAADAAAAAQAAAAAAAAAAAAAXcAAAADgAAAAAAAUJEAAAGsMAAAAAAAAAAAAAAAAAAAAAAA==</bootstrapInfo>
<media bitrate="489" url="0_ee8b5f6c472833a3_" bootstrapInfoId="bootstrap_0">
<metadata>AgAKb25NZXRhRGF0YQgAAAAMAAhkdXJhdGlvbgBAdQ2dsi0OVgAFd2lkdGgAQIQAAAAAAAAABmhlaWdodABAdoAAAAAAAAANdmlkZW9kYXRhcmF0ZQBAeshKDvt0XgAJZnJhbWVyYXRlAEA99/9WWSEBAAx2aWRlb2NvZGVjaWQAQBwAAAAAAAAADWF1ZGlvZGF0YXJhdGUAQE7U1RbZSr0AD2F1ZGlvc2FtcGxlcmF0ZQBA5YiAAAAAAAAPYXVkaW9zYW1wbGVzaXplAEAwAAAAAAAAAAZzdGVyZW8BAQAMYXVkaW9jb2RlY2lkAEAkAAAAAAAAAAhmaWxlc2l6ZQBBc67/oAAAAAAACQ==</metadata>
</media>
<media bitrate="789" url="1_ee8b5f6c472833a3_" bootstrapInfoId="bootstrap_1">
<metadata>AgAKb25NZXRhRGF0YQgAAAAMAAhkdXJhdGlvbgBAdQ2dsi0OVgAFd2lkdGgAQIQAAAAAAAAABmhlaWdodABAdoAAAAAAAAANdmlkZW9kYXRhcmF0ZQBAhsODbVhb7AAJZnJhbWVyYXRlAEA99/9WWSEBAAx2aWRlb2NvZGVjaWQAQBwAAAAAAAAADWF1ZGlvZGF0YXJhdGUAQE7U1RbZSr0AD2F1ZGlvc2FtcGxlcmF0ZQBA5YiAAAAAAAAPYXVkaW9zYW1wbGVzaXplAEAwAAAAAAAAAAZzdGVyZW8BAQAMYXVkaW9jb2RlY2lkAEAkAAAAAAAAAAhmaWxlc2l6ZQBBf7omgAAAAAAACQ==</metadata>
</media>
<media bitrate="1253" url="2_ee8b5f6c472833a3_" bootstrapInfoId="bootstrap_2">
<metadata>AgAKb25NZXRhRGF0YQgAAAAMAAhkdXJhdGlvbgBAdQ2dsi0OVgAFd2lkdGgAQIqgAAAAAAAABmhlaWdodABAfgAAAAAAAAANdmlkZW9kYXRhcmF0ZQBAkaEmVlHuLgAJZnJhbWVyYXRlAEA99/9WWSEBAAx2aWRlb2NvZGVjaWQAQBwAAAAAAAAADWF1ZGlvZGF0YXJhdGUAQF9qGTh/Zy0AD2F1ZGlvc2FtcGxlcmF0ZQBA5YiAAAAAAAAPYXVkaW9zYW1wbGVzaXplAEAwAAAAAAAAAAZzdGVyZW8BAQAMYXVkaW9jb2RlY2lkAEAkAAAAAAAAAAhmaWxlc2l6ZQBBiS0zgAAAAAAACQ==</metadata>
</media>
</manifest>
php adobehds.php --manifest http://cp143903-f.akamaihd.net/z/003/mp4/b/2011-03-22_bellemaman_0001_,500,800,1200,.mp4.csmil/manifest.f4m?hdnea=st=1356252683~exp=1356252698~acl=/z/003/mp4/b/2011-03-22_bellemaman_0001_*~hmac=4c5e425403f0c0f97a182fcb3d542ad4d967f487e72f768af5c2578fd1a90e73
gg@gg-SATELLITE-L755:~$ ls -alrt *eg*rag*
-rw-rw-r-- 1 gg gg 912410 déc. 23 09:51 1e366bc0702a899b71d0795b6a20bc05_2_ee8b5f6c472833a3_Seg1-Frag4
-rw-rw-r-- 1 gg gg 923548 déc. 23 09:51 1e366bc0702a899b71d0795b6a20bc05_2_ee8b5f6c472833a3_Seg1-Frag8
-rw-rw-r-- 1 gg gg 1066527 déc. 23 09:51 1e366bc0702a899b71d0795b6a20bc05_2_ee8b5f6c472833a3_Seg1-Frag7
-rw-rw-r-- 1 gg gg 1135908 déc. 23 09:51 1e366bc0702a899b71d0795b6a20bc05_2_ee8b5f6c472833a3_Seg1-Frag1
gg@gg-SATELLITE-L755:~$
Le script de KSV AdobeHDS est dispo à
https://github.com/K-S-V/Scripts
Il vous faudra php, les extensions curl, un serveur apache2 pour utiliser tout cela.
Debian 12 sur Thinkpad reconditionné
Hors ligne