diff --git a/test/ci/test_tiktok.py b/test/ci/test_tiktok.py index 7fd7f8f93..3f75cb202 100644 --- a/test/ci/test_tiktok.py +++ b/test/ci/test_tiktok.py @@ -15,8 +15,7 @@ class TikTokTestYoutubeDl(unittest.TestCase): self.assertEquals(info['title'], '#foryou #foyou Mmmmm....,,') self.assertEquals(info['uploader'], 'Oriangaon') self.assertEquals(info['timestamp'], 1584907616) - self.assertEquals(info['thumbnail'], - 'https://p16-va-default.akamaized.net/obj/tos-maliva-p-0068/d1a8fbd3e42dda3a1baa01ee9edad289') + self.assertTrue(info['thumbnail']) self.assertGreaterEqual(info['view_count'], 79864) self.assertEquals(info['uploader_id'], '6772113344733955077') self.assertFalse(info['is_live']) @@ -27,6 +26,8 @@ class TikTokTestYoutubeDl(unittest.TestCase): self.assertEquals(info['duration'], 10) self.assertEquals(info['ext'], 'mp4') self.assertGreater(len(info['embed_code']),0) + self.assertGreaterEqual(info['author_followers'], 1357) + self.assertEqual(info['uploader_url'], "https://www.tiktok.com/@oriangaon") def test_download_video(self): url = 'https://www.tiktok.com/@ballislife/video/6783617809113943301' diff --git a/youtube_dl/extractor/tiktok.py b/youtube_dl/extractor/tiktok.py index 0dbf230ac..17aad8ef3 100644 --- a/youtube_dl/extractor/tiktok.py +++ b/youtube_dl/extractor/tiktok.py @@ -74,6 +74,8 @@ class TikTokIE(TikTokBaseIE): ast_le = ast.literal_eval(json_data_encode) data_dict = json.loads(ast_le) + author_followers = data_dict['props']['pageProps']['videoData']['authorStats']['followerCount'] + item_info = data_dict['props']['pageProps']['videoData']['itemInfos'] timestamp = int(item_info['createTime']) shares = item_info['shareCount'] @@ -82,17 +84,17 @@ class TikTokIE(TikTokBaseIE): provider_id = item_info['authorId'] comments_count = item_info['commentCount'] likes_count = item_info['diggCount'] - - entry=self._extract_aweme(data_dict) + author_url = json_api['author_url'] + entry = self._extract_aweme(data_dict) return self.info_dict(video_id, str(url), json_api['title'], json_api['author_name'], timestamp, json_api['thumbnail_url'], - views, provider_id, False, 'not_live', likes_count, shares, '', comments_count, duration, json_api['html'], entry['formats']) + views, provider_id, False, 'not_live', likes_count, shares, '', comments_count, duration, json_api['html'], entry['formats'], author_url, author_followers) def info_dict(self, video_id, url, video_title, uploader, timestamp, thumbnail, view_count, uploader_id, is_live, live_status - , likes_count, shares_count, subtitles, comment_count, duration, embed_code, format): + , likes_count, shares_count, subtitles, comment_count, duration, embed_code, format, author_url, author_followers): info_dict = { 'id': video_id, 'url': url, @@ -110,7 +112,9 @@ class TikTokIE(TikTokBaseIE): 'comment_count': comment_count, 'duration': duration, 'embed_code': embed_code, - 'formats': format + 'formats': format, + 'uploader_url': author_url, + 'author_followers': author_followers } return info_dict