|
|
|
@ -62,13 +62,14 @@ from youtube_dl.utils import ( |
|
|
|
|
OnDemandPagedList, |
|
|
|
|
orderedSet, |
|
|
|
|
parse_age_limit, |
|
|
|
|
parse_bitrate, |
|
|
|
|
parse_duration, |
|
|
|
|
parse_filesize, |
|
|
|
|
parse_codecs, |
|
|
|
|
parse_count, |
|
|
|
|
parse_iso8601, |
|
|
|
|
parse_resolution, |
|
|
|
|
parse_bitrate, |
|
|
|
|
parse_qs, |
|
|
|
|
pkcs1pad, |
|
|
|
|
prepend_extension, |
|
|
|
|
read_batch_urls, |
|
|
|
@ -125,7 +126,6 @@ from youtube_dl.compat import ( |
|
|
|
|
compat_setenv, |
|
|
|
|
compat_str, |
|
|
|
|
compat_urlparse, |
|
|
|
|
compat_parse_qs, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -683,38 +683,36 @@ class TestUtil(unittest.TestCase): |
|
|
|
|
self.assertTrue(isinstance(data, bytes)) |
|
|
|
|
|
|
|
|
|
def test_update_url_query(self): |
|
|
|
|
def query_dict(url): |
|
|
|
|
return compat_parse_qs(compat_urlparse.urlparse(url).query) |
|
|
|
|
self.assertEqual(query_dict(update_url_query( |
|
|
|
|
self.assertEqual(parse_qs(update_url_query( |
|
|
|
|
'http://example.com/path', {'quality': ['HD'], 'format': ['mp4']})), |
|
|
|
|
query_dict('http://example.com/path?quality=HD&format=mp4')) |
|
|
|
|
self.assertEqual(query_dict(update_url_query( |
|
|
|
|
parse_qs('http://example.com/path?quality=HD&format=mp4')) |
|
|
|
|
self.assertEqual(parse_qs(update_url_query( |
|
|
|
|
'http://example.com/path', {'system': ['LINUX', 'WINDOWS']})), |
|
|
|
|
query_dict('http://example.com/path?system=LINUX&system=WINDOWS')) |
|
|
|
|
self.assertEqual(query_dict(update_url_query( |
|
|
|
|
parse_qs('http://example.com/path?system=LINUX&system=WINDOWS')) |
|
|
|
|
self.assertEqual(parse_qs(update_url_query( |
|
|
|
|
'http://example.com/path', {'fields': 'id,formats,subtitles'})), |
|
|
|
|
query_dict('http://example.com/path?fields=id,formats,subtitles')) |
|
|
|
|
self.assertEqual(query_dict(update_url_query( |
|
|
|
|
parse_qs('http://example.com/path?fields=id,formats,subtitles')) |
|
|
|
|
self.assertEqual(parse_qs(update_url_query( |
|
|
|
|
'http://example.com/path', {'fields': ('id,formats,subtitles', 'thumbnails')})), |
|
|
|
|
query_dict('http://example.com/path?fields=id,formats,subtitles&fields=thumbnails')) |
|
|
|
|
self.assertEqual(query_dict(update_url_query( |
|
|
|
|
parse_qs('http://example.com/path?fields=id,formats,subtitles&fields=thumbnails')) |
|
|
|
|
self.assertEqual(parse_qs(update_url_query( |
|
|
|
|
'http://example.com/path?manifest=f4m', {'manifest': []})), |
|
|
|
|
query_dict('http://example.com/path')) |
|
|
|
|
self.assertEqual(query_dict(update_url_query( |
|
|
|
|
parse_qs('http://example.com/path')) |
|
|
|
|
self.assertEqual(parse_qs(update_url_query( |
|
|
|
|
'http://example.com/path?system=LINUX&system=WINDOWS', {'system': 'LINUX'})), |
|
|
|
|
query_dict('http://example.com/path?system=LINUX')) |
|
|
|
|
self.assertEqual(query_dict(update_url_query( |
|
|
|
|
parse_qs('http://example.com/path?system=LINUX')) |
|
|
|
|
self.assertEqual(parse_qs(update_url_query( |
|
|
|
|
'http://example.com/path', {'fields': b'id,formats,subtitles'})), |
|
|
|
|
query_dict('http://example.com/path?fields=id,formats,subtitles')) |
|
|
|
|
self.assertEqual(query_dict(update_url_query( |
|
|
|
|
parse_qs('http://example.com/path?fields=id,formats,subtitles')) |
|
|
|
|
self.assertEqual(parse_qs(update_url_query( |
|
|
|
|
'http://example.com/path', {'width': 1080, 'height': 720})), |
|
|
|
|
query_dict('http://example.com/path?width=1080&height=720')) |
|
|
|
|
self.assertEqual(query_dict(update_url_query( |
|
|
|
|
parse_qs('http://example.com/path?width=1080&height=720')) |
|
|
|
|
self.assertEqual(parse_qs(update_url_query( |
|
|
|
|
'http://example.com/path', {'bitrate': 5020.43})), |
|
|
|
|
query_dict('http://example.com/path?bitrate=5020.43')) |
|
|
|
|
self.assertEqual(query_dict(update_url_query( |
|
|
|
|
parse_qs('http://example.com/path?bitrate=5020.43')) |
|
|
|
|
self.assertEqual(parse_qs(update_url_query( |
|
|
|
|
'http://example.com/path', {'test': '第二行тест'})), |
|
|
|
|
query_dict('http://example.com/path?test=%E7%AC%AC%E4%BA%8C%E8%A1%8C%D1%82%D0%B5%D1%81%D1%82')) |
|
|
|
|
parse_qs('http://example.com/path?test=%E7%AC%AC%E4%BA%8C%E8%A1%8C%D1%82%D0%B5%D1%81%D1%82')) |
|
|
|
|
|
|
|
|
|
def test_multipart_encode(self): |
|
|
|
|
self.assertEqual( |
|
|
|
|