1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
import sys
import urllib2
import re
# fonction permettant de recuperer le contenu de la page
def getSrcPage(url):
#la sourc html a une portee globale
global src
#on y met le contenu de la page
src = urllib2.urlopen(url, None).read()
#methode pour recuperer le titre de la video
def getTitle():
#on met le titre en global
global titre
#on cherche la balise <title> de l'html pour recuperer le titre
titre = re.findall('<title>+[^\"]+</title>', src, re.IGNORECASE)
#il n'y en a qu'un normalement donc indice 0
titre = (titre[0])
#on nettois les balise <title> et </title>
titre = titre[7:len(titre)-8]
print "telechargement de : %s" % titre
#on recupere ce qui est necessaire a la recuperation de la video
def getVariable():
#futur adresse de la video
global urlvideo
#on cherche dans le code ou sont les vatiable
vs = src.find('var fo = ')
ve = src.find('"', vs + 30)
#on garde que la ligne interressante
var = src[vs:ve]
#on r'ecupere l'id de la video
indsvid = var.index("video_id=");
indevid = var.index("&", indsvid);
#on decoupe
videoid = var[indsvid:indevid]
#la variable t
indst = var.index("t=");
indet = var.index("&", indst);
#on decoupe
t = var[indst:indet]
#url de telechargement
urlvideo = "http://youtube.com/get_video?" +videoid +"&"+t
print urlvideo
#methode pour telecharger le fichier
def getFile():
#header pour nous faire passer comme un navigateur normal (inutile mais sait on jamaisà)
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }
req = urllib2.Request(urlvideo, None, headers)
vid = urllib2.urlopen(req)
#on cree le fichier en mode ajout et ppour des donnees de type binaire
file = open(titre +".flv" , "a+b")
#on recupere la taille du fichier
lg = vid.headers.get('content-length')
# on la converti en entier
lg = int(lg)
# "buffer"
data = ''
#tant que ...
while True :
#lire les 4096 octet suivant
data = vid.read(4096)
#... le buffer n'est pas null apres une lecture
if not data: break
#on ecris les donnees dans le ffichier
file.write(data)
#on vide le buffer
data = None
#histoire de finalise l'ecriture
file.flush()
#on ferme le fichier
file.close()
if len(sys.argv) > 1:
print "telechargement de la video a l'adresse : %s" % sys.argv[1]
getSrcPage(sys.argv[1])
getTitle()
getVariable()
getFile()
else:
print "usage:\n\t\tpython Main.py url\n\n\turl : l'adresse de la video" |
Partager