2018-11-30 20:29:22 +03:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
__all__ = ['tiktok_download']
|
|
|
|
|
|
|
|
from ..common import *
|
|
|
|
|
|
|
|
def tiktok_download(url, output_dir='.', merge=True, info_only=False, **kwargs):
|
2019-01-18 13:40:14 +03:00
|
|
|
html = get_html(url, faker=True)
|
2020-07-26 16:06:03 +03:00
|
|
|
|
|
|
|
data = r1(r'<script id="__NEXT_DATA__".*?>(.*?)</script>', html)
|
|
|
|
info = json.loads(data)
|
|
|
|
videoData = info['props']['pageProps']['videoData']
|
|
|
|
urls = videoData['itemInfos']['video']['urls']
|
|
|
|
videoId = videoData['itemInfos']['id']
|
|
|
|
uniqueId = videoData['authorInfos'].get('uniqueId')
|
|
|
|
nickName = videoData['authorInfos'].get('nickName')
|
|
|
|
|
2020-09-19 00:25:38 +03:00
|
|
|
for i, videoUrl in enumerate(urls):
|
2020-07-26 16:06:03 +03:00
|
|
|
title = '%s [%s]' % (nickName or uniqueId, videoId)
|
|
|
|
if len(urls) > 1:
|
|
|
|
title = '%s [%s]' % (title, i)
|
|
|
|
|
2020-09-19 00:25:38 +03:00
|
|
|
mime, ext, size = url_info(videoUrl, headers={'Referer': url})
|
2020-07-26 16:06:03 +03:00
|
|
|
|
|
|
|
print_info(site_info, title, mime, size)
|
|
|
|
if not info_only:
|
2020-09-19 00:25:38 +03:00
|
|
|
download_urls([videoUrl], title, ext, size, output_dir=output_dir, merge=merge, headers={'Referer': url})
|
2018-11-30 20:29:22 +03:00
|
|
|
|
|
|
|
site_info = "TikTok.com"
|
|
|
|
download = tiktok_download
|
|
|
|
download_playlist = playlist_not_supported('tiktok')
|