Télchargeur youtube

Contenu du snippet

un logiciel qui permet de télécharger des video sur youtube Le principe de l'écriture du fichier binaire a été récupéré sur une source de ce site.

Source / Exemple :


#coding:utf-8

# Téléchargeur de video sur youtube qui permet de télécharger une video qui provient de youtbe.
# Il utilise un Thread pour le téléchargement se qui fait que l'on peut visionner la video
# pendant les téléchargement
# C'est le principe du streaming

from Tkinter import *
from threading import Thread
import urllib2
import sys
import re

class Interface_App(Frame):
    def __init__(self):
        global entree1, entree2, entree3
        Frame.__init__(self)
        self.master.title("TY")
        self.master.geometry("390x80")
        self.label1=Label(self,text="URL")
        self.label2=Label(self,text="Nom")
        self.label00=Label(self,text="")
        self.entree1=Entry(self,width=50)
        self.entree2=Entry(self,width=50)
        self.entree3=Entry(self, width=70)
        self.boutton1=Button(self,text="Télécharger",command=self.Telechar)
        self.boutton2=Button(self,text="Quitter",command=self.master.destroy)
        self.label1.grid(row=0,column=0)
        self.label2.grid(row=1,column=0)
        self.label00.grid(row=3,column=0)
        self.entree1.grid(row=0,column=1)
        self.entree2.grid(row=1,column=1)
        self.entree3.place(x=0,y=60)
        self.boutton1.grid(row=2,column=0)
        self.boutton2.grid(row=2,column=1)
        self.grid()
        
    def Telechar(self):
        global url, titre, Erreur
        url=self.entree1.get()
        titre=self.entree2.get()
        Erreur="Erreur de téléchargement."
        t1=Thread_telecharge()
        try:
            t1.start()
            self.entree3.insert(END,"Début du téléchargement...")
        except:
            self.entree3.insert(END,"Erreur de téléchargement.")

class Thread_telecharge(Thread):
    def __init__(self):
        Thread.__init__(self)
        
    def run(self):
        print "Début du téléchargement"
        # Fonction qui va permettre de lire la source de la page
        Source=urllib2.urlopen(url, None).read()

        # Video_ID
        # on cherche dans la source  'video_id' pour avoir l'id de la video
        DV=Source.index('video_id=')    # Debut de l'id
        FV=Source.index('&',DV)         # fin de l'id
        # On découpe  l'id de la video qui se situe entre DV et FV
        VideoID=Source[DV:FV]
        #on affiche l'id de la video

        # t=
        #On cherche qqch que j'ai nommer indice temps
        # même proceder qu'avec l'idée de la video
        indicetemp=Source.index('t=')
        indicetemp2=Source.index("&",indicetemp)
        Temps=Source[indicetemp:indicetemp2]

        print "URL de la video\n"
        # Nouvelle url avec la video incorporé dedans
        # écrite grace a l'id, l'indecetemps et une injection javascript dans l'url
        # injection javascript : "get_video"
        URL_video="http://www.youtube.com/get_video?"+VideoID+"&"+Temps
        print URL_video
        
        try:
            #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(URL_video, None, headers)
            vid = urllib2.urlopen(req)
            #on cree le  file fichier en mode ajout et pour des donnees de type binaire
            file = open("C:/Users/valerie/Desktop/"+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 soit 4 Ko
                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()

            print "le fichier a bien été télécharger."
            print "La video ce trouve, C:/Users/valerie/Desktop/",titre
        except:
            print "Erreur de téléchargement."

        
if __name__=='__main__':
    App=Interface_App()
    App.mainloop()

Conclusion :


merci deja d'avoir lu ma source
si vous aver quoi que ce quoit a me dire ou des conseil faite le !

A voir également

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.