diff --git a/mirror-yt.py b/mirror-yt.py index 128e522..8feac33 100644 --- a/mirror-yt.py +++ b/mirror-yt.py @@ -60,7 +60,28 @@ def download(allow_unknown, base_dir, channel_file): '--write-thumbnail', url ] - subprocess.run(cmd, check=True, cwd=target_dir) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=target_dir) + prev_output = '' + while p.poll() is None: + try: + stdout_data, stderr_data = p.communicate(timeout=0.5) + except subprocess.TimeoutExpired as e: + if e.output: + print(e.output[len(prev_output):].decode('utf-8'), end='') + prev_output = e.output or '' + else: + print(stdout_data[len(prev_output):].decode('utf-8')) + + stdout_lines = stdout_data.decode('utf-8').splitlines() + if p.returncode == 0: + return + if p.returncode == 101: + pass + elif p.returncode == 1 and stdout_lines[-1] and 'Finished downloading playlist' in stdout_lines[-1]: + pass + else: + breakpoint() + raise subprocess.CalledProcessError(returncode=p.returncode, cmd=cmd) sleep_seconds = 5 print(f"Sleeping {sleep_seconds}s")