Example #1
0
    def __init__(
        self,
        file_urls,
        file_hash_infos=None,
        file_save_dir=None,
        file_sizes=None,
        concurrent_num=5,
    ):
        '''
        init docs
        '''
        self.file_urls = file_urls
        self.file_hash_infos = file_hash_infos
        self.file_save_dir = file_save_dir
        self.file_sizes = file_sizes
        self.concurrent_num = concurrent_num

        self.greenlet_dict = {}
        self.fetch_file_dict = {}
        self.total_size = 0

        self.fetch_size_greenlet_dict = {}
        self.fetch_size_dict = {}
        self.size_dict = {}

        self.signal = EventRegister()

        self.downloaded_size = 0
        self.update_time = -1

        self.fetch_size_pool = None
        self.pool = None

        self.stop_or_pause = False
        self.error_flag = False
Example #2
0
    def __init__(
            self,
            file_url,
            file_save_dir=None,
            file_save_name=None,
            file_hash_info=None,
            concurrent_num=5,
            buffer_size=8192,  # in byte
            min_split_size=20480,  # in byte
            file_size=None):
        '''
        init docs
        '''
        self.file_url = file_url

        if file_save_dir == None:
            try:
                self.file_save_dir = commands.getoutput(
                    "xdg-user-dir DOWNLOAD")
            except:
                self.file_save_dir = "/tmp"
        else:
            self.file_save_dir = file_save_dir

        if file_save_name == None:
            self.file_save_name = os.path.split(file_url)[1]
        else:
            self.file_save_name = file_save_name

        self.file_save_path = os.path.join(self.file_save_dir,
                                           self.file_save_name)

        self.temp_save_dir = os.path.join(self.file_save_dir,
                                          "%s_tmp" % self.file_save_name)
        self.temp_save_path = os.path.join(self.temp_save_dir,
                                           self.file_save_name)

        self.concurrent_num = concurrent_num
        self.file_hash_info = file_hash_info
        self.buffer_size = buffer_size
        self.min_split_size = min_split_size
        self.fetch = self.get_fetch()

        self.update_greenlet_callbacks = []

        self.signal = EventRegister()

        self.stop_flag = False
        self.pause_flag = False
        self.file_size = file_size

        self.greenlet_dict = {}
        self.pool = Pool(self.concurrent_num)

        self.error_flag = False
        self.signal.register_event("error", lambda e: self.stop())