2017-12-15 12:21:34 +03:00
|
|
|
# coding=utf-8
|
|
|
|
|
|
|
|
import re
|
|
|
|
import json
|
|
|
|
|
|
|
|
from ..common import (
|
|
|
|
url_size,
|
|
|
|
print_info,
|
|
|
|
get_content,
|
2018-05-11 12:12:01 +03:00
|
|
|
fake_headers,
|
2017-12-15 12:21:34 +03:00
|
|
|
download_urls,
|
|
|
|
playlist_not_supported,
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
__all__ = ['douyin_download_by_url']
|
|
|
|
|
|
|
|
|
|
|
|
def douyin_download_by_url(url, **kwargs):
|
2018-05-11 12:12:01 +03:00
|
|
|
page_content = get_content(url, headers=fake_headers)
|
2017-12-15 12:21:34 +03:00
|
|
|
match_rule = re.compile(r'var data = \[(.*?)\];')
|
|
|
|
video_info = json.loads(match_rule.findall(page_content)[0])
|
|
|
|
video_url = video_info['video']['play_addr']['url_list'][0]
|
2018-05-11 13:08:23 +03:00
|
|
|
# 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']
|
2017-12-15 12:21:34 +03:00
|
|
|
video_format = 'mp4'
|
2018-05-11 12:12:01 +03:00
|
|
|
size = url_size(video_url, faker=True)
|
2017-12-15 12:21:34 +03:00
|
|
|
print_info(
|
|
|
|
site_info='douyin.com', title=title,
|
|
|
|
type=video_format, size=size
|
|
|
|
)
|
|
|
|
if not kwargs['info_only']:
|
|
|
|
download_urls(
|
|
|
|
urls=[video_url], title=title, ext=video_format, total_size=size,
|
2018-05-11 12:12:01 +03:00
|
|
|
faker=True,
|
2017-12-15 12:21:34 +03:00
|
|
|
**kwargs
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
download = douyin_download_by_url
|
|
|
|
download_playlist = playlist_not_supported('douyin')
|