mp3 yada avi indirici(downloader)

Başlatan devturk, 21 Mayıs 2010 - 12:42:07

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

devturk

Kullanılan metotlar: urllib , re modülü



import re, sys, urllib2, tempfile

class kontrol(object):
print "ornek kulnaimi......................"
print "python indir.py http://blip.tv/file/get/Pycon-720.flv"
def __init__(self, url):
self.url=url
self.req=re.search(r"^(http://)", self.url)
def kont(self):
print "URL KONTROL EDILIYOR......................"
if self.req==None:
print "http ile baslamali duzeltilmesi gerek........"
return False
else:
print "ok!!!!........."
return True
def dvm(self):
if self.kont():
print "bu asama gecildi.............."
print "ok ........................."
return self.kont()








def indir(path):
print "cagirilan url..........  %s" % path
m=kontrol(path).dvm()
if m:
filer=urllib2.urlopen(path)
try:
size=int(filer.info()["Content-Length"])
except KeyError:
size=None
hndl, temp=tempfile.mkstemp(".mp3")
f=open(temp, "wb")
fech=0
while 1:
buf=filer.read(1024*20)
if not buf:
print "dosya okunamiyor......."
break
f.write(buf)
fech +=len(buf)
if size:
sys.stdout.write("======> %.02f%% <====== of %s BYTES\r" % (100*fech / float(size), size))
else:
print "dosya tamamlandi...................."
print "indirilen dosya buyuklugu....... % s" % fech
sys.stdout.write("feched BYTES %d" % fech)
sys.stdout.flush()
f.close()
filer.close()
return temp








for x in sys.argv[1:]:
print indir(x)



buda cıktısı

Alıntı Yappython dwn.py indir.py http://blip.tv/file/get/Pycon-720.flv
ornek kulnaimi......................
python indir.py http://blip.tv/file/get/Pycon-720.flv
cagirilan url..........  indir.py
http ile baslamali duzeltilmesi gerek........
http ile baslamali duzeltilmesi gerek........
None
cagirilan url..........  http://blip.tv/file/get/Pycon-720.flv
ok!!!!.........
bu asama gecildi..............
ok .........................
ok!!!!.........
======> 0.00% <====== of 1468128426 BYTES





bsod1

güzelmiş, fakat bir şey dikkatimi çekti, kontrol için neden sınıf oluşturdun? yani kontrol(url) şeklinde bir fonksiyonla çok daha kolay yapabilirdin, hatta bu da kod(mesajlar hariç)def kontrol(url):
    if re.search(r"^(http://)", url):
        return True
    return False

devturk

tesekkurler.....
hakılısınız bunu def ıle yapabılrdım ama yenı class ogrenmeye basladıgım ıcın bol bol class pratıgı yapmaya calsıyorum
aslında bunun hepsını klas ıle yazdırdım ama sys.argv[1:] den  sonra class la yazdıgımı calsıtamazdım
class ınstance gıbı bır sey dıyordu
o yuzden bende bolup def ıle yazdım gerısını

anlasılacagı uzere class olan bolum http ıle baslayıp baslamadıgını kontrol edıyor

eger def ıle yazsaydık req olan degısken ı global yapmalıydık gormesı ıcın
yanı def ın   dısında tutmamız gerekırdı

eger class la nasıl sys argv de nasıl calıstırcagımızı bılen varsa sevınırım
sımdıden tessekurler