def __startNextDownload(self, uid): queue = self.queue_dict[uid] entry = next(queue.queue) queue.current_download += 1 aria_options = queue.aria_options if isinstance(entry, dict): aria_options.update( {'dir': queue.base_path + entry["folder_path"]}) if 'file_name' in entry.keys(): aria_options.update({'out': entry['file_name']}) link = entry['url'] else: aria_options.update({'dir': queue.base_path}) link = entry if is_magnet(link): download = aria2.add_magnet(link, aria_options) else: download = aria2.add_uris([link], aria_options) if download.error_message: queue.listener.onDownloadError(download.error_message) return with download_dict_lock: download_dict[queue.listener.uid] = AriaDownloadStatus( download.gid, queue.listener, self) LOGGER.info(f"Started: {download.gid} DIR:{download.dir} ")
def add_download(self, link: str, path, listener, filename): if is_magnet(link): download = aria2.add_magnet(link, {'dir': path, 'out': filename}) else: download = aria2.add_uris([link], {'dir': path, 'out': filename}) if download.error_message: # no need to proceed further at this point listener.onDownloadError(download.error_message) return with download_dict_lock: download_dict[listener.uid] = AriaDownloadStatus(download.gid, listener) LOGGER.info(f"Started: {download.gid} DIR:{download.dir} ")
def __onDownloadComplete(self, api: API, gid): with self._resource_lock: if self.gid == gid: if api.get_download(gid).followed_by_ids: self.gid = api.get_download(gid).followed_by_ids[0] download_dict[self._listener.uid] = AriaDownloadStatus( self.gid, self._listener) update_all_messages() LOGGER.info(f'Changed gid from {gid} to {self.gid}') else: self._listener.onDownloadComplete()
def add_download(self, link: str, path,listener, use_tor=False): if is_magnet(link): download = aria2.add_magnet(link, {'dir': path}) elif use_tor: download = aria2.add_uris([link], {'dir': path, 'http-proxy' : 'http://127.0.0.1:8118', 'https-proxy' : 'http://127.0.0.1:8118', 'ftp-proxy' : 'http://127.0.0.1:8118'}) else: download = aria2.add_uris([link], {'dir': path}) if download.error_message: # no need to proceed further at this point listener.onDownloadError(download.error_message) return with download_dict_lock: download_dict[listener.uid] = AriaDownloadStatus(download.gid, listener) LOGGER.info(f"Started: {download.gid} DIR:{download.dir} ")
def add_aria2c_download(link: str, path, listener, filename): if is_magnet(link): download = aria2.add_magnet(link, {'dir': path, 'out': filename}) else: download = aria2.add_uris([link], {'dir': path, 'out': filename}) if download.error_message: error = str(download.error_message).replace('<', ' ').replace('>', ' ') LOGGER.info(f"Download Error: {error}") return sendMessage(error, listener.bot, listener.update) with download_dict_lock: download_dict[listener.uid] = AriaDownloadStatus( download.gid, listener) LOGGER.info(f"Started: {download.gid} DIR: {download.dir} ") sendStatusMessage(listener.update, listener.bot)
def __onDownloadComplete(self, api: API, gid): with self._resource_lock: if self.gid == gid: download = api.get_download(gid) if download.followed_by_ids: self.gid = download.followed_by_ids[0] with download_dict_lock: download_dict[self.__listener.uid] = AriaDownloadStatus(self, self.__listener) if download.is_torrent: download_dict[self.__listener.uid].is_torrent = True update_all_messages() LOGGER.info(f'Changed gid from {gid} to {self.gid}') else: self.__listener.onDownloadComplete()
def __onDownloadComplete(self, api: API, gid): LOGGER.info(f"onDownloadComplete: {gid}") dl = getDownloadByGid(gid) download = api.get_download(gid) if download.followed_by_ids: new_gid = download.followed_by_ids[0] new_download = api.get_download(new_gid) with download_dict_lock: download_dict[dl.uid()] = AriaDownloadStatus(new_gid, dl.getListener()) if new_download.is_torrent: download_dict[dl.uid()].is_torrent = True update_all_messages() LOGGER.info(f'Changed gid from {gid} to {new_gid}') elif dl: threading.Thread(target=dl.getListener().onDownloadComplete).start()
def __onDownloadComplete(api, gid): LOGGER.info(f"onDownloadComplete: {gid}") dl = getDownloadByGid(gid) download = api.get_download(gid) if download.followed_by_ids: new_gid = download.followed_by_ids[0] new_download = api.get_download(new_gid) if dl is None: dl = getDownloadByGid(new_gid) with download_dict_lock: download_dict[dl.uid()] = AriaDownloadStatus( new_gid, dl.getListener()) LOGGER.info(f'Changed gid from {gid} to {new_gid}') elif dl: Thread(target=dl.getListener().onDownloadComplete).start()
def add_download(self, link: str, path): if is_magnet(link): download = aria2.add_magnet(link, {'dir': path}) else: download = aria2.add_uris([link], {'dir': path}) self.gid = download.gid with download_dict_lock: download_dict[self.__listener.uid] = AriaDownloadStatus(self, self.__listener) if download.error_message: self.__listener.onDownloadError(download.error_message) return LOGGER.info(f"Started: {self.gid} DIR:{download.dir} ") aria2.listen_to_notifications(threaded=True, on_download_start=self.__onDownloadStarted, on_download_error=self.__onDownloadError, on_download_pause=self.__onDownloadPause, on_download_stop=self.__onDownloadStopped, on_download_complete=self.__onDownloadComplete)