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