fix progress issues
This commit is contained in:
parent
5379207af6
commit
ff7b7205d1
|
@ -10,6 +10,7 @@ from pathlib import Path
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
# import yt_dlp as ydl_ydl
|
||||||
from tqdm.auto import tqdm
|
from tqdm.auto import tqdm
|
||||||
from unidecode import unidecode
|
from unidecode import unidecode
|
||||||
|
|
||||||
|
@ -64,13 +65,20 @@ def download_video(args) -> dict:
|
||||||
# time.sleep(random.randint(1, 20) / 1000)
|
# time.sleep(random.randint(1, 20) / 1000)
|
||||||
|
|
||||||
def progress_hook(d):
|
def progress_hook(d):
|
||||||
# downloaded_bytes and total_bytes can be None if the download hasn't started yet.
|
# Variables can be None if the download hasn't started yet.
|
||||||
if d['status'] == 'downloading':
|
if d['status'] == 'downloading':
|
||||||
if d.get('downloaded_bytes') and d.get('total_bytes'):
|
total = None
|
||||||
|
if d.get('downloaded_bytes'):
|
||||||
|
# We want total_bytes but it may not exist so total_bytes_estimate is good too
|
||||||
|
if d.get('total_bytes'):
|
||||||
|
total = d.get('total_bytes')
|
||||||
|
elif d.get('total_bytes_estimate'):
|
||||||
|
total = d.get('total_bytes_estimate')
|
||||||
|
|
||||||
|
if total:
|
||||||
downloaded_bytes = int(d['downloaded_bytes'])
|
downloaded_bytes = int(d['downloaded_bytes'])
|
||||||
total_bytes = int(d['total_bytes'])
|
if total > 0:
|
||||||
if total_bytes > 0:
|
percent = (downloaded_bytes / total) * 100
|
||||||
percent = (downloaded_bytes / total_bytes) * 100
|
|
||||||
bar.update(int(np.round(percent - bar.n))) # If the progress bar doesn't end at 100% then round to 1 decimal place
|
bar.update(int(np.round(percent - bar.n))) # If the progress bar doesn't end at 100% then round to 1 decimal place
|
||||||
bar.set_postfix({
|
bar.set_postfix({
|
||||||
'speed': d['_speed_str'],
|
'speed': d['_speed_str'],
|
||||||
|
@ -121,7 +129,7 @@ def download_video(args) -> dict:
|
||||||
|
|
||||||
# We created a new dict
|
# We created a new dict
|
||||||
video['title'] = unidecode(video['title'])
|
video['title'] = unidecode(video['title'])
|
||||||
video['uploader'] = unidecode(video['uploader']) # now the additional info is present since we fetched it
|
video['uploader'] = unidecode(video['uploader']) # now the additional info is present since we fetched it
|
||||||
|
|
||||||
video_filename = remove_special_chars_linux(ydl.get_output_templ(video_id=video['id'], title=video['title'], uploader=video['uploader'], uploader_id=video['uploader_id'], include_ext=False), special_chars=['/'])
|
video_filename = remove_special_chars_linux(ydl.get_output_templ(video_id=video['id'], title=video['title'], uploader=video['uploader'], uploader_id=video['uploader_id'], include_ext=False), special_chars=['/'])
|
||||||
|
|
||||||
|
@ -148,6 +156,8 @@ def download_video(args) -> dict:
|
||||||
# base_path = kwargs['output_dir'] / video['id']
|
# base_path = kwargs['output_dir'] / video['id']
|
||||||
ylogger = ytdl_logger(setup_file_logger(video['id'], base_path + '.log'))
|
ylogger = ytdl_logger(setup_file_logger(video['id'], base_path + '.log'))
|
||||||
kwargs['ydl_opts']['logger'] = ylogger
|
kwargs['ydl_opts']['logger'] = ylogger
|
||||||
|
# with ydl_ydl.YoutubeDL(kwargs['ydl_opts']) as y:
|
||||||
|
# error_code = y.download(video['url'])
|
||||||
yt_dlp = ydl.YDL(kwargs['ydl_opts']) # recreate the object with the correct logging path
|
yt_dlp = ydl.YDL(kwargs['ydl_opts']) # recreate the object with the correct logging path
|
||||||
error_code = yt_dlp(video['url']) # Do the download
|
error_code = yt_dlp(video['url']) # Do the download
|
||||||
if not error_code:
|
if not error_code:
|
||||||
|
|
Reference in New Issue