[YoutubeDL] Add new --call-home option for debugging
authorPhilipp Hagemeister <phihag@phihag.de>
Sat, 10 Jan 2015 20:02:27 +0000 (21:02 +0100)
committerPhilipp Hagemeister <phihag@phihag.de>
Sat, 10 Jan 2015 20:02:27 +0000 (21:02 +0100)
youtube_dl/YoutubeDL.py
youtube_dl/__init__.py
youtube_dl/options.py

index fd2c0e04406cd5babc5e620e1bdb2204fb55e04b..84cea472c937e2fa5ad878ab98eb20763b490ded 100755 (executable)
@@ -58,6 +58,7 @@ from .utils import (
     takewhile_inclusive,
     UnavailableVideoError,
     url_basename,
+    version_tuple,
     write_json_file,
     write_string,
     YoutubeDLHandler,
@@ -212,6 +213,8 @@ class YoutubeDL(object):
                        - "detect_or_warn": check whether we can do anything
                                            about it, warn otherwise
     source_address:    (Experimental) Client-side IP address to bind to.
+    call_home:         (Experimental) Boolean, true iff we are allowed to
+                       contact the youtube-dl servers for debugging.
 
 
     The following parameters are not used by YoutubeDL itself, they are used by
@@ -1464,6 +1467,17 @@ class YoutubeDL(object):
                 proxy_map.update(handler.proxies)
         self._write_string('[debug] Proxy map: ' + compat_str(proxy_map) + '\n')
 
+        if self.params.get('call_home', False):
+            ipaddr = self.urlopen('https://yt-dl.org/ip').read().decode('utf-8')
+            self._write_string('[debug] Public IP address: %s\n' % ipaddr)
+            latest_version = self.urlopen(
+                'https://yt-dl.org/latest/version').read().decode('utf-8')
+            if version_tuple(latest_version) > version_tuple(__version__):
+                self.report_warning(
+                    'You are using an outdated version (newest version: %s)! '
+                    'See https://yt-dl.org/update if you need help updating.' %
+                    latest_version)
+
     def _setup_opener(self):
         timeout_val = self.params.get('socket_timeout')
         self._socket_timeout = 600 if timeout_val is None else float(timeout_val)
index d74a304b7b42063e9332c42acfaea92c3af472b0..ddf6260d1e9a4a11fd0140ccbc8d6a4c324df78b 100644 (file)
@@ -328,6 +328,7 @@ def _real_main(argv=None):
         'postprocessors': postprocessors,
         'fixup': opts.fixup,
         'source_address': opts.source_address,
+        'call_home': opts.call_home,
     }
 
     with YoutubeDL(ydl_opts) as ydl:
index e25466c39ccaff692668ab04f7e6509351225037..0176bae75b516e076f9924b21568403eea2fb933 100644 (file)
@@ -505,6 +505,10 @@ def parseOpts(overrideArguments=None):
         '--print-traffic',
         dest='debug_printtraffic', action='store_true', default=False,
         help='Display sent and read HTTP traffic')
+    verbosity.add_option(
+        '-C', '--call-home',
+        dest='call_home', action='store_true', default=False,
+        help='Contact the youtube-dl server for debugging. (Experimental)')
 
     filesystem = optparse.OptionGroup(parser, 'Filesystem Options')
     filesystem.add_option(