diff --git a/mvw-dl.py b/mvw-dl.py index 1e53aff..03a1704 100644 --- a/mvw-dl.py +++ b/mvw-dl.py @@ -551,7 +551,6 @@ def copy_url( config_obj: configparser.ConfigParser(), show: type_def.mvw_json_response.Show, video_metadata: dict, - total_content_length: int, state_file_abs_path: str, show_name: str, job_uuid: str, @@ -667,6 +666,7 @@ def download_media( global download_start_time global download_last_update_time + global total_content_length dl_threads = config_obj.getint(section_name, "dl_threads") state_file_abs_path = get_state_file_abs_path(section_name, config_obj) @@ -694,27 +694,35 @@ def download_media( download_start_time = download_last_update_time update_interval = config_obj.getint(section_name, "dl_progress_update_interval") log.debug(f"""Will provide updates every {update_interval} {p.plural("second", update_interval)}""") - with lock: - state_file_none_or_valid_json(state_file_abs_path) - for result in json_obj.result.results.copy(): - show_name = f"{result.topic} - {result.title}" - if not is_already_downloaded(result, state_file_abs_path, show_name): - job_uuid = str(uuid.uuid4()) - shorthand_uuid = f"[{job_uuid[:2]}..{job_uuid[-2:]}]" - log.debug(f"""Queuing "{show_name}" for download ...""") - pool.submit( - copy_url, - section_name, - config_obj, - result, - video_metadata[result.id], - video_metadata["total_content_length"], - state_file_abs_path, - show_name, - job_uuid, - shorthand_uuid, - tmp_dir, - dest_dir) + for result in json_obj.result.results.copy(): + show_name = f"{result.topic} - {result.title}" + future = None + if not is_already_downloaded(result, json_state, show_name): + max_quality_url = get_max_quality_url(result) + content_length = get_content_length(max_quality_url) + video_metadata[result.id] = {"url": max_quality_url, "content_length": content_length} + total_content_length += video_metadata[result.id]["content_length"] + log.debug(f"Total download size upped to " + f"{humanize.naturalsize(total_content_length, binary=True)}") + + job_uuid = str(uuid.uuid4()) + shorthand_uuid = f"[{job_uuid[:2]}..{job_uuid[-2:]}]" + log.debug(f"{shorthand_uuid} Job UUID {job_uuid} generated, shorthand is {shorthand_uuid}") + log.debug(f"""{shorthand_uuid} Queuing "{show_name}" for download ...""") + future = pool.submit( + copy_url, + section_name, + config_obj, + result, + video_metadata[result.id], + state_file_abs_path, + show_name, + job_uuid, + shorthand_uuid, + tmp_dir, + dest_dir) + if future is not None: + future.result() if __name__ == '__main__':