test write_info_json
[youtube-dl] / test / test_write_info_json.py
1 #!/usr/bin/env python
2
3 import os
4 import socket
5 import sys
6 import unittest
7
8 # Allow direct execution
9 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
10
11 import youtube_dl.FileDownloader
12 import youtube_dl.InfoExtractors
13 from youtube_dl.utils import *
14
15 PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "parameters.json")
16
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)
24
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
29
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
34
35 TEST_ID = 'BaW_jenozKc'
36 INFO_JSON_FILE = TEST_ID + '.mp4.info.json'
37
38 class TestInfoJSON(unittest.TestCase):
39     def setUp(self):
40         # Clear old files
41         self.tearDown()
42
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))
49
50     def tearDown(self):
51         if os.path.exists(INFO_JSON_FILE):
52             os.remove(INFO_JSON_FILE)
53
54 if __name__ == '__main__':
55     unittest.main()