diff options
27 files changed, 33 insertions, 0 deletions
diff --git a/devscripts/bash-completion.py b/devscripts/bash-completion.py index ce68f26f9..3d1391334 100755 --- a/devscripts/bash-completion.py +++ b/devscripts/bash-completion.py @@ -25,5 +25,6 @@ def build_completion(opt_parser):          filled_template = template.replace("{{flags}}", " ".join(opts_flag))          f.write(filled_template) +  parser = youtube_dl.parseOpts()[0]  build_completion(parser) diff --git a/devscripts/fish-completion.py b/devscripts/fish-completion.py index 41629d87d..51d19dd33 100755 --- a/devscripts/fish-completion.py +++ b/devscripts/fish-completion.py @@ -44,5 +44,6 @@ def build_completion(opt_parser):      with open(FISH_COMPLETION_FILE, 'w') as f:          f.write(filled_template) +  parser = youtube_dl.parseOpts()[0]  build_completion(parser) diff --git a/devscripts/generate_aes_testdata.py b/devscripts/generate_aes_testdata.py index 2e389fc8e..e3df42cc2 100644 --- a/devscripts/generate_aes_testdata.py +++ b/devscripts/generate_aes_testdata.py @@ -23,6 +23,7 @@ def openssl_encode(algo, key, iv):      out, _ = prog.communicate(secret_msg)      return out +  iv = key = [0x20, 0x15] + 14 * [0]  r = openssl_encode('aes-128-cbc', key, iv) diff --git a/devscripts/gh-pages/update-sites.py b/devscripts/gh-pages/update-sites.py index 503c1372f..531c93c70 100755 --- a/devscripts/gh-pages/update-sites.py +++ b/devscripts/gh-pages/update-sites.py @@ -32,5 +32,6 @@ def main():      with open('supportedsites.html', 'w', encoding='utf-8') as sitesf:          sitesf.write(template) +  if __name__ == '__main__':      main() diff --git a/devscripts/make_contributing.py b/devscripts/make_contributing.py index 5e454a429..226d1a5d6 100755 --- a/devscripts/make_contributing.py +++ b/devscripts/make_contributing.py @@ -28,5 +28,6 @@ def main():      with io.open(outfile, 'w', encoding='utf-8') as outf:          outf.write(out) +  if __name__ == '__main__':      main() diff --git a/devscripts/make_lazy_extractors.py b/devscripts/make_lazy_extractors.py index 9a79c2bc5..19114d30d 100644 --- a/devscripts/make_lazy_extractors.py +++ b/devscripts/make_lazy_extractors.py @@ -59,6 +59,7 @@ def build_lazy_ie(ie, name):          s += make_valid_template.format(valid_url=ie._make_valid_url())      return s +  # find the correct sorting and add the required base classes so that sublcasses  # can be correctly created  classes = _ALL_CLASSES[:-1] diff --git a/devscripts/make_supportedsites.py b/devscripts/make_supportedsites.py index 8cb4a4638..764795bc5 100644 --- a/devscripts/make_supportedsites.py +++ b/devscripts/make_supportedsites.py @@ -41,5 +41,6 @@ def main():      with io.open(outfile, 'w', encoding='utf-8') as outf:          outf.write(out) +  if __name__ == '__main__':      main() diff --git a/devscripts/prepare_manpage.py b/devscripts/prepare_manpage.py index ce548739f..f9fe63f1f 100644 --- a/devscripts/prepare_manpage.py +++ b/devscripts/prepare_manpage.py @@ -74,5 +74,6 @@ def filter_options(readme):      return ret +  if __name__ == '__main__':      main() diff --git a/devscripts/zsh-completion.py b/devscripts/zsh-completion.py index 04728e8e2..60aaf76cc 100755 --- a/devscripts/zsh-completion.py +++ b/devscripts/zsh-completion.py @@ -44,5 +44,6 @@ def build_completion(opt_parser):      with open(ZSH_COMPLETION_FILE, "w") as f:          f.write(template) +  parser = youtube_dl.parseOpts()[0]  build_completion(parser) diff --git a/test/test_InfoExtractor.py b/test/test_InfoExtractor.py index a98305c74..437c7270e 100644 --- a/test/test_InfoExtractor.py +++ b/test/test_InfoExtractor.py @@ -84,5 +84,6 @@ class TestInfoExtractor(unittest.TestCase):          self.assertRaises(ExtractorError, self.ie._download_json, uri, None)          self.assertEqual(self.ie._download_json(uri, None, fatal=False), None) +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_aes.py b/test/test_aes.py index 315a3f5ae..54078a66d 100644 --- a/test/test_aes.py +++ b/test/test_aes.py @@ -51,5 +51,6 @@ class TestAES(unittest.TestCase):          decrypted = (aes_decrypt_text(encrypted, password, 32))          self.assertEqual(decrypted, self.secret_msg) +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_download.py b/test/test_download.py index a3f1c0644..463952989 100644 --- a/test/test_download.py +++ b/test/test_download.py @@ -60,6 +60,7 @@ def _file_md5(fn):      with open(fn, 'rb') as f:          return hashlib.md5(f.read()).hexdigest() +  defs = gettestcases() @@ -217,6 +218,7 @@ def generator(test_case):      return test_template +  # And add them to TestDownload  for n, test_case in enumerate(defs):      test_method = generator(test_case) diff --git a/test/test_execution.py b/test/test_execution.py index 620db080e..11661bb68 100644 --- a/test/test_execution.py +++ b/test/test_execution.py @@ -39,5 +39,6 @@ class TestExecution(unittest.TestCase):          _, stderr = p.communicate()          self.assertFalse(stderr) +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_http.py b/test/test_http.py index bb0a098e4..7a7a3510f 100644 --- a/test/test_http.py +++ b/test/test_http.py @@ -169,5 +169,6 @@ class TestProxy(unittest.TestCase):          # b'xn--fiq228c' is '中文'.encode('idna')          self.assertEqual(response, 'normal: http://xn--fiq228c.tw/') +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_iqiyi_sdk_interpreter.py b/test/test_iqiyi_sdk_interpreter.py index 9d95cb606..789059dbe 100644 --- a/test/test_iqiyi_sdk_interpreter.py +++ b/test/test_iqiyi_sdk_interpreter.py @@ -43,5 +43,6 @@ class TestIqiyiSDKInterpreter(unittest.TestCase):          ie._login()          self.assertTrue('unable to log in:' in logger.messages[0]) +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_jsinterp.py b/test/test_jsinterp.py index a9abae5f5..c24b8ca74 100644 --- a/test/test_jsinterp.py +++ b/test/test_jsinterp.py @@ -112,5 +112,6 @@ class TestJSInterpreter(unittest.TestCase):          ''')          self.assertEqual(jsi.call_function('z'), 5) +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_utils.py b/test/test_utils.py index cb75ca53e..2e3cd0179 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -1075,5 +1075,6 @@ The first line          self.assertEqual(get_element_by_class('foo', html), 'nice')          self.assertEqual(get_element_by_class('no-such-class', html), None) +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_verbose_output.py b/test/test_verbose_output.py index 96a66f7a0..c1465fe8c 100644 --- a/test/test_verbose_output.py +++ b/test/test_verbose_output.py @@ -66,5 +66,6 @@ class TestVerboseOutput(unittest.TestCase):          self.assertTrue(b'-p' in serr)          self.assertTrue(b'secret' not in serr) +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_write_annotations.py b/test/test_write_annotations.py index 8de08f2d6..41abdfe3b 100644 --- a/test/test_write_annotations.py +++ b/test/test_write_annotations.py @@ -24,6 +24,7 @@ class YoutubeDL(youtube_dl.YoutubeDL):          super(YoutubeDL, self).__init__(*args, **kwargs)          self.to_stderr = self.to_screen +  params = get_params({      'writeannotations': True,      'skip_download': True, @@ -74,5 +75,6 @@ class TestAnnotations(unittest.TestCase):      def tearDown(self):          try_rm(ANNOTATIONS_FILE) +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_youtube_lists.py b/test/test_youtube_lists.py index af1c45421..7a33dbf88 100644 --- a/test/test_youtube_lists.py +++ b/test/test_youtube_lists.py @@ -66,5 +66,6 @@ class TestYoutubeLists(unittest.TestCase):          for entry in result['entries']:              self.assertTrue(entry.get('title')) +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_youtube_signature.py b/test/test_youtube_signature.py index 060864434..f0c370eee 100644 --- a/test/test_youtube_signature.py +++ b/test/test_youtube_signature.py @@ -114,6 +114,7 @@ def make_tfunc(url, stype, sig_input, expected_sig):      test_func.__name__ = str('test_signature_' + stype + '_' + test_id)      setattr(TestSignature, test_func.__name__, test_func) +  for test_spec in _TESTS:      make_tfunc(*test_spec) diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index af99cf1c0..6850d95e1 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -449,4 +449,5 @@ def main(argv=None):      except KeyboardInterrupt:          sys.exit('\nERROR: Interrupted by user') +  __all__ = ['main', 'YoutubeDL', 'gen_extractors', 'list_extractors'] diff --git a/youtube_dl/aes.py b/youtube_dl/aes.py index a01c367de..b8ff45481 100644 --- a/youtube_dl/aes.py +++ b/youtube_dl/aes.py @@ -174,6 +174,7 @@ def aes_decrypt_text(data, password, key_size_bytes):      return plaintext +  RCON = (0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36)  SBOX = (0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76,          0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, @@ -328,4 +329,5 @@ def inc(data):              break      return data +  __all__ = ['aes_encrypt', 'key_expansion', 'aes_ctr_decrypt', 'aes_cbc_decrypt', 'aes_decrypt_text'] diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py index b8aaf5a46..83ee7e257 100644 --- a/youtube_dl/compat.py +++ b/youtube_dl/compat.py @@ -2491,6 +2491,7 @@ class _TreeBuilder(etree.TreeBuilder):      def doctype(self, name, pubid, system):          pass +  if sys.version_info[0] >= 3:      def compat_etree_fromstring(text):          return etree.XML(text, parser=etree.XMLParser(target=_TreeBuilder())) @@ -2787,6 +2788,7 @@ def workaround_optparse_bug9161():              return real_add_option(self, *bargs, **bkwargs)          optparse.OptionGroup.add_option = _compat_add_option +  if hasattr(shutil, 'get_terminal_size'):  # Python >= 3.3      compat_get_terminal_size = shutil.get_terminal_size  else: diff --git a/youtube_dl/downloader/external.py b/youtube_dl/downloader/external.py index 0aeae3b8f..5d3e5d8d3 100644 --- a/youtube_dl/downloader/external.py +++ b/youtube_dl/downloader/external.py @@ -293,6 +293,7 @@ class FFmpegFD(ExternalFD):  class AVconvFD(FFmpegFD):      pass +  _BY_NAME = dict(      (klass.get_basename(), klass)      for name, klass in globals().items() diff --git a/youtube_dl/socks.py b/youtube_dl/socks.py index 104807242..63d19b3a5 100644 --- a/youtube_dl/socks.py +++ b/youtube_dl/socks.py @@ -103,6 +103,7 @@ class ProxyType(object):      SOCKS4A = 1      SOCKS5 = 2 +  Proxy = collections.namedtuple('Proxy', (      'type', 'host', 'port', 'username', 'password', 'remote_dns')) diff --git a/youtube_dl/swfinterp.py b/youtube_dl/swfinterp.py index 7cf490aa4..0c7158575 100644 --- a/youtube_dl/swfinterp.py +++ b/youtube_dl/swfinterp.py @@ -115,6 +115,8 @@ def _u30(reader):      res = _read_int(reader)      assert res & 0xf0000000 == 0      return res + +  _u32 = _read_int @@ -176,6 +178,7 @@ class _Undefined(object):          return 'undefined'      __repr__ = __str__ +  undefined = _Undefined()  | 
