aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--yt_dlp/__init__.py21
-rw-r--r--yt_dlp/update.py7
2 files changed, 17 insertions, 11 deletions
diff --git a/yt_dlp/__init__.py b/yt_dlp/__init__.py
index 47ee3cc02..8806106d3 100644
--- a/yt_dlp/__init__.py
+++ b/yt_dlp/__init__.py
@@ -13,6 +13,7 @@ import optparse
import os
import re
import sys
+import traceback
from .compat import compat_shlex_quote
from .cookies import SUPPORTED_BROWSERS, SUPPORTED_KEYRINGS
@@ -937,14 +938,18 @@ def _real_main(argv=None):
if opts.rm_cachedir:
ydl.cache.remove()
- updater = Updater(ydl, opts.update_self if isinstance(opts.update_self, str) else None)
- if opts.update_self and updater.update() and actual_use:
- if updater.cmd:
- return updater.restart()
- # This code is reachable only for zip variant in py < 3.10
- # It makes sense to exit here, but the old behavior is to continue
- ydl.report_warning('Restart yt-dlp to use the updated version')
- # return 100, 'ERROR: The program must exit for the update to complete'
+ try:
+ updater = Updater(ydl, opts.update_self if isinstance(opts.update_self, str) else None)
+ if opts.update_self and updater.update() and actual_use:
+ if updater.cmd:
+ return updater.restart()
+ # This code is reachable only for zip variant in py < 3.10
+ # It makes sense to exit here, but the old behavior is to continue
+ ydl.report_warning('Restart yt-dlp to use the updated version')
+ # return 100, 'ERROR: The program must exit for the update to complete'
+ except Exception:
+ traceback.print_exc()
+ ydl._download_retcode = 100
if not actual_use:
if pre_process:
diff --git a/yt_dlp/update.py b/yt_dlp/update.py
index 5a752d716..7914de832 100644
--- a/yt_dlp/update.py
+++ b/yt_dlp/update.py
@@ -16,6 +16,7 @@ from .utils import (
Popen,
cached_method,
deprecation_warning,
+ network_exceptions,
remove_end,
remove_start,
sanitized_Request,
@@ -258,8 +259,8 @@ class Updater:
self.ydl.to_screen((
f'Available version: {self._label(self.target_channel, self.latest_version)}, ' if self.target_tag == 'latest' else ''
) + f'Current version: {self._label(CHANNEL, self.current_version)}')
- except Exception:
- return self._report_network_error('obtain version info', delim='; Please try again later or')
+ except network_exceptions as e:
+ return self._report_network_error(f'obtain version info ({e})', delim='; Please try again later or')
if not is_non_updateable():
self.ydl.to_screen(f'Current Build Hash: {_sha256_file(self.filename)}')
@@ -303,7 +304,7 @@ class Updater:
try:
newcontent = self._download(self.release_name, self._tag)
- except Exception as e:
+ except network_exceptions as e:
if isinstance(e, urllib.error.HTTPError) and e.code == 404:
return self._report_error(
f'The requested tag {self._label(self.target_channel, self.target_tag)} does not exist', True)