bonjour
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
et le code sans interface graphique
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 # -*- 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()
voila, comme vous pouvez le constater ce sont a peu de chose prés les même codes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 # -*- 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()![]()
Partager