Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from urllib.request import *
- import math
- import sys
- import time
- import os,traceback
- dl_starttime = time.clock()
- timeout = 60
- def getDLink(link = '') :
- link = link.split("|")
- #u = urlopen(url)
- #s = u.readall()
- url = "http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=download&fileid=" + link[2] + "&filename=" + link[3]
- #print(url)
- try:
- u = urlopen(url,None,timeout)
- s = u.readall()
- print("Rapidshare-Responsed:\n\n",s,"\n\n")
- if 'ERROR' in str(s):
- raise NameError("Rapidshare responsed an Error :(")
- s = str(s).split(":")
- s = s[1]
- s = s.split(",")
- url = "http://" + s[0] + "/cgi-bin/rsapi.cgi?sub=download&fileid=" + link[2] + "&filename=" + link[3] + "&dlauth=" + s[1]
- retval = [url,link[3]]
- return retval
- except URLError:
- print("URLError exception caught:\n\n",sys.exc_info(),"\n\n")
- pass
- def download(url='',filename=''):
- u = urlopen(url,None,timeout)
- meta = u.info()
- file_size = int(meta.get('Content-Length'))
- if os.path.exists(filename):
- localfile_size = os.path.getsize(filename)
- else:
- localfile_size = 0
- print("file_size:",file_size," localfile_size:",localfile_size)
- if localfile_size < file_size:
- f = open(filename,'wb')
- print("Downloading: " + filename + " Bytes:" + str(file_size))
- file_size_dl = 0
- block_sz = 32768
- while True:
- buffer = u.read(block_sz)
- if not buffer:
- break
- file_size_dl += len(buffer)
- f.write(buffer)
- p = file_size_dl * 100.0 /file_size
- d = file_size_dl/1024/1024
- progressbar(p,d)
- #status = r"%2.2f MB [%3.3f%%]" % (file_size_dl/1024/1024, file_size_dl * 100. / file_size)
- #status = status + chr(8)*(len(status)+1)
- #print(status)
- f.close()
- else:
- print("Skipped file: ",filename)
- def progressbar(percent,downloaded):
- width = 60
- mark = '#'
- marks = math.floor(width * (percent /100.0))
- spaces = math.floor(width - marks)
- loader = '[' + (mark * int(marks)) + (' ' * int(spaces)) + ']'
- eltime = getelapsedtime(dl_starttime)
- sys.stdout.write("%s %2.2f%% (%2.2f MB) %2d h %2d min %2d sec\r" % (loader, percent,downloaded,eltime[0],eltime[1],eltime[2]))
- if percent >= 100:
- sys.stdout.write("\n")
- sys.stdout.flush()
- def getelapsedtime(starttime):
- now = time.clock()
- delta = int(now-starttime)
- hr = math.floor(delta / 3600)
- min = math.floor((delta % 3600) / 60)
- sec = ((delta % 3600) % 60)
- eltime = [hr,min,sec]
- return eltime
- def validatefilesizes():
- filenames = []
- fin = True
- for file in links:
- filename = file.split("|")[3]
- filenames.append([filename,file])
- for file in filenames:
- print(file)
- dlink = getDLink(file[1])[0]
- u = urlopen(dlink,None,timeout)
- meta = u.info()
- localsize = os.path.getsize(file[0])
- if localsize < int(meta.get('Content-Length')):
- #dlink = getDLink(file[1])
- #download(dlink,file[0])
- fin = False
- return fin
- #ein Array aus Links =)
- links = []
- def iterate():
- for file in links:
- try:
- dl_starttime = time.clock()
- arguments = getDLink(file)
- download(arguments[0],arguments[1])
- except:
- print("Ein Fehler trat auf:\n\n",file," ",sys.exc_info(),"\n\n")
- traceback.print_exc(file=sys.stdout)
- print("\n\n")
- def main():
- dl_starttime = time.clock()
- try:
- iterate()
- while not validatefilesizes():
- try:
- iterate()
- validatefilesizes()
- except:
- print("Ein Fehler trat auf:\n\n",sys.exc_info(),"\n\n")
- except:
- print("Ein Fehler trat auf:\n\n",sys.exc_info(),"\n\n")
- if __name__ == "__main__":
- main()
Add Comment
Please, Sign In to add comment