[common] print user agent when dumping URLs (-u, --url)

Certain sites (known example: tudou.com) deny access to video URLs unless user
agent matches the one used when retrieving URLs from the API, effectively
rendering the URLs useless without the proper user agent. Therefore, exposing
the user agent in -u, --url output could come in handy at times.

This commit does not affect --json output.
This commit is contained in:
Zhiming Wang 2017-02-27 00:29:45 -05:00
parent d361b55de8
commit 37dbb4a3ce
No known key found for this signature in database
GPG Key ID: 5B58F95EC95965D8

View File

@ -751,12 +751,18 @@ def get_output_filename(urls, title, ext, output_dir, merge):
merged_ext = 'ts' merged_ext = 'ts'
return '%s.%s' % (title, merged_ext) return '%s.%s' % (title, merged_ext)
def print_user_agent(faker=False):
urllib_default_user_agent = 'Python-urllib/%d.%d' % sys.version_info[:2]
user_agent = fake_headers['User-Agent'] if faker else urllib_default_user_agent
print('User Agent: %s' % user_agent)
def download_urls(urls, title, ext, total_size, output_dir='.', refer=None, merge=True, faker=False, headers = {}, **kwargs): def download_urls(urls, title, ext, total_size, output_dir='.', refer=None, merge=True, faker=False, headers = {}, **kwargs):
assert urls assert urls
if json_output: if json_output:
json_output_.download_urls(urls=urls, title=title, ext=ext, total_size=total_size, refer=refer) json_output_.download_urls(urls=urls, title=title, ext=ext, total_size=total_size, refer=refer)
return return
if dry_run: if dry_run:
print_user_agent(faker=faker)
print('Real URLs:\n%s' % '\n'.join(urls)) print('Real URLs:\n%s' % '\n'.join(urls))
return return
@ -873,6 +879,7 @@ def download_urls(urls, title, ext, total_size, output_dir='.', refer=None, merg
def download_urls_chunked(urls, title, ext, total_size, output_dir='.', refer=None, merge=True, faker=False, headers = {}, **kwargs): def download_urls_chunked(urls, title, ext, total_size, output_dir='.', refer=None, merge=True, faker=False, headers = {}, **kwargs):
assert urls assert urls
if dry_run: if dry_run:
print_user_agent(faker=faker)
print('Real URLs:\n%s\n' % urls) print('Real URLs:\n%s\n' % urls)
return return
@ -952,6 +959,7 @@ def download_urls_chunked(urls, title, ext, total_size, output_dir='.', refer=No
def download_rtmp_url(url,title, ext,params={}, total_size=0, output_dir='.', refer=None, merge=True, faker=False): def download_rtmp_url(url,title, ext,params={}, total_size=0, output_dir='.', refer=None, merge=True, faker=False):
assert url assert url
if dry_run: if dry_run:
print_user_agent(faker=faker)
print('Real URL:\n%s\n' % [url]) print('Real URL:\n%s\n' % [url])
if params.get("-y",False): #None or unset ->False if params.get("-y",False): #None or unset ->False
print('Real Playpath:\n%s\n' % [params.get("-y")]) print('Real Playpath:\n%s\n' % [params.get("-y")])
@ -969,6 +977,7 @@ def download_rtmp_url(url,title, ext,params={}, total_size=0, output_dir='.', re
def download_url_ffmpeg(url,title, ext,params={}, total_size=0, output_dir='.', refer=None, merge=True, faker=False): def download_url_ffmpeg(url,title, ext,params={}, total_size=0, output_dir='.', refer=None, merge=True, faker=False):
assert url assert url
if dry_run: if dry_run:
print_user_agent(faker=faker)
print('Real URL:\n%s\n' % [url]) print('Real URL:\n%s\n' % [url])
if params.get("-y",False): #None or unset ->False if params.get("-y",False): #None or unset ->False
print('Real Playpath:\n%s\n' % [params.get("-y")]) print('Real Playpath:\n%s\n' % [params.get("-y")])