Bonsoir a tous
ceci est mon second code python
il permet de telecharger une video sur youtube
il montre comment utiliser des regexp en python (pas tres evoluer malgre tout) , comment decouper des chaines de caractere , de rechercher un peu dedans
enfin que des methodes toutes betes mais qui misent bout a bout ont une utilité
en gros pas besoin d'etre une bete pour faire un programme utile :p
sinon ya aussi le passage pour telecharger le fichier qui peut etre interressant
je n'ai pas encore implmenter de GUI mais ca pourrais venir si je me le sens
la progression est facilement implementable mais je ne l'ai pas fait pour ne pas surcharger la console
Source / Exemple :
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"
Conclusion :
voila j'espere avoir des commentaires constructif sur la maniere d'ameliorer et optimiser le code .
je compte restructurer le programme pour utiliser les mecanisme de l'OO avec Thread eventuellement pour le telechargement
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.