mirror of
https://github.com/soimort/you-get.git
synced 2025-02-09 11:42:30 +03:00
Merge branch 'develop' of https://github.com/LittleRed-YXC/you-get into LittleRed-YXC-develop
This commit is contained in:
commit
6346a68cd2
@ -7,6 +7,7 @@ from ..common import (
|
|||||||
url_size,
|
url_size,
|
||||||
print_info,
|
print_info,
|
||||||
get_content,
|
get_content,
|
||||||
|
fake_headers,
|
||||||
download_urls,
|
download_urls,
|
||||||
playlist_not_supported,
|
playlist_not_supported,
|
||||||
)
|
)
|
||||||
@ -16,13 +17,19 @@ __all__ = ['douyin_download_by_url']
|
|||||||
|
|
||||||
|
|
||||||
def douyin_download_by_url(url, **kwargs):
|
def douyin_download_by_url(url, **kwargs):
|
||||||
page_content = get_content(url)
|
page_content = get_content(url, headers=fake_headers)
|
||||||
match_rule = re.compile(r'var data = \[(.*?)\];')
|
match_rule = re.compile(r'var data = \[(.*?)\];')
|
||||||
video_info = json.loads(match_rule.findall(page_content)[0])
|
video_info = json.loads(match_rule.findall(page_content)[0])
|
||||||
video_url = video_info['video']['play_addr']['url_list'][0]
|
video_url = video_info['video']['play_addr']['url_list'][0]
|
||||||
title = video_info['cha_list'][0]['cha_name']
|
# fix: https://www.douyin.com/share/video/6553248251821165832
|
||||||
|
# if there is no title, use desc
|
||||||
|
cha_list = video_info['cha_list']
|
||||||
|
if cha_list:
|
||||||
|
title = cha_list[0]['cha_name']
|
||||||
|
else:
|
||||||
|
title = video_info['desc']
|
||||||
video_format = 'mp4'
|
video_format = 'mp4'
|
||||||
size = url_size(video_url)
|
size = url_size(video_url, faker=True)
|
||||||
print_info(
|
print_info(
|
||||||
site_info='douyin.com', title=title,
|
site_info='douyin.com', title=title,
|
||||||
type=video_format, size=size
|
type=video_format, size=size
|
||||||
@ -30,6 +37,7 @@ def douyin_download_by_url(url, **kwargs):
|
|||||||
if not kwargs['info_only']:
|
if not kwargs['info_only']:
|
||||||
download_urls(
|
download_urls(
|
||||||
urls=[video_url], title=title, ext=video_format, total_size=size,
|
urls=[video_url], title=title, ext=video_format, total_size=size,
|
||||||
|
faker=True,
|
||||||
**kwargs
|
**kwargs
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -18,11 +18,14 @@ def qq_download_by_vid(vid, title, output_dir='.', merge=True, info_only=False):
|
|||||||
host = video_json['vl']['vi'][0]['ul']['ui'][0]['url']
|
host = video_json['vl']['vi'][0]['ul']['ui'][0]['url']
|
||||||
streams = video_json['fl']['fi']
|
streams = video_json['fl']['fi']
|
||||||
seg_cnt = video_json['vl']['vi'][0]['cl']['fc']
|
seg_cnt = video_json['vl']['vi'][0]['cl']['fc']
|
||||||
|
filename = video_json['vl']['vi'][0]['fn']
|
||||||
if seg_cnt == 0:
|
if seg_cnt == 0:
|
||||||
seg_cnt = 1
|
seg_cnt = 1
|
||||||
|
else:
|
||||||
|
fn_pre, magic_str, video_type = filename.split('.')
|
||||||
|
|
||||||
best_quality = streams[-1]['name']
|
best_quality = streams[-1]['name']
|
||||||
part_format_id = streams[-1]['id']
|
#part_format_id = streams[-1]['id']
|
||||||
|
|
||||||
part_urls= []
|
part_urls= []
|
||||||
total_size = 0
|
total_size = 0
|
||||||
@ -31,7 +34,17 @@ def qq_download_by_vid(vid, title, output_dir='.', merge=True, info_only=False):
|
|||||||
# filename = fn_pre + '.mp4'
|
# filename = fn_pre + '.mp4'
|
||||||
#else:
|
#else:
|
||||||
# filename = fn_pre + '.p' + str(part_format_id % 10000) + '.' + str(part) + '.mp4'
|
# filename = fn_pre + '.p' + str(part_format_id % 10000) + '.' + str(part) + '.mp4'
|
||||||
filename = fn_pre + '.p' + str(part_format_id % 10000) + '.' + str(part) + '.mp4'
|
#filename = fn_pre + '.p' + str(part_format_id % 10000) + '.' + str(part) + '.mp4'
|
||||||
|
|
||||||
|
# fix some error cases("check vid&filename failed" and "format invalid")
|
||||||
|
# https://v.qq.com/x/page/q06058th9ll.html
|
||||||
|
# https://v.qq.com/x/page/t060789a21e.html
|
||||||
|
if seg_cnt == 1:
|
||||||
|
part_format_id = video_json['vl']['vi'][0]['cl']['keyid'].split('.')[-1]
|
||||||
|
else:
|
||||||
|
part_format_id = video_json['vl']['vi'][0]['cl']['ci'][part - 1]['keyid'].split('.')[1]
|
||||||
|
filename = '.'.join([fn_pre, magic_str, str(part), video_type])
|
||||||
|
|
||||||
key_api = "http://vv.video.qq.com/getkey?otype=json&platform=11&format={}&vid={}&filename={}&appver=3.2.19.333".format(part_format_id, vid, filename)
|
key_api = "http://vv.video.qq.com/getkey?otype=json&platform=11&format={}&vid={}&filename={}&appver=3.2.19.333".format(part_format_id, vid, filename)
|
||||||
part_info = get_content(key_api)
|
part_info = get_content(key_api)
|
||||||
key_json = json.loads(match1(part_info, r'QZOutputJson=(.*)')[:-1])
|
key_json = json.loads(match1(part_info, r'QZOutputJson=(.*)')[:-1])
|
||||||
|
Loading…
Reference in New Issue
Block a user