8 # Allow direct execution
9 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
11 import youtube_dl.FileDownloader
12 import youtube_dl.InfoExtractors
13 from youtube_dl.utils import *
15 PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "parameters.json")
17 # General configuration (from __init__, not very elegant...)
18 jar = compat_cookiejar.CookieJar()
19 cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar)
20 proxy_handler = compat_urllib_request.ProxyHandler()
21 opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler())
22 compat_urllib_request.install_opener(opener)
23 socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words)
25 class FileDownloader(youtube_dl.FileDownloader):
26 def __init__(self, *args, **kwargs):
27 youtube_dl.FileDownloader.__init__(self, *args, **kwargs)
28 self.to_stderr = self.to_screen
30 with io.open(PARAMETERS_FILE, encoding='utf-8') as pf:
31 params = json.load(pf)
32 params['writeinfojson'] = True
33 params['skip_download'] = True
35 TEST_ID = 'BaW_jenozKc'
36 INFO_JSON_FILE = TEST_ID + '.mp4.info.json'
38 class TestInfoJSON(unittest.TestCase):
43 def test_info_json(self):
44 ie = youtube_dl.InfoExtractors.YoutubeIE()
45 fd = FileDownloader(params)
46 fd.add_info_extractor(ie)
47 fd.download([TEST_ID])
48 self.assertTrue(os.path.exists(INFO_JSON_FILE))
51 if os.path.exists(INFO_JSON_FILE):
52 os.remove(INFO_JSON_FILE)
54 if __name__ == '__main__':