- 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"
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"