diff --git a/test/test_youtube_lists.py b/test/test_youtube_lists.py index f9c344da1..e352e5ab9 100644 --- a/test/test_youtube_lists.py +++ b/test/test_youtube_lists.py @@ -3,6 +3,7 @@ import sys import unittest import socket +import json # Allow direct execution import os @@ -11,6 +12,10 @@ from youtube_dl.InfoExtractors import YoutubeUserIE,YoutubePlaylistIE from youtube_dl.utils import * +PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "parameters.json") +with io.open(PARAMETERS_FILE, encoding='utf-8') as pf: + parameters = json.load(pf) + # General configuration (from __init__, not very elegant...) jar = compat_cookiejar.CookieJar() cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar) @@ -22,7 +27,7 @@ class FakeDownloader(object): def __init__(self): self.result = [] - self.params = {} + self.params = parameters def to_screen(self, s): print(s) def trouble(self, s): diff --git a/test/test_youtube_subtitles.py b/test/test_youtube_subtitles.py new file mode 100644 index 000000000..64a391d14 --- /dev/null +++ b/test/test_youtube_subtitles.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python + +import sys +import unittest +import socket +import json +import io +import hashlib + +# Allow direct execution +import os +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from youtube_dl.InfoExtractors import YoutubeIE +from youtube_dl.utils import * + +PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "parameters.json") +with io.open(PARAMETERS_FILE, encoding='utf-8') as pf: + parameters = json.load(pf) + +# General configuration (from __init__, not very elegant...) +jar = compat_cookiejar.CookieJar() +cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar) +proxy_handler = compat_urllib_request.ProxyHandler() +opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler()) +compat_urllib_request.install_opener(opener) +socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words) + +class FakeDownloader(object): + def __init__(self): + self.result = [] + self.params = parameters + def to_screen(self, s): + print(s) + def trouble(self, s): + raise Exception(s) + def download(self, x): + self.result.append(x) + +md5 = lambda s: hashlib.md5(s.encode('utf-8')).hexdigest() + +class TestYoutubeSubtitles(unittest.TestCase): + def test_youtube_subtitles(self): + DL = FakeDownloader() + DL.params['writesubtitles'] = True + IE = YoutubeIE(DL) + info_dict = IE.extract('QRS8MkLhQmM') + self.assertEqual(md5(info_dict[0]['subtitles']), 'c3228550d59116f3c29fba370b55d033') + + def test_youtube_subtitles_it(self): + DL = FakeDownloader() + DL.params['writesubtitles'] = True + DL.params['subtitleslang'] = 'it' + IE = YoutubeIE(DL) + info_dict = IE.extract('QRS8MkLhQmM') + self.assertEqual(md5(info_dict[0]['subtitles']), '132a88a0daf8e1520f393eb58f1f646a') + +if __name__ == '__main__': + unittest.main()