summaryrefslogtreecommitdiffstats
path: root/download_thread.py
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2009-05-20 13:05:21 +0200
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2009-05-20 13:05:21 +0200
commit641cd8c63f4c3a96a9acf4d46450ab975b9c66cd (patch)
treea1bf0e74c3bde51d174bc0d154d1f88359437fbc /download_thread.py
parentModul struktur angelegt und request klasse eingefügt (diff)
downloadpyload-641cd8c63f4c3a96a9acf4d46450ab975b9c66cd.tar.xz
Neue Request Klasse eingebunden + ein paar Status Funktionen
Diffstat (limited to 'download_thread.py')
-rw-r--r--download_thread.py114
1 files changed, 0 insertions, 114 deletions
diff --git a/download_thread.py b/download_thread.py
deleted file mode 100644
index 672f15682..000000000
--- a/download_thread.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-#
-#Copyright (C) 2009 sp00b, sebnapi
-#
-#This program is free software; you can redistribute it and/or modify
-#it under the terms of the GNU General Public License as published by
-#the Free Software Foundation; either version 3 of the License,
-#or (at your option) any later version.
-#
-#This program is distributed in the hope that it will be useful,
-#but WITHOUT ANY WARRANTY; without even the implied warranty of
-#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#See the GNU General Public License for more details.
-#
-#You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-###
-
-import threading
-from time import time, sleep
-from copy import copy
-import urllib
-
-class Status(object):
- """ Saves all status information
- """
- def __init__(self, id):
- self.type = None
- self.status_queue = None
- self.id = id
- self.total_kb = 0
- self.downloaded_kb = 0
- self.rate = 0
- self.expected_time = 0
- self.filename = None
- self.url = None
- self.exists = None
- self.waituntil = None
- self.want_reconnect = None
-
- def __call__(self, blocks_read, block_size, total_size):
- if self.status_queue == None:
- return False
- self.start = time()
- self.last_status = time()
- self.total_kb = total_size / 1024
- self.downloaded_kb = (blocks_read * block_size) / 1024
- elapsed_time = time() - self.start
- if elapsed_time != 0:
- self.rate = self.downloaded_kb / elapsed_time
- if self.rate != 0:
- self.expected_time = self.downloaded_kb / self.rate
- if self.last_status+0.2 < time():
- self.status_queue.put(copy(self))
- self.last_status = time()
-
- def set_status_queue(self, queue):
- self.status_queue = queue
-
-
-class Download_Thread(threading.Thread):
- def __init__(self, parent):
- threading.Thread.__init__(self)
- self.shutdown = False
- self.parent = parent
- self.setDaemon(True)
- self.start()
-
- def run(self):
- while (not self.shutdown):
- if not self.parent.download_queue.empty():
- py_load_file = self.parent.download_queue.get()
- self.download(py_load_file)
- if self.shutdown:
- sleep(1)
- self.parent.remove_thread(self)
-
- def download(self, py_load_file):
- pyfile = py_load_file
- status = pyfile.status
- pyfile.prepareDownload()
-
- if not status.exists:
- self.shutdown = True
- return False
-
- if status.want_reconnect:
- print "handle reconnect"
- self.shutdown = True
- return False
-
- while (time() < status.waituntil):
- status.type = "waiting"
- sleep(1) #eventuell auf genaue zeit warten
-
- #missing wenn datei nicht auf server vorhanden
- #if type=="check":
- #return params
- #if type in 'missing':
- #self.status = "missing"
- #print "Datei auf Server nicht vorhanden: " + params
- ##im logger eintragen das datei auf server nicht vorhanden ist
- #warning("Datei auf Server nicht voblocks_readrhanden: " + url)
- #if type in 'wait':
- # status.type = "waiting"
- # print params
- # sleep(params+1)
- print "going to download"
- status.type = "downloading"
- #startet downloader
- urllib.urlretrieve(status.url, pyfile.download_folder + "/" + status.filename, status)
- self.shutdown = True