cs_rezuz
Messages postés6Date d'inscriptionmercredi 29 octobre 2008StatutMembreDernière intervention14 août 2010
-
14 août 2010 à 17:52
aera group
Messages postés382Date d'inscriptionmercredi 23 août 2006StatutMembreDernière intervention 8 novembre 2010
-
23 août 2010 à 10:37
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
# -*- 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("", App.clean)
App.mainloop()
et le code sans interface :
# -*- 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("", 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é.
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 18 août 2010 à 16:43
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.