diff --git a/src/you_get/extractors/tiktok.py b/src/you_get/extractors/tiktok.py index 4843ced8..2ef05226 100644 --- a/src/you_get/extractors/tiktok.py +++ b/src/you_get/extractors/tiktok.py @@ -5,26 +5,42 @@ __all__ = ['tiktok_download'] from ..common import * def tiktok_download(url, output_dir='.', merge=True, info_only=False, **kwargs): - html = get_html(url, faker=True) + referUrl = url.split('?')[0] + headers = fake_headers + # trick or treat + html = get_content(url, headers=headers) data = r1(r'', 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') + wid = info['props']['initialProps']['$wid'] + cookie = 'tt_webid=%s; tt_webid_v2=%s' % (wid, wid) - for i, videoUrl in enumerate(urls): - title = '%s [%s]' % (nickName or uniqueId, videoId) - if len(urls) > 1: - title = '%s [%s]' % (title, i) + # here's the cookie + headers['Cookie'] = cookie - mime, ext, size = url_info(videoUrl, headers={'Referer': url}) + # try again + html = get_content(url, headers=headers) + data = r1(r'', html) + info = json.loads(data) + wid = info['props']['initialProps']['$wid'] + cookie = 'tt_webid=%s; tt_webid_v2=%s' % (wid, wid) - print_info(site_info, title, mime, size) - if not info_only: - download_urls([videoUrl], title, ext, size, output_dir=output_dir, merge=merge, headers={'Referer': url}) + 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) site_info = "TikTok.com" download = tiktok_download