* Add TikTok photo support #3061 #4177 * Address linting errors * Fix more test failures * Forgot to update category names in tests * Looking into re issue * Follow default yt-dlp output template * Fix format string error on 3.5 * Support downloading videos and audio Respond to comments Improve archiving and file naming * Forgot to update supportedsites.md * Support user profiles * Fix indentation * Prevent matching with more than one TikTok extractor * Fix TikTok regex * Support TikTok profile avatars * Fix supportedsites.md * TikTok: Ignore no formats error In my limited experience, this doesn't mean that gallery-dl can't download the photo post (but this could mean that you can't download the audio) * Fix error reporting message * TikTok: Support more URL formats vt.tiktok.com www.tiktok.com/t/ * TikTok: Only download avatar when extracting user profile * TikTok: Document profile avatar limitation * TikTok: Add support for www.tiktokv.com/share links * Address Share -> Sharepost issue * TikTok: Export post's creation date in JSON (ISO 8601) * [tiktok] update * [tiktok] update 'vmpost' handling just perform a HEAD request and handle its response * [tiktok] build URLs from post IDs instead of reusing unchanged input URLs * [tiktok] combine 'post' and 'sharepost' extractors * [tiktok] update default filenames put 'id' and 'num' first to ensure better file order * [tiktok] improve ytdl usage - speed up extraction by passing '"extract_flat": True' - pass more user options and cookies - pre-define 'TikTokUser' extractor usage * [tiktok] Add _COOKIES entry to AUTH_MAP * [tiktok] Always download user avatars * [tiktok] Add more documentation to supportedsites.md * [tiktok] Address review comments --------- Co-authored-by: Mike Fährmann <mike_faehrmann@web.de>
This commit is contained in:
256
test/results/tiktok.py
Normal file
256
test/results/tiktok.py
Normal file
@@ -0,0 +1,256 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License version 2 as
|
||||
# published by the Free Software Foundation.
|
||||
|
||||
from gallery_dl.extractor import tiktok
|
||||
|
||||
PATTERN = r"https://p1[69]-[^/?#.]+\.tiktokcdn[^/?#.]*\.com/[^/?#]+/\w+~.*\.jpe?g"
|
||||
PATTERN_WITH_AUDIO = r"(?:" + PATTERN + r"|ytdl:http.+)"
|
||||
|
||||
|
||||
__tests__ = (
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@chillezy/photo/7240568259186019630",
|
||||
"#comment" : "/photo/ link: many photos",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN,
|
||||
"#options" : {"videos": False},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@chillezy/video/7240568259186019630",
|
||||
"#comment" : "/video/ link: many photos",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN,
|
||||
"#options" : {"videos": False},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktokv.com/share/video/7240568259186019630",
|
||||
"#comment" : "www.tiktokv.com link: many photos",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN,
|
||||
"#options" : {"videos": False},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@d4vinefem/photo/7449575367024626974",
|
||||
"#comment" : "/photo/ link: single photo",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN,
|
||||
"#options" : {"videos": False},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@d4vinefem/video/7449575367024626974",
|
||||
"#comment" : "/video/ link: single photo",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN,
|
||||
"#options" : {"videos": False},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktokv.com/share/video/7449575367024626974",
|
||||
"#comment" : "www.tiktokv.com link: single photo",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN,
|
||||
"#options" : {"videos": False},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@.mcfc.central/photo/7449701420934122785",
|
||||
"#comment" : "/photo/ link: few photos",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN,
|
||||
"#options" : {"videos": False},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@.mcfc.central/video/7449701420934122785",
|
||||
"#comment" : "/video/ link: few photos",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN,
|
||||
"#options" : {"videos": False},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktokv.com/share/video/7449701420934122785",
|
||||
"#comment" : "www.tiktokv.com link: few photos",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN,
|
||||
"#options" : {"videos": False},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@ughuwhguweghw/video/1",
|
||||
"#comment" : "deleted post",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#options" : {"videos": False},
|
||||
"count" : 0,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@memezar/video/7449708266168274208",
|
||||
"#comment" : "Video post",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#urls" : "ytdl:https://www.tiktok.com/@memezar/video/7449708266168274208",
|
||||
"#options" : {"videos": True},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@memezar/photo/7449708266168274208",
|
||||
"#comment" : "Video post as a /photo/ link",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#urls" : "ytdl:https://www.tiktok.com/@memezar/video/7449708266168274208",
|
||||
"#options" : {"videos": True},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktokv.com/share/video/7240568259186019630",
|
||||
"#comment" : "www.tiktokv.com link: many photos with audio",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN_WITH_AUDIO,
|
||||
"#options" : {"videos": True},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktokv.com/share/video/7449708266168274208",
|
||||
"#comment" : "Video post as a share link",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#urls" : "ytdl:https://www.tiktok.com/@/video/7449708266168274208",
|
||||
"#options" : {"videos": True},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@memezar/video/7449708266168274208",
|
||||
"#comment" : "Skipping video post",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#urls" : [],
|
||||
"#options" : {"videos": False},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@chillezy/photo/7240568259186019630",
|
||||
"#comment" : "/photo/ link: many photos with audio",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN_WITH_AUDIO,
|
||||
"#options" : {"videos": True},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@chillezy/video/7240568259186019630",
|
||||
"#comment" : "/video/ link: many photos with audio",
|
||||
"#category" : ("", "tiktok", "post"),
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
"#pattern" : PATTERN_WITH_AUDIO,
|
||||
"#options" : {"videos": True},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@/video/7240568259186019630",
|
||||
"#class" : tiktok.TiktokPostExtractor,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://vm.tiktok.com/ZGdh4WUhr/",
|
||||
"#comment" : "vm.tiktok.com link: many photos",
|
||||
"#category" : ("", "tiktok", "vmpost"),
|
||||
"#class" : tiktok.TiktokVmpostExtractor,
|
||||
"#pattern" : tiktok.TiktokPostExtractor.pattern,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://vm.tiktok.com/ZGdhVtER2/",
|
||||
"#comment" : "vm.tiktok.com link: single photo",
|
||||
"#category" : ("", "tiktok", "vmpost"),
|
||||
"#class" : tiktok.TiktokVmpostExtractor,
|
||||
"#pattern" : tiktok.TiktokPostExtractor.pattern,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://vm.tiktok.com/ZGdhVW3cu/",
|
||||
"#comment" : "vm.tiktok.com link: few photos",
|
||||
"#category" : ("", "tiktok", "vmpost"),
|
||||
"#class" : tiktok.TiktokVmpostExtractor,
|
||||
"#pattern" : tiktok.TiktokPostExtractor.pattern,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://vm.tiktok.com/ZGdht7cjp/",
|
||||
"#comment" : "Video post as a VM link",
|
||||
"#category" : ("", "tiktok", "vmpost"),
|
||||
"#class" : tiktok.TiktokVmpostExtractor,
|
||||
"#pattern" : tiktok.TiktokPostExtractor.pattern,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://vm.tiktok.com/ZGdh4WUhr/",
|
||||
"#comment" : "vm.tiktok.com link: many photos with audio",
|
||||
"#category" : ("", "tiktok", "vmpost"),
|
||||
"#class" : tiktok.TiktokVmpostExtractor,
|
||||
"#pattern" : tiktok.TiktokPostExtractor.pattern,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://vt.tiktok.com/ZGdhVtER2",
|
||||
"#comment" : "vt.tiktok.com link: single photo",
|
||||
"#category" : ("", "tiktok", "vmpost"),
|
||||
"#class" : tiktok.TiktokVmpostExtractor,
|
||||
"#pattern" : tiktok.TiktokPostExtractor.pattern,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/t/ZGdhVtER2//",
|
||||
"#comment" : "www.tiktok.com/t/ link: single photo",
|
||||
"#category" : ("", "tiktok", "vmpost"),
|
||||
"#class" : tiktok.TiktokVmpostExtractor,
|
||||
"#pattern" : tiktok.TiktokPostExtractor.pattern,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@chillezy",
|
||||
"#comment" : "User profile",
|
||||
"#category" : ("", "tiktok", "user"),
|
||||
"#class" : tiktok.TiktokUserExtractor,
|
||||
"#pattern" : PATTERN_WITH_AUDIO,
|
||||
"#options" : {"videos": True, "tiktok-range": "1-10"},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@chillezy/",
|
||||
"#comment" : "User profile without audio or videos",
|
||||
"#category" : ("", "tiktok", "user"),
|
||||
"#class" : tiktok.TiktokUserExtractor,
|
||||
"#pattern" : PATTERN,
|
||||
"#options" : {"videos": False, "tiktok-range": "1-10"},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.tiktok.com/@joeysc14/",
|
||||
"#comment" : "Public user profile with no content",
|
||||
"#category" : ("", "tiktok", "user"),
|
||||
"#class" : tiktok.TiktokUserExtractor,
|
||||
"#pattern" : PATTERN,
|
||||
"#options" : {"videos": False, "tiktok-range": "1"},
|
||||
"#count" : 1,
|
||||
},
|
||||
|
||||
)
|
||||
Reference in New Issue
Block a user