begin process at 2012 02 08 13:26:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Python

 > 

Réseau et Internet

 > 

Général

 > 

urllib2 et interface graphique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

urllib2 et interface graphique

samedi 14 août 2010 à 17:52:47 | urllib2 et interface graphique

rezuz

Membre Club
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 sert d'un Thread pour télécharger la vidéo. de cette façon, des le debut du programme il est possible de regarder la vidéo avec le media player de notre choix pendant son téléchargement. et donc ainsi plus de souci de limitation

mon problemme est le suivant :
j'ai donc voulut faire une interface graphique a mon programme pour en faire un executable pour mon frere et des amis qui comprenne rien en programmation et qui seraient pas capable de changer une ligne dans un code
du coup le telechargement est trés lent, voir inexistant et surtout il s'arrete des que l'on lance la video. problemme qui n'apparais pas dans le programme sans interface.

je vais mettre les deux codes : (pour que vous puissiez les utilisers pour megavideo et ^^ qui vous puissiez resoudre ce problemme

code avec interface graphique
Code Python :
# -*- coding: utf-8 -*-"
 
from threading import Thread
import urllib2
import Tkinter
import sys
import os
 
titre = "ma video temporaire.avi"
class Interface(Tkinter.Frame):
    def __init__(self):
        Tkinter.Frame.__init__(self)
        self.master.title("visionneur")
        
        Tkinter.Button(self, text = "lancer", fg = "blue", command = self.lancer).grid(row = 2, column = 1)
        Tkinter.Button(self, text = "Annuler", fg = "red", command = self.Annuler).grid(row = 2, column = 2)
        self.entreeAdresse = Tkinter.Entry(self, width = 150, fg = "grey")
        self.entreeAdresse.grid(row = 1, column = 1, columnspan = 2)
        self.entreeAdresse.insert(Tkinter.END, "coller l'adresse de la video a visioner/telecharger")
        
        self.grid()
        
    def lancer(self):
        url = self.entreeAdresse.get()
        Th = Thread_telecharge(url)
        Th.start()
    
    def Annuler(self):
        self.master.destroy()
        
    def clean(self, evt):
        self.entreeAdresse.delete(0, Tkinter.END)
        self.entreeAdresse.configure(fg = "black")
        
class Thread_telecharge(Thread):
    def __init__(self, URL_video):
        Thread.__init__(self)
        self.URL_video = URL_video
        
    def run(self):
 
        titre ="ma video temporaire.avi"
        
        #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(self.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(titre , "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 "télécharger"
 
 
if __name__ == "__main__":
    App = Interface()
    App.entreeAdresse.bind("<Button-1>", App.clean)
    App.mainloop()


et le code sans interface :
Code Python :
# -*- coding: utf-8 -*-"
 
from threading import Thread
import urllib2
import Tkinter
import sys
import os
"""
titre = "ma video temporaire.avi"
class Interface(Tkinter.Frame):
    def __init__(self):
        Tkinter.Frame.__init__(self)
        self.master.title("visionneur")
        
        Tkinter.Button(self, text = "lancer", fg = "blue", command = self.lancer).grid(row = 2, column = 1)
        Tkinter.Button(self, text = "Annuler", fg = "red", command = self.Annuler).grid(row = 2, column = 2)
        self.entreeAdresse = Tkinter.Entry(self, width = 150, fg = "grey")
        self.entreeAdresse.grid(row = 1, column = 1, columnspan = 2)
        self.entreeAdresse.insert(Tkinter.END, "coller l'adresse de la video a visioner/telecharger")
        
        self.grid()
        
    def lancer(self):
        url = self.entreeAdresse.get()
        Th = Thread_telecharge(url)
        Th.start()
    
    def Annuler(self):
        self.master.destroy()
        
    def clean(self, evt):
        self.entreeAdresse.delete(0, Tkinter.END)
        self.entreeAdresse.configure(fg = "black")
        """
class Thread_telecharge(Thread):
    def __init__(self):
        Thread.__init__(self)
        self.URL_video = "http://www697.megaupload.com/files/465ee85072e01802793703c4731d4b2f/FlashForward.S01E19.VOSTFR.HDTV.XviD.avi"
        
    def run(self):
 
        titre ="ma video temporaire.avi"
        
        #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(self.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(titre , "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 "télécharger"
 
"""
if __name__ == "__main__":
    App = Interface()
    App.entreeAdresse.bind("<Button-1>", App.clean)
    App.mainloop()
"""
Th = Thread_telecharge()
Th.start()

comme vous le voyer il sagit du même code que le premier mais avec les partie concernant l'interface graphique grisé.
mercredi 18 août 2010 à 16:43:21 | Re : urllib2 et interface graphique

laurent1024

Membre Club
Bonjour.
Étrange comme problème !
Avec l'interface graphique, le thread de téléchargement est peut-être défavorisé par rapport au thread gérant l'affichage de la fenêtre.
lundi 23 août 2010 à 10:37:28 | Re : urllib2 et interface graphique

aera group

Je vais y regarder mais j'aime bien ton idée de programme.
________
Aéra


Cette discussion est classée dans : self, video, thread, tkinter, entreeadresse


Répondre à ce message

Sujets en rapport avec ce message

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 Allocation de mémoire et référence [ par benc77 ] Bonjour, je vous soumet un problème bizarre de collision de variables : Dans le code suivant, la méthode __init__ de la classe MySemTree ne semble p PYgtk bouton en premier plan [ par seb57sk8 ] Bonjour a tous et a toute, Je reviens a la charge pour une questionde positionnement de widget: J'utilise PYgtk et la methode fixed. j'aimerai que Tkinter, non déplacement d'un ballon incompréhensible [ par ubranov ] Bonjour, Je cherche simplement à animer un petit ballon dans une fenêtre grâce au module Tkinter. Je n'arrive vraiment pas à comprendre en quoi le co setdefault method [ par Jideone ] Salut a tout le monde.. je voudrais savoir s'il est possible de reecrir le code suivant sans la methode "setdefault".. je debute en programmation... Recuperer le contenu d'une Entry (Tkinter) [ par Souslannodenime ] Bonjour J'ai un problème. Je n'arrive pas a recuperer le contenu d'une Entry que j'ai crée dans une autre classe. class Fenetre: def __init__(self fenêtre avec client /serveur avec socket. [ par francoisjack ] Bonjour a tous j'ai un problème avec mon pt programme je veux faire une connexion entre deux fenêtres client et serveur avec une connexion via socket Positionner le curseur dans un widget text (Tkinter) [ par Souslannodenime ] Voila, j'ai crée un client pour un système de chat via socket(un genre de irc-like) et j'aimer savoir comment faire pour que le widget text(qui me se aide pour Jeu puissance 4 [ par soso586 ] bonjour, j'aimerai modifier ce code python pour que le jeu ne s'arrete pas lorsque le joueur à fait un alignement de 4 pions , mais 3 alignements. Tkinter [ par williammalavelle ] Bonjour à tous, Question stupide : je débute sous Python et sous Tkinter. J'ai un script python que je souhaite lié à Tkinter (j'ai préparé les fenêt


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,250 sec (3)

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