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} ")
Ejemplo n.º 2
0
 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} ")
Ejemplo n.º 3
0
 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()
Ejemplo n.º 4
0
 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} ")
Ejemplo n.º 5
0
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()
Ejemplo n.º 7
0
 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()
Ejemplo n.º 8
0
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)