begin process at 2010 09 04 09:31:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & internet

 > TÉLCHARGEUR YOUTUBE

TÉLCHARGEUR YOUTUBE


 Information sur la source

Note :
5 / 10 - par 2 personnes
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & internet Classé sous :téléchargeur, youtube, internet, Thread, urllib Niveau :Initié Date de création :29/05/2009 Vu :4 511

Auteur : rezuz

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

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

  • #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()
#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 !


 Sources de la même categorie

Source avec une capture HTTP FORWARDER par matad0r
Source avec Zip GÉNÉRATEUR HTML POUR L'UTILISATION DE PYTHON EN CGI par Just_1
SIMPLE COMPARATEUR IPV4 EN PYTHON par erebos
Source avec Zip LIRE DES FICHIERS PCAP par KimbleMandel
Source avec Zip Source avec une capture BLOQUEUR INTERNET par amaury74

 Sources en rapport avec celle ci

TK_WATCH :HORLOGE GRAPHIQUE par afranck64
Source avec Zip Source avec une capture BENCHMARK PAR LE CALCUL DE PI MULTITHREAD par amaury74
Source avec Zip Source avec une capture BLOQUEUR INTERNET par amaury74
Source avec une capture WWWEXTRACT : RÉCUPÉRATION D'INFORMATIONS D'UNE PAGE HTML par jojo930
Source avec Zip Source avec une capture 'MES CONNEXIONS' OU COMMENT CONNAITRE LES CONNEXIONS ET LES ... par stephane70

Commentaires et avis

Commentaire de linkid le 01/06/2009 10:55:43 6/10

Salut !

Je trouve ta source sympa. Je découvre par la même occasion un exemple d'utilisation de thread.
Et je l'ai testé chez moi et ça marche, mais il a quelques problèmes...

Tout d'abord, je pense que tu devrais arranger ta ligne 89. En effet, je suis sous Ubuntu qui est une distribution GNU/Linux et je n'ai pas de C:.
Donc soit tu laisses l'utilisateur choisir l'emplacement "entier" (depuis la racine jusqu'au nom du fichier) en le mettant dans le champ "Nom", soit tu récupères le chemin du répertoire courant avec un os.getcwd() et tu demandes seulement le nom du fichier.
Comme ça, ton script sera plus portable je pense...

Ensuite, je ne sais pas si c'est justement parce que je suis sous Ubuntu (sûrement), mais les éléments de ton interface ne sont pas bien alignés : le champ "début du téléchargement" est sous les boutons.
Ce n'est pas trop grave en soit, mais bon...

Enfin, c'est pas super de laisser "Début du téléchargement..." car on croit que ce n'est pas terminé, même si tu le dis dans la console.
Pas trop grave non plus..

Merci de ta contribution.
@+
Linkid

Commentaire de linkid le 01/06/2009 11:00:35

Hum !

Je viens de trouver ceci : http://www.pythonfrance.com/codes/TELECHARGEUR-VIDEO-YOUTUBE_42685.aspx

Ca ressemble beaucoup j'ai l'impression, mise à part l'utilisation de Thread.
Si tu t'en inspires, cites au moins tes sources...

Commentaire de gaulthier le 03/06/2009 16:06:23 4/10

Sympa la source mais je rejoins les avis donné plus haut!
Personnellement, après avoir vu la sources dont tu t'es inspiré, jme suis fait un téléchargeur aussi avec interface graphique (que je ne posterais p-e pas ^^) mais je n'utilisais pas les Threads.
Je te mettrais une note de 4/10 car l'interface n'est pas très belle (bien que Tkinter n'est pas la meilleur bibliothèque pour cela ^^), il est vrai que pouvoir choisir le répertoire de destination serais bien sympa pour l'utilisateur, et de plus une petite ProgressBar (a créer malheureusement :/) serait pas mal pour la visualisation du téléchargement

Au fait Linkid, moi aussi j'ai ce bug d'affichage et je tourne sous windows

Commentaire de rezuz le 04/06/2009 18:36:29

Bon déja pour commencer, je tient a précisé que j'ai dit que j'avais utilisé une source de ce site mais c'est vrai que je ne lé pas cité. j'en m'en excuse je ne tient absolument pas a mon attribuer le mérite.

je sais l'interface ne tient pas du tout la route et pour le portage j'avoue ne pas y avoir travailler du tout. Mais il s'agit la que d'un test
En effet, je suis en train d'en faire un autre et je voulais a vrais dire aprés moult tentative demander des avis sur une possible amélioration de la vitesse de téléchargement. mais bug du site ou que je suis pas trés douer j'y arrivé pas si j'écrivé trop du truc dans la description

par contre pour la progres bar j'ai ésseyer mais je n'y arrive pas.

Mais bon ne dit t'on pas que ce qui nous tue pas nous rend plus fort ?

Commentaire de gaulthier le 04/06/2009 19:28:17

Pour la ProgressBar une variable qui contient le nombre d'octet déjà télécharger que tu divises par la taille du fichier le tout multiplié par 100 (^_^) et tu as le %age à afficher

Pour la vitesse, je ne sais pas comment tu pourrais faire... vive les forum pour ca :p

En ce qui concerne le chemin du répertoire de destination, si tu veux j'ai créé un widget qui pourrait t'être utile, jvai le poster de suite ! Tiens, jvai même poster ma ProgressBar avec soyons fou! xD

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Comment fair un robot qui puisse fair des des actions sur internet ? [ par tipro75 ] Bonjour, esque qu'el qu'un sait Comment fair un robot  qui puisse fair des des actions sur internet ? merci d'avance cordialement ********. Connexion internet (je n'arrive pas à ouvrir Internet Explorer) [ par atoutcoeur13 ] Bonjour à toutes et tous, J'ai un soucis de connexion et j'aimerais avoir une réponse assez rapide.Voilà!La fille de ma copine a r Surveiller les échanges sur internet [ par aera group ] Bonjour,Je souhaite développer un petit programme de contrôle d'Interent sur un PC (comme pour faire un logiciel de contrôl parental par exemple). J'a chat basique en python [ par rezuz ] bonjour, je suis en train d'essayer de programmer un chat en python, principalement dans le but d'apprendre l'utilisation des sockets et de la commun probleme avec karrigell [ par majiddus ] bonjour je suis debutant en python,dans le but d'heberger un site web, j'ai installé le serveur karrigell,a partir de mon resau local tout marche bien urllib2 et interface graphique [ par rezuz ] bonjour à tous. aprés avoir eu de nombreux "problemme" avec les 72 minutes de limitation vidéo de MEGAVIDEO, j'ai décidé de faire un programme qui se


Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales