def filling_list_of_letters(self): try: name_of_folder = self.Main_window.Folders_box.currentText() except Exception: name_of_folder = 'INBOX' list_of_folders = self.Imap.parse_list_of_folders() if len(list_of_folders) == 0: self.Grid.addWidget( QtWidgets.QLabel('Problems with decode folders'), 0, 0) for item in list_of_folders: if item[0] == name_of_folder: self.Imap.select_folder(item[1]) break try: count_of_letters = int(self.Imap.get_count_of_letters()) except Exception: self.Imap.select_folder('INBOX') print('не упал') count_of_letters = int(self.Imap.get_count_of_letters()) print('упал') if count_of_letters == 0: self.Grid.addWidget(QtWidgets.QLabel('No letters'), 0, 0) else: trd = DownloadThread(self.Imap, count_of_letters) self.trd = trd trd.start() trd.finished.connect(self.finished) self.set_disabled(True)
def start(self): if self.stopping: return self.thread_ = DownloadThread(self.url, self.target) self.thread_.completed.connect(self._on_completed) self.thread_.aborted.connect(self._on_aborted) self.thread_.failed.connect(self._on_failed) self.thread_.progressed.connect(self._on_progressed) self.thread_.start()
def show_more_clicked(self): index = self.Index_of_current_letter count = int(self.Imap.get_count_of_letters()) - index - 1 if count <= 0: return self.trd = DownloadThread(self.Imap, count) self.trd.start() self.trd.finished.connect(self.finished) self.set_disabled(True)
def createThread(self): """create a download thread""" thread = DownloadThread(self) self.threads.append(thread)
def startDownload(self, downloadInfo): """ 通过DonwloadInfo模型中的数据进行下载 """ name = downloadInfo.title + ".torrent" downloadThread = DownloadThread(downloadInfo = downloadInfo, name = name, sem = self.sem) downloadThread.start()
def download(self): try: self.d_size = long(self.info['Content-Length']) print "File size :", self.d_size except: print "Resume support not available." print "Exiting..." sys.exit(1) try: if self.info['Accept-Ranges'] != 'bytes': print 'It seems that server does not support byte ranges.I don\'t know how to handle this, so I am EXITING. If you know what can be done then please inform author at itrishansh[at]gmail[dot]com.' sys.exit(1) except: print "Server doesn\'t support ranges." self.parts = [] end = 0 while (end + self.part_size) < self.d_size: self.parts.append((str(end), str(end + self.part_size - 1))) #print (str(end), str(end + self.part_size -1)) end = end + self.part_size #print end if end < self.d_size: self.parts.append((str(end), '')) self.nparts = len(self.parts) #print self.parts queueLock = threading.Lock() workQueue = Queue.Queue(len(self.parts)) threads = [] threadID = 1 # Create new threads while threadID <= self.n_threads: thread = DownloadThread(threadID, 'Thread-' + str(threadID), self.name, workQueue, queueLock, self.exit, self.url) thread.start() threads.append(thread) threadID += 1 # Fill the queue queueLock.acquire() i = 0 for part in self.parts: workQueue.put(part + (i, )) i += 1 queueLock.release() del i # Wait for queue to empty while not workQueue.empty(): time.sleep(1) # Notify threads it's time to exit #print "Modifying exitFlag" self.exitFlag = 1 # Wait for all threads to complete for t in threads: t.join() print 'Merging downloaded parts' self.merge() print "Exiting Main Thread"
def start_download_img(url, file_name): t = DownloadThread(arg=(url, file_name)) t.setDaemon(True) t.start()