you-get/src/you_get/extractors/tiktok.py

48 lines
1.5 KiB
Python
Raw Normal View History

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):
2020-10-25 19:02:28 +03:00
referUrl = url.split('?')[0]
headers = fake_headers
2020-07-26 16:06:03 +03:00
2020-10-25 19:02:28 +03:00
# trick or treat
html = get_content(url, headers=headers)
2020-07-26 16:06:03 +03:00
data = r1(r'<script id="__NEXT_DATA__".*?>(.*?)</script>', html)
info = json.loads(data)
2020-10-25 19:02:28 +03:00
wid = info['props']['initialProps']['$wid']
cookie = 'tt_webid=%s; tt_webid_v2=%s' % (wid, wid)
# here's the cookie
headers['Cookie'] = cookie
# try again
html = get_content(url, headers=headers)
data = r1(r'<script id="__NEXT_DATA__".*?>(.*?)</script>', html)
info = json.loads(data)
wid = info['props']['initialProps']['$wid']
cookie = 'tt_webid=%s; tt_webid_v2=%s' % (wid, wid)
videoData = info['props']['pageProps']['itemInfo']['itemStruct']
videoId = videoData['id']
videoUrl = videoData['video']['downloadAddr']
uniqueId = videoData['author'].get('uniqueId')
nickName = videoData['author'].get('nickname')
title = '%s [%s]' % (nickName or uniqueId, videoId)
# we also need the referer
headers['Referer'] = referUrl
mime, ext, size = url_info(videoUrl, headers=headers)
print_info(site_info, title, mime, size)
if not info_only:
download_urls([videoUrl], title, ext, size, output_dir=output_dir, merge=merge, headers=headers)
2018-11-30 20:29:22 +03:00
site_info = "TikTok.com"
download = tiktok_download
download_playlist = playlist_not_supported('tiktok')