yt-dlp: [tiktok:user] Failed to parse JSON

Checklist

  • I’m reporting a broken site
  • I’ve verified that I’m running yt-dlp version 2022.05.18 (update instructions) or later (specify commit)
  • I’ve checked that all provided URLs are playable in a browser with the same IP and same login details
  • I’ve checked that all URLs and arguments with special characters are properly quoted or escaped
  • I’ve searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
  • I’ve read the guidelines for opening an issue
  • I’ve read about sharing account credentials and I’m willing to share it if required

Region

USA

Description

Starting earlier today, tiktok user pages started timing out. Downloading an individual video still works, but user pages don’t.

For example (in the log below), yt-dlp.sh "https://www.tiktok.com/@derekbrunsonmma" -vU times out, but yt-dlp.sh "https://www.tiktok.com/@derekbrunsonmma/video/7098932076711284014" -vU works fine.

Verbose log

$ ~/yt-dlp/yt-dlp.sh "https://www.tiktok.com/@derekbrunsonmma" -vU
[debug] Command-line config: ['https://www.tiktok.com/@derekbrunsonmma', '-vU']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.05.18 [b14d52355] (source)
[debug] Lazy loading extractors is disabled
[debug] Plugins: ['SamplePluginIE', 'SamplePluginPP']
[debug] Git HEAD: 926ccc84e
[debug] Python version 3.8.10 (CPython 64bit) - Linux-5.4.0-1029-aws-x86_64-with-glibc2.29
[debug] Checking exe version: ffprobe -bsfs
[debug] Checking exe version: ffmpeg -bsfs
[debug] exe versions: ffmpeg 4.2.4, ffprobe 4.2.4
[debug] Optional libraries: Cryptodome-3.13.0, certifi-2019.11.28, mutagen-1.45.1, secretstorage-2.3.1, sqlite3-2.6.0, websockets-10.1
[debug] Proxy map: {}
Latest version: 2022.05.18, Current version: 2022.05.18
yt-dlp is up to date (2022.05.18)
[debug] [tiktok:user] Extracting URL: https://www.tiktok.com/@derekbrunsonmma
[tiktok:user] derekbrunsonmma: Downloading webpage
ERROR: [tiktok:user] derekbrunsonmma: Unable to download webpage: The read operation timed out (caused by timeout('The read operation timed out')); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "/home/ubuntu/yt-dlp/yt_dlp/extractor/common.py", line 642, in extract
    ie_result = self._real_extract(url)
  File "/home/ubuntu/yt-dlp/yt_dlp/extractor/tiktok.py", line 629, in _real_extract
    webpage = self._download_webpage(url, user_name, headers={
  File "/home/ubuntu/yt-dlp/yt_dlp/extractor/common.py", line 933, in _download_webpage
    res = self._download_webpage_handle(
  File "/home/ubuntu/yt-dlp/yt_dlp/extractor/common.py", line 801, in _download_webpage_handle
    urlh = self._request_webpage(url_or_request, video_id, note, errnote, fatal, data=data, headers=headers, query=query, expected_status=expected_status)
  File "/home/ubuntu/yt-dlp/yt_dlp/extractor/common.py", line 786, in _request_webpage
    raise ExtractorError(errmsg, cause=err)

  File "/home/ubuntu/yt-dlp/yt_dlp/extractor/common.py", line 768, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/home/ubuntu/yt-dlp/yt_dlp/YoutubeDL.py", line 3596, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.8/urllib/request.py", line 525, in open
    response = self._open(req, data)
  File "/usr/lib/python3.8/urllib/request.py", line 542, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
  File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/home/ubuntu/yt-dlp/yt_dlp/utils.py", line 1419, in https_open
    return self.do_open(
  File "/usr/lib/python3.8/urllib/request.py", line 1358, in do_open
    r = h.getresponse()
  File "/usr/lib/python3.8/http/client.py", line 1348, in getresponse
    response.begin()
  File "/usr/lib/python3.8/http/client.py", line 316, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.8/http/client.py", line 277, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
  File "/usr/lib/python3.8/ssl.py", line 1241, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/lib/python3.8/ssl.py", line 1099, in read
    return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

About this issue

  • Original URL
  • State: open
  • Created 2 years ago
  • Reactions: 21
  • Comments: 135 (46 by maintainers)

Commits related to this issue

Most upvoted comments

For those looking for a dumb manual workaround to just grab a set of videos from a user page, this JS oneliner should copy all the loaded posts straight to your clipboard, ready to run:

copy($$('div[data-e2e="user-post-item"] a').map(a => "yt-dlp " + a.href).join("\n"))

Add your preferred command line opts after yt-dlp (for example, (a => "yt-dlp --verbose " + a.href)).

Edit to avoid further spamming this issue: You can use this code by going to a TikTok user page and scrolling until all the videos you want are visible, pressing F12, going to the Console tab, and pasting the above code and pressing enter. Tested on Chrome and Firefox.

Can confirm this report. Additionally, vm.tiktok.com URL’s timeout also.

For me pasting copy(Array.from(document.querySelectorAll(".e19c29qe7")).map((x) => x.children[0].children[0].children[0].children[0].href).join("\n")) into the developer console in Chromium (hit F12 to bring it up) copies all TikToks on someone’s page to the clipboard (scoll down someone’s page to load more). Pasting that into a file, say urls.txt and then running yt-dlp -a urls.txt works to download them all. The magic e19c29qe7 class name may change as TikTok updates their webpages, but inspecting the page with ctrl+shift+c and clicking a TikTok to see its html/css one can update that.

Not for now. It can be considered once #1354 is done

Sorry for the bother…but is there some way to use it while you guys are making the necessary decisions?

I’m a noob, but if you point me in the general direction of how to integrate it, I can learn by trial and error.

Go to redraskal’s fork of yt-dlp, and then either git clone it and checkout the fix/tiktok-user branch, or select the same branch from the web interface and download the ZIP of that. From there, compile yt-dlp for your OS using the README.md instructions, and you’ll have an executable you can use on the command line like usual, except with redraskal’s patch applied.

I should add that I’ve tried this from multiple machines with different IPs, so it’s not that I’ve personally been blocked.

It’s working again.

Can also confirm this report. Same error.

I created a working user extraction 😃

Looks like tests are not passing, but it works with my own personal tests. Anyone want to test this? Tests now pass

We know it is broken. Please stop saying “me too”!

The issue seem similar to https://github.com/yt-dlp/yt-dlp/issues/2135. It may be worth looking into more app versions

please fix

yt-dlp https://www.tiktok.com/@t_k7276 [tiktok:user] t_k7276: Downloading webpage ERROR: [tiktok:user] t_k7276: Unable to download webpage: The read operation timed out (caused by TimeoutError('The read operation timed out')); please report this issue on https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using yt-dlp -U

Can confirm, same error.

Users already have a web browser that’s at least 10x too big (cf. Netscape 9 for Windows, <6MB download, 2007) and only yt-dlp users who are dedicated TT/DY fiends are likely to want another one for this specific application. Even Node.js is a small fraction of 150MB. But perhaps this is an olde worlde concern when users may be regularly downloading GBs that are immediately discarded.

I wondered if there was a lower overhead solution using https://chromedevtools.github.io/devtools-protocol/ but apparently that’s what pyppeteer uses anyway.

Accepting that this pyppeteer/chromium solution effectively resolves the problem in the issue and is the only successful approach found despite many other attempts, it seems like a setback for the yt-dl[p] approach as well as for the open Web in general. We can’t back-port such a solution to yt-dl, whose use cases include overcoming deficiencies of, or actual lack of, a platform web browser.

Successfully downloaded a whole user account – nice work! If merged, I think it’d be a good idea to make a note of the pyppeteer dependency, and its possible need to grab a 150 MiB Chromium binary to do the extraction, in the README.md.

The one lingering question I have (and please forgive me if I’m missing something obvious here) is how to specify format for the whole-user download – for example, how to get 720p all the time. It looks like the format ID changes for each individual video, but there might be a workaround I’m missing here.

The chromium binary should automatically install when using the tiktok extractor

Right, it did for me. To clarify, I meant I think it’d be a good idea to at least give users a heads up that using this particular extractor downloads a 150 MiB binary to your system, since some users’ devices may not have much storage space available, that single binary is roughly 3x the size of the entire yt-dlp repo, some users might have internet/data plans with a quota, etc. Maybe this is just overly cautious on my part, but I’m not sure.

I have same error on vm.tiktok

@snazss Don’t talk about something unrelated to the issue here

Noticed it today also, but I still can download videos. But only with “feed” method:

D:\PROGRAMS\TikTok Download>!dl https://www.tiktok.com/@skraemmern/video/7136875846299602182 -vU
[debug] Command-line config: ['https://www.tiktok.com/@skraemmern/video/7136875846299602182', '-vU']
[debug] Encodings: locale cp1251, fs utf-8, pref cp1251, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.09.01 [5d7c7d6] (win32_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.19044-SP0
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg n5.1.1-20220902 (setts), ffprobe n5.1.1-20220902
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Loaded 1670 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.09.01, Current version: 2022.09.01
yt-dlp is up to date (2022.09.01)
[TikTok] Setting up session
[debug] [TikTok] Extracting URL: https://www.tiktok.com/@skraemmern/video/7136875846299602182
[TikTok] 7136875846299602182: Downloading video details
WARNING: [TikTok] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 1 of 5)
[TikTok] 7136875846299602182: Downloading video details
WARNING: [TikTok] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 2 of 5)
[TikTok] 7136875846299602182: Downloading video details
WARNING: [TikTok] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 3 of 5)
[TikTok] 7136875846299602182: Downloading video details
WARNING: [TikTok] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 4 of 5)
[TikTok] 7136875846299602182: Downloading video details
WARNING: [TikTok] 7136875846299602182: Failed to parse JSON; trying feed workaround
[TikTok] 7136875846299602182: Downloading video feed
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), channels, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7136875846299602182: Downloading 1 format(s): h264_540p_1628209-2
[debug] Invoking http downloader on "https://v39-eu.tiktokcdn.com/e56d0313879dd8441163b560345c437a/63222105/video/tos/useast2a/tos-useast2a-ve-0068c004/8060f40af3534fadb2f27117f1fe02e2/?a=1180&ch=0&cr=0&dr=0&lr=all&cd=0%7C0%7C0%7C0&cv=1&br=3180&bt=1590&cs=0&ds=6&ft=ARJXOB4Vqgtmo0Pk_9GBkVQd05cH2KJ&mime_type=video_mp4&qs=0&rc=PDZlNjszNGkzZTo1ZzhoZUBpM2dnMzc6ZmluZjMzNzczM0AvMV41LjYxXjMxY2IzXjVgYSNoa2VrcjRvYTJgLS1kMTZzcw%3D%3D&l=202209141244070102510651241D195C2F&btag=80000&cc=1e"
[debug] File locking is not supported. Proceeding without locking
[download] Destination: Wish everybody a happy sunday! BLBLBLBLBLBLBLBLBL 😂 #fy #fyp #foryou #foryourpage #jumpscare #mom #norway #prank #skraemmern #haha #allday #sunday [7136875846299602182].mp4
[download] 100% of 2.37MiB in 00:00 at 2.59MiB/s

I think it’s worth looking at, I’m going to try the same with my iPhone

I don’t have a Pixel 4, but I do have a moto g power and access to packet-capturing software, so since ja3 fingerprints are based on certain elements of the client hello packet, I imagine it wouldn’t hurt to run a pcap on my phone while using the TikTok app and see if I can replicate successful sessions based on that data. Since TikTok has a web client in addition to the mobile apps (not quite as featureful, though), that may be another vector for getting at this stuff, even if ja3 doesn’t end up being the specific method they’re using. I recognize this could be a lot of work just to get one feature of one extractor up and running again, but I think it’s still worth taking a crack at. Thoughts?

Having exact same problem in-time it has worked at the past few weeks

Summary of the situation:

The issues can be separated into a few parts:

  1. channels don’t work at all
  2. channels don’t paginate
  3. vm links don’t work
  4. there is stricter protection when using VPN
  5. #3551 Fixed

Possible solutions:

PS: It’s been a while since I looked at this issue, correct me if I’m wrong on something

Unless you have something useful to add to this, please refrain from adding noise to the issue

Update:

https://github.com/ytdl-org/youtube-dl/pull/30479 is completely broken now, so we are back to square 1 except for (5)

There must be some discrimination at TT. Here:

$ git checkout df-wranai-tiktok-patch
Switched to branch 'df-wranai-tiktok-patch'
$ python -m youtube_dl -F -v 'https://www.tiktok.com/@derekbrunsonmma'
[debug] System config: [u'--prefer-ffmpeg']
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-F', u'-v', u'https://www.tiktok.com/@derekbrunsonmma']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Git HEAD: 2f65e205e
[debug] Python version 2.7.17 (CPython) - Linux-4.4.0-210-generic-i686-with-Ubuntu-16.04-xenial
[debug] exe versions: avconv 4.3, avprobe 4.3, ffmpeg 4.3, ffprobe 4.3
[debug] Proxy map: {}
[tiktok:user] Setting up session
[tiktok:user] derekbrunsonmma: Downloading webpage
WARNING: More videos are available but the current extractor doesn't know how to find them
[download] Downloading playlist: 6805667245747209222
[tiktok:user] playlist 6805667245747209222: Collected 30 video ids (downloading 30 of them)
[download] Downloading video 1 of 30
[tiktok] Setting up session
[tiktok] 7099799828678380842: Downloading webpage
[info] Available formats for 7099799828678380842:
format code  extension  resolution note
0            mp4        576x1024   
[download] Downloading video 2 of 30
[tiktok] 7099586219537108270: Downloading webpage
[info] Available formats for 7099586219537108270:
format code  extension  resolution note
0            mp4        576x828    
[download] Downloading video 3 of 30
[tiktok] 7099505233373465898: Downloading webpage
...

And Py3.9 (same for 3.5):

$ python3.9 -m youtube_dl --flat-playlist -j -v 'https://www.tiktok.com/@derekbrunsonmma'
[debug] System config: ['--prefer-ffmpeg']
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--flat-playlist', '-j', '-v', 'https://www.tiktok.com/@derekbrunsonmma']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Git HEAD: 2f65e205e
[debug] Python version 3.9.12 (CPython) - Linux-4.4.0-210-generic-i686-with-glibc2.23
[debug] exe versions: avconv 4.3, avprobe 4.3, ffmpeg 4.3, ffprobe 4.3
[debug] Proxy map: {}
WARNING: More videos are available but the current extractor doesn't know how to find them
{"_type": "url", "url": "tiktok:derekbrunsonmma:7099799828678380842", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7099586219537108270", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7099505233373465898", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7099455914255633710", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7099277655979248942", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7099258188624579886", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7099227036148976939", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7099211696870411566", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7099172441154473262", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7099067570380197162", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098932076711284014", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098912942279839022", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098901483139173675", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098868510356557098", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098848419925527854", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098731859403623723", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098553426669243691", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098530750685007150", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098503324227423534", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098493495358410030", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098164938190998826", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098161970817404203", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7098009011781520686", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7097779473386327338", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7097699241228766510", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7097660895177952558", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7097444267131538734", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7097056072573259054", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7097018259224022314", "ie_key": "TikTok"}
{"_type": "url", "url": "tiktok:derekbrunsonmma:7096969440977259818", "ie_key": "TikTok"}
$

If the _real_initialize() fails, the later requests will behave as you saw. Fetching the home page should set some state (cookies IIRC) that let the later requests fetch the actual pages instead of being sent to captcha hell.

Same issue, the download works fine for desktop links, but vm.tiktok.com and the new www.tiktok.com/t/some-id links that come from mobile time out completely, even with good headers

Indeed, that is a shortcut URL and so the UA command-line option doesn’t solve the problem.

❯ yt-dlp https://www.tiktok.com/@lapupidu/video/7097189476610411782\?_t\=8SP564fJZX4\&_r\=1 --add-header 'user-agent:Mozilla/5.0' -vU
really, it worked

In that example, you are downloading an individual video…which OP reported still works. It is profiles and vm links that are not working.

Try --add-header 'user-agent:Mozilla/5.0' (aka --user-agent 'Mozilla/5.0').

Actual code changes are needed for the shortcut (and profile) URLs as the redirect extractor may not see the custom UA. For example, try this yt-dl PR, which currently finds the first 30 videos, and can download at least the first 10kB of at least the first item, with the problem URL, but says

WARNING: More videos are available but the current extractor doesn’t know how to find them

Go to redraskal’s fork of yt-dlp, and then either git clone it and checkout the fix/tiktok-user branch, or select the same branch from the web interface and download the ZIP of that. From there, compile yt-dlp for your OS using the README.md instructions, and you’ll have an executable you can use on the command line like usual, except with redraskal’s patch applied.

Also had to add pyppeteer as a dependency on pyinst.py line 83 so pyinstaller can include this package in the executable. The updated extractor works perfectly btw, great work!

Users already have a web browser that’s at least 10x too big (cf. Netscape 9 for Windows, <6MB download, 2007) and only yt-dlp users who are dedicated TT/DY fiends are likely to want another one for this specific application. Even Node.js is a small fraction of 150MB. But perhaps this is an olde worlde concern when users may be regularly downloading GBs that are immediately discarded.

I wondered if there was a lower overhead solution using https://chromedevtools.github.io/devtools-protocol/ but apparently that’s what pyppeteer uses anyway.

Accepting that this pyppeteer/chromium solution effectively resolves the problem in the issue and is the only successful approach found despite many other attempts, it seems like a setback for the yt-dl[p] approach as well as for the open Web in general. We can’t back-port such a solution to yt-dl, whose use cases include overcoming deficiencies of, or actual lack of, a platform web browser.

It’s so much more realistic to use pyppeteer to sign requests. One change to the signing method could set back the extractor weeks if we went ahead with reverse engineering it. It’s only used for API requests that are needed to be signed (not bloated web pages). The requests by pyppeteer are actually faster than the requests for video information.

TikTok is just not wanting their stuff openly accessible.

We can rewrite tls (to emulate browsers), as well as reverse engineer the tiktok signer but that would take a long time and does not seem worth it when we could throw on pyppeteer for this one use case.

Successfully downloaded a whole user account – nice work! If merged, I think it’d be a good idea to make a note of the pyppeteer dependency, and its possible need to grab a 150 MiB Chromium binary to do the extraction, in the README.md.

The one lingering question I have (and please forgive me if I’m missing something obvious here) is how to specify format for the whole-user download – for example, how to get 720p all the time. It looks like the format ID changes for each individual video, but there might be a workaround I’m missing here.

Noticed it today also, but I still can download videos. But only with “feed” method:

Looks like 720p videos are not available using the feed method. Using -F

[debug] Command-line config: ['https://www.tiktok.com/@skraemmern/video/7136875846299602182', '-vU', '-F']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.09.01 [5d7c7d6] (win32_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.19044-SP0
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg n5.0-20220115 (setts)
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Loaded 1670 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.09.01, Current version: 2022.09.01
yt-dlp is up to date (2022.09.01)
[TikTok] Setting up session
[debug] [TikTok] Extracting URL: https://www.tiktok.com/@skraemmern/video/7136875846299602182
[TikTok] 7136875846299602182: Downloading video details
WARNING: [TikTok] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 1 of 5)
[TikTok] 7136875846299602182: Downloading video details
WARNING: [TikTok] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 2 of 5)
[TikTok] 7136875846299602182: Downloading video details
WARNING: [TikTok] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 3 of 5)
[TikTok] 7136875846299602182: Downloading video details
WARNING: [TikTok] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 4 of 5)
[TikTok] 7136875846299602182: Downloading video details
WARNING: [TikTok] 7136875846299602182: Failed to parse JSON; trying feed workaround
[TikTok] 7136875846299602182: Downloading video feed
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), channels, asr, proto, vext, aext, hasaud, source, id
[info] Available formats for 7136875846299602182:
ID                  EXT RESOLUTION │   FILESIZE   TBR PROTO │ VCODEC   VBR ACODEC ABR MORE INFO
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
download_addr-0     mp4 1080x1920  │    2.66MiB       https │ h264         aac        Download video, watermarked (API)
download_addr-1     mp4 1080x1920  │    2.66MiB       https │ h264         aac        Download video, watermarked
download_addr-2     mp4 1080x1920  │    2.66MiB       https │ h264         aac        Download video, watermarked
h264_540p_669667-0  mp4 1080x1920  │  998.21KiB  669k https │ h264    669k aac     0k Playback video (API)
h264_540p_669667-1  mp4 1080x1920  │  998.21KiB  669k https │ h264    669k aac     0k Playback video
h264_540p_669667-2  mp4 1080x1920  │  998.21KiB  669k https │ h264    669k aac     0k Playback video
h264_540p_914369-0  mp4 1080x1920  │    1.33MiB  914k https │ h264    914k aac     0k Playback video (API)
h264_540p_914369-1  mp4 1080x1920  │    1.33MiB  914k https │ h264    914k aac     0k Playback video
h264_540p_914369-2  mp4 1080x1920  │    1.33MiB  914k https │ h264    914k aac     0k Playback video
h264_540p_1628209-0 mp4 1080x1920  │    2.37MiB 1628k https │ h264   1628k aac     0k Direct video (API)
h264_540p_1628209-1 mp4 1080x1920  │    2.37MiB 1628k https │ h264   1628k aac     0k Direct video
h264_540p_1628209-2 mp4 1080x1920  │    2.37MiB 1628k https │ h264   1628k aac     0k Direct video

The resolution is wrong, you can tell by the 540p under ID column. The 720p versions do not show up at all when using links to videos now. They can only be downloaded from links to profile when it decides to not completely fail.

Ran a batch file on a loop until it picked up some videos since I noticed it occasionally downloads new videos with the one I use on a schedule. This is what happened, using account from OP. It only sees a limited number of videos.

[debug] Command-line config: ['https://www.tiktok.com/@derekbrunsonmma', '-vU']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.07.18 [135f05e] (win32_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.19044-SP0
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] Checking exe version: avprobe -bsfs
[debug] exe versions: ffmpeg n5.0-20220115 (setts)
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
ERROR: Unable to obtain version info; Please try again later or Visit  https://github.com/yt-dlp/yt-dlp/releases/latest
[tiktok:user] Setting up session
[debug] [tiktok:user] Extracting URL: https://www.tiktok.com/@derekbrunsonmma
[tiktok:user] derekbrunsonmma: Downloading webpage
[tiktok:user] derekbrunsonmma: Downloading user video list page 1
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 1 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 2 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 3 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 4 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying...
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 1)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 1 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 1)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 2 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 1)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 3 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 1)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 4 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 1)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying...
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 2)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 1 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 2)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 2 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 2)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 3 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 2)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 4 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 2)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying...
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 3)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying... (attempt 1 of 5)
[tiktok:user] derekbrunsonmma: Downloading user video list page 1 (attempt 3)
[download] Downloading playlist: derekbrunsonmma
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[tiktok:user] derekbrunsonmma: Downloading user video list page 2
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying...
[tiktok:user] derekbrunsonmma: Downloading user video list page 2 (attempt 1)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying...
[tiktok:user] derekbrunsonmma: Downloading user video list page 2 (attempt 2)
WARNING: [tiktok:user] Expecting value: line 1 column 1 (char 0). Retrying...
[tiktok:user] derekbrunsonmma: Downloading user video list page 2 (attempt 3)
ERROR: derekbrunsonmma: Failed to parse JSON (caused by JSONDecodeError('Expecting value: line 1 column 1 (char 0)')); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "yt_dlp\extractor\common.py", line 948, in _parse_json
  File "json\__init__.py", line 370, in loads
  File "yt_dlp\utils.py", line 599, in decode
  File "json\decoder.py", line 337, in decode
  File "json\decoder.py", line 355, in raw_decode
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

[tiktok:user] Playlist derekbrunsonmma: Downloading 22 videos of 21
[download] Downloading video 1 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7128072918059289902: Downloading 1 format(s): h264_360p_428234-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/29a0244d2a5018a09bbfe35d39a06945/62ee2d99/video/tos/maliva/tos-maliva-ve-0068c799-us/7d3770c519254e8eb1c6bdbedc657659/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&br=836&bt=418&btag=80000&cs=0&ds=1&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=0&rc=NjUzZzU6aTlpOjk1Z2k6NkBpajk8Mzk6ZjYzZTMzZzczNEAxLS1gMzYzNjAxMTRgMF9iYSNpb2tscjQwLmpgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[debug] File locking is not supported. Proceeding without locking
[download] Destination: Shoutout to the fans #UFC #mma #wrestling #combat #fighting #sports 💯 [7128072918059289902].mp4
[download] 100% of 347.05KiB in 00:00
[download] Downloading video 2 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7125978186441116971: Downloading 1 format(s): bytevc1_720p_548632-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/07538a13828a045052554ed2c8bda967/62ee2d99/video/tos/maliva/tos-maliva-ve-0068c799-us/82679a10e01f46c6b1a00deee940b938/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=1070&bt=535&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=ZTQ3ZWU8NTllOzRpZjwzaUBpanU6Z2g6ZmQ7ZTMzZzczNEA2LzYwYzUyNTUxXzEuX15iYSM0aGdkcjRvcWZgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
ERROR: unable to open for writing: [Errno 2] No such file or directory: 'My single days use to be like 🤦�\\u200d♂️😂😂�  #fy #duet #fyp #fypシ #UFC #mma #viral #lol #comedy #humor #4u #4you #foryou #cute #foryourpage #foryoupage #forfun #memes #Love #follow #bestvideo #northcarolina #wilmington #wilmingtonnc #motivation #relatable #reaction #4 #4upage #love #4yp #4youpage #4up [7125978186441116971].mp4.part'
Traceback (most recent call last):
  File "yt_dlp\utils.py", line 625, in sanitize_open
yt_dlp.utils.LockingUnsupportedError: File locking is not supported

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "yt_dlp\downloader\http.py", line 269, in download
  File "yt_dlp\downloader\common.py", line 224, in inner
  File "yt_dlp\downloader\common.py", line 242, in sanitize_open
  File "yt_dlp\utils.py", line 628, in sanitize_open
FileNotFoundError: [Errno 2] No such file or directory: 'My single days use to be like 🤦🏾\u200d♂️�😂😂  #fy #duet #fyp #fypシ #UFC #mma #viral #lol #comedy #humor #4u #4you #foryou #cute #foryourpage #foryoupage #forfun #memes #Love #follow #bestvideo #northcarolina #wilmington #wilmingtonnc #motivation #relatable #reaction #4 #4upage #love #4yp #4youpage #4up [7125978186441116971].mp4.part'


[download] Downloading video 3 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7125197227995319594: Downloading 1 format(s): bytevc1_720p_969652-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/d2a86e3ef9098871eb05fb6a23ade8e0/62ee2d99/video/tos/maliva/tos-maliva-ve-0068c799-us/72180d6517024b24ab65dc88e9ccffb8/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=1892&bt=946&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=ZWRnZGQ5ZGk0NjRlM2hpM0BpM2x3Zzs6ZnZ2ZTMzZzczNEBfMF82Mi0vXy4xM2ExNjUvYSNhajVycjRfZWRgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: Tik tok broke or nah 😂😂😂 [7125197227995319594].mp4
[download] 100% of 766.54KiB in 00:00
[download] Downloading video 4 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7118546328543579434: Downloading 1 format(s): bytevc1_720p_619610-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/fa927c91c75169ffed0ad39ea0035142/62ee2d99/video/tos/maliva/tos-maliva-ve-0068c799-us/2fdf861c3e0f49fb9724ef09dc3f2025/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=1210&bt=605&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=NzxlaTc7Ozk4aThnM2dlO0BpM3M4czw6Zm41ZTMzZzczNEA2NWNgMDUuX2IxNTBgNjMyYSNfbWAtcjRnYzJgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
ERROR: unable to open for writing: [Errno 2] No such file or directory: 'Good lawd fhat was a slick ko ! #fy #duet #fyp #fypシ #UFC #mma #viral #lol #comedy #humor #4u #4you #foryou #cute #foryourpage #foryoupage #forfun #memes #Love #follow #bestvideo #northcarolina #wilmington #wilmingtonnc #motivation #relatable #reaction #4 #4upage #love #4yp #4youpage #4up [7118546328543579434].mp4.part'
Traceback (most recent call last):
  File "yt_dlp\utils.py", line 625, in sanitize_open
yt_dlp.utils.LockingUnsupportedError: File locking is not supported

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "yt_dlp\downloader\http.py", line 269, in download
  File "yt_dlp\downloader\common.py", line 224, in inner
  File "yt_dlp\downloader\common.py", line 242, in sanitize_open
  File "yt_dlp\utils.py", line 628, in sanitize_open
FileNotFoundError: [Errno 2] No such file or directory: 'Good lawd fhat was a slick ko ! #fy #duet #fyp #fypシ #UFC #mma #viral #lol #comedy #humor #4u #4you #foryou #cute #foryourpage #foryoupage #forfun #memes #Love #follow #bestvideo #northcarolina #wilmington #wilmingtonnc #motivation #relatable #reaction #4 #4upage #love #4yp #4youpage #4up [7118546328543579434].mp4.part'


[download] Downloading video 5 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7113376735592205611: Downloading 1 format(s): bytevc1_720p_631869-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/f9c453e89808ab57b5f174c2d906c33d/62ee2d98/video/tos/maliva/tos-maliva-ve-0068c799-us/22d1dcf198a94ad3afc8e5523357c392/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=1234&bt=617&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=ZGU4NmczZDVmZ2k2ZmlmZ0BpM2c2ZTo6Zjt2ZDMzZzczNEAyYmNiMC4tNWExNGE1X14wYSNeNGA0cjRvZ29gLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: When they say “just apologize and be the  bigger person” #fyp #comedу #Love #comedian #lol #real #fypシ [7113376735592205611].mp4
[download] 100% of 447.60KiB in 00:00
[download] Downloading video 6 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7112133130332687662: Downloading 1 format(s): bytevc1_540p_627561-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/2458d9aca5e6cee4d9a64f033859347a/62ee2d9a/video/tos/maliva/tos-maliva-ve-0068c799-us/a455f67a874347359e8ef97fd0ba24b1/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=1224&bt=612&btag=80000&cs=2&ds=6&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=11&rc=M2VlZmc8OTRoPDZnOTNnNkBpM3VyOjU6ZmZvZDMzZzczNEAtYTQ1M2AtNWIxNjVjYi82YSM0Z20tcjRncW1gLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: The teacher said not today 😂😂😂 #viral #comedy #fyp #crazy #viralvideo #tiktok #explore #like #meme #love [7112133130332687662].mp4
[download] 100% of 558.39KiB in 00:00
[download] Downloading video 7 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7109472011830758699: Downloading 1 format(s): bytevc1_720p_739377-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/0b44fd43faac75068c054a33da0daef7/62ee2da6/video/tos/maliva/tos-maliva-ve-0068c799-us/13496285d15445fca6f81f67605a7695/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=1444&bt=722&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=Zjc0O2kzNzhmOTwzOGdlZ0BpMzVxOGQ6ZnB4ZDMzZzczNEBjYDAwYi1fXzExMWAxYDVhYSNxZmJecjRfaWhgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
ERROR: unable to open for writing: [Errno 2] No such file or directory: 'This coach tripping 😂😂😂  #fy #duet #fyp #fypシ #UFC #mma #viral #lol #comedy #humor #4u #4you #foryou #cute #foryourpage #foryoupage #forfun #memes #Love #follow #bestvideo #northcarolina #wilmington #wilmingtonnc #motivation #relatable #reaction #4 #4upage #love #4yp #4youpage #4up [7109472011830758699].mp4.part'
Traceback (most recent call last):
  File "yt_dlp\utils.py", line 625, in sanitize_open
yt_dlp.utils.LockingUnsupportedError: File locking is not supported

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "yt_dlp\downloader\http.py", line 269, in download
  File "yt_dlp\downloader\common.py", line 224, in inner
  File "yt_dlp\downloader\common.py", line 242, in sanitize_open
  File "yt_dlp\utils.py", line 628, in sanitize_open
FileNotFoundError: [Errno 2] No such file or directory: 'This coach tripping 😂😂😂  #fy #duet #fyp #fypシ #UFC #mma #viral #lol #comedy #humor #4u #4you #foryou #cute #foryourpage #foryoupage #forfun #memes #Love #follow #bestvideo #northcarolina #wilmington #wilmingtonnc #motivation #relatable #reaction #4 #4upage #love #4yp #4youpage #4up [7109472011830758699].mp4.part'


[download] Downloading video 8 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7106918221709610286: Downloading 1 format(s): h264_480p_595394-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/d45e6ae62195bbc5b42d21bbd9dc3ead/62ee2dae/video/tos/maliva/tos-maliva-ve-0068c799-us/956ee7c40ca1461f8e26c9c6f55f1582/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&br=1162&bt=581&btag=80000&cs=0&ds=2&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=0&rc=OTw5ZjQ4aWdlZjQ3Nzc8OkBpanNseTQ6ZjdmZDMzZzczNEA2NjJhYzM1NjMxNV4uYS01YSNkcmQtcjRnYGRgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: The monkey said “stop playing with me” 😂 #comedy #fyp #monkey #crazy #viralvideo #viral #northcarolina #tiktok #zoo [7106918221709610286].mp4
[download] 100% of 1.99MiB in 00:00
[download] Downloading video 9 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7106310886159273262: Downloading 1 format(s): bytevc1_720p_488311-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/e1dc7c6b1438b4cbaaaa87ad2a8fa7d4/62ee2d9b/video/tos/maliva/tos-maliva-ve-0068c799-us/3f06066c4ac84bffad14c733fed0b925/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=952&bt=476&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=Z2U5PDYzNTU0NGY4NjxlOEBpanNzZzs6ZmVkZDMzZzczNEA1NC1fLzFhX2ExLzRhNGEyYSNkal5ycjRncGNgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: Sad but true …🤦🏾‍♂️😂😂😂 #fyp #crazy #comedy #viralvideo #viral #tiktok #northcarolina [7106310886159273262].mp4
[download] 100% of 492.60KiB in 00:00
[download] Downloading video 10 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7105591480500112682: Downloading 1 format(s): bytevc1_720p_284087-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/0956818d7b958182611f0c262eb490f8/62ee2d9e/video/tos/maliva/tos-maliva-ve-0068c799-us/ad6e1bdc06b243cc902bc1f4f071135a/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=554&bt=277&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=N2U8ZzppO2Q8NDc0ZjllOEBpM3NmZzs6Znc1ZDMzZzczNEAwYzMtMF4vXjMxXzY1YC5fYSNxLzZycjRvL2JgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: Tesla drivers be doing the most 😂😂😂 #tesla #car #comedy #tiktok #Love #viral #viralvideo #meme #follow #like #explore [7105591480500112682].mp4
[download] 100% of 416.21KiB in 00:00
[download] Downloading video 11 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7105573182391815466: Downloading 1 format(s): bytevc1_720p_506227-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/d6bba4e0b575cdbf0a97c78157a9ca9b/62ee2d9b/video/tos/maliva/tos-maliva-ve-0068c799-us/351c3ef7058a47a9a845ba0ac6bb12d1/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=988&bt=494&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=ZzplaGgzOzs7ZTYzZWhmNkBpampuPGc6ZnY0ZDMzZzczNEA0YS0xMTEyNWMxNC1fYjEuYSNeaWNvcjRvLmJgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: Dogs out here tweaking 😂😂😂🤦🏾‍♂️ #comedy #tiktok #Love #viral #viralvideo #meme [7105573182391815466].mp4
[download] 100% of 515.25KiB in 00:00
[download] Downloading video 12 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7105158005729053995: Downloading 1 format(s): bytevc1_720p_289734-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/3a9aedbe095787c566f1eef850ebcc2a/62ee2d9e/video/tos/maliva/tos-maliva-ve-0068c799-us/346b76827e7640a0ac8d2c51941f6be5/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=564&bt=282&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=NjplaDVoaDlpNjgzaDlpNkBpMzdmbjo6ZnY8ZDMzZzczNEAtLzZeLzViXy4xXzEvXjAzYSNvMW02cjRnXmFgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: When they have been holding it in until you went to sleep 😂😂😂 #comedy #tiktok  #Love #viral #viralvideo #like #follow #explore #meme [7105158005729053995].mp4
[download] 100% of 427.78KiB in 00:00
[download] Downloading video 13 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7104727778091617578: Downloading 1 format(s): bytevc1_720p_653612-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/518bd3e5a1972f0fba41c2c0a0dc13ca/62ee2d9d/video/tos/maliva/tos-maliva-ve-0068c799-us/7c107dc242f74bac8976e30639930ad2/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=1276&bt=638&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=Omk7ZmY6PDRlOzg0NTg7Z0BpanJ2czw6ZnlqZDMzZzczNEAyMy9jMy0uNTExNjZgX2FgYSMzNmItcjRfcmBgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: That boy changed up right before our eyes 😂😂😂 #fyp #mma #UFC #Love #florida #texas #northcarolina #comedy #fun #funny [7104727778091617578].mp4
[download] 100% of 861.30KiB in 00:00
[download] Downloading video 14 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7104460637731818798: Downloading 1 format(s): bytevc1_540p_371221-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/fa0c8f360d3b610ed9edfbffe6acb5af/62ee2d9a/video/tos/maliva/tos-maliva-ve-0068c799-us/e4fdb325727f4dee8cc810afb1d8c03d/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=724&bt=362&btag=80000&cs=2&ds=6&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=11&rc=ZWU7OjxlNzg3NTdmZmc1OkBpamZsdDQ6ZnM0ZDMzZzczNEAyLl4zYTMxNWMxMTA1NC1gYSNsYXBpcjRvbWBgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: I felt his pain 😬😂  #florida #texas #california #funny #fun #funnyvideos [7104460637731818798].mp4
[download] 100% of 337.64KiB in 00:00
[download] Downloading video 15 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7104326389247118635: Downloading 1 format(s): bytevc1_720p_284312-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/3ee9363eec217356b7878d210e0eb761/62ee2d9d/video/tos/maliva/tos-maliva-ve-0068c799-us/a6aa61e90ea044bb97c1f4029579964a/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=554&bt=277&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=ZDtnODRoNjdnODs5OWVlNEBpamZtZzs6ZjR0ZDMzZzczNEAyNTBhLjMuX18xMi01Yl41YSNjLWJycjRfM19gLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
ERROR: unable to open for writing: [Errno 2] No such file or directory: 'Where did that bird come from 😂�😂  #fy #duet #fyp #fypシ #UFC #mma #viral #lol #comedy #humor #4u #4you #foryou #cute #foryourpage #foryoupage #forfun #memes #Love #follow #bestvideo #northcarolina #wilmington #wilmingtonnc #motivation #relatable #reaction #4 #4upage #love #4yp #4youpage #4up [7104326389247118635].mp4.part'
Traceback (most recent call last):
  File "yt_dlp\utils.py", line 625, in sanitize_open
yt_dlp.utils.LockingUnsupportedError: File locking is not supported

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "yt_dlp\downloader\http.py", line 269, in download
  File "yt_dlp\downloader\common.py", line 224, in inner
  File "yt_dlp\downloader\common.py", line 242, in sanitize_open
  File "yt_dlp\utils.py", line 628, in sanitize_open
FileNotFoundError: [Errno 2] No such file or directory: 'Where did that bird come from 😂😂😂 #fy #duet #fyp #fypシ #UFC #mma #viral #lol #comedy #humor #4u #4you #foryou #cute #foryourpage #foryoupage #forfun #memes #Love #follow #bestvideo #northcarolina #wilmington #wilmingtonnc #motivation #relatable #reaction #4 #4upage #love #4yp #4youpage #4up [7104326389247118635].mp4.part'


[download] Downloading video 16 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7104277171262344491: Downloading 1 format(s): bytevc1_540p_391996-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/e68494b21a826a8795fe94fb53c4e521/62ee2da9/video/tos/maliva/tos-maliva-ve-0068c799-us/172c9c6bd29c42acabf52b3dd1ceb84b/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=764&bt=382&btag=80000&cs=2&ds=6&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=11&rc=Njo1Ojc7aTg2ZDNlNGVpZUBpM2xrZjg6ZmhxZDMzZzczNEBjYjE2LS0wNS0xLmFgMjEzYSNeYS9lcjQwYF9gLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: I thought he was going to be tall 😂😂😂 #fyp #4u #comedy #UFC #mma [7104277171262344491].mp4
[download] 100% of 1.06MiB in 00:00
[download] Downloading video 17 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7103972441608752427: Downloading 1 format(s): bytevc1_720p_216082-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/55f29ffee0263d082a70d829e5302c3a/62ee2d9c/video/tos/maliva/tos-maliva-ve-0068c799-us/af60c09795c2419aa3cafb9a152ad072/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=422&bt=211&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=Zzs1MzU4NjRkZmQ6aGZkOkBpamk8OTk6ZnU4ZDMzZzczNEBiYjNjYC82Xi4xNmBfMDNhYSMxZV9ycjRvbF9gLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: This kid thought he was about to be on tv 😂😂😂😭😭😭 #fyp #viral #comedy #humor [7103972441608752427].mp4
[download] 100% of 247.39KiB in 00:00
[download] Downloading video 18 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7103355259791150379: Downloading 1 format(s): bytevc1_540p_437120-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/58e030683a2f13be59a9eca8198cf444/62ee2d98/video/tos/maliva/tos-maliva-ve-0068c799-us/21d3f187f81a40a98cd9135e2cb1108c/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=852&bt=426&btag=80000&cs=2&ds=6&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=11&rc=ODRmZDg0O2g4Nmk4Ozk1OUBpMztvZzQ6Zmo1ZDMzZzczNEAuLTAwYV5gXl4xYjJiNjIuYSNmYl9ncjRfc15gLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: He was about to go off 😂😂😂 #fyp #fypシ #UFC #mma #viral #comedy [7103355259791150379].mp4
[download] 100% of 309.64KiB in 00:00
[download] Downloading video 19 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7102992705193594158: Downloading 1 format(s): bytevc1_540p_625485-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/0b39ee1c52ebad17517c16a7c0f300c0/62ee2d9b/video/tos/maliva/tos-maliva-ve-0068c799-us/c0cab064a39e40b28617c2adf9ae7401/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=1220&bt=610&btag=80000&cs=2&ds=6&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=11&rc=OTM2Njw0NWU8Nmc8aTk3NUBpanA7czM6ZnNoZDMzZzczNEBiYzEyLS8uNS4xNF5jMV9iYSMzNXM1cjRfXzZgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: Rick Ross broke the camel 🐪 😂😂😂 #fyp #fy #fypシ #UFC #mma #rap [7102992705193594158].mp4
[download] 100% of 661.14KiB in 00:00
[download] Downloading video 20 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7102879710673259818: Downloading 1 format(s): bytevc1_720p_447137-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/b365692ce70d82dcbcc2e1f09adcb5af/62ee2da0/video/tos/maliva/tos-maliva-ve-0068c799-us/7956776175e6449990d911999970b16e/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=872&bt=436&btag=80000&cs=2&ds=3&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=14&rc=Nzo0NWc4OWgzN2k2aTs8ZUBpajs8eTQ6Zm46ZDMzZzczNEAyNGIyYjZiNl4xNF4wXzIzYSNebWQtcjRvcjZgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
[download] Destination: I would try this 😂😂😂 [7102879710673259818].mp4
[download] 100% of 748.92KiB in 00:00
[download] Downloading video 21 of 22
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7102236029242854699: Downloading 1 format(s): bytevc1_540p_510336-2
[debug] Invoking http downloader on "https://v25.tiktokcdn.com/1054e96541db704255975e77e254d0fa/62ee2d9a/video/tos/maliva/tos-maliva-ve-0068c799-us/405cee4f820f4e999718e616744407e9/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=996&bt=498&btag=80000&cs=2&ds=6&ft=btGwH-qMRQ8ZmoiSobx_vjSwmSmDLr&mime_type=video_mp4&qs=11&rc=OzNpPGk4ZDs0ZzY5NTY6Z0Bpamxyczw6Zng2ZDMzZzczNEAuMWEyMzUtXl4xMS0vXjE0YSNhNjYtcjRnXjVgLS1kMS9zcw%3D%3D&l=20220806030001010244077074030EFADA&cc=e"
ERROR: unable to open for writing: [Errno 2] No such file or directory: 'What am I watching 😂😂😂 #fy #duet #fyp #fypシ #UFC #mma #viral #lol #comedy #humor #4u #4you #foryou #cute #foryourpage #foryoupage #forfun #memes #Love #follow #bestvideo #northcarolina #wilmington #wilmingtonnc #motivation #relatable #reaction #4 #4upage #love #4yp #4youpage #4up [7102236029242854699].mp4.part'
Traceback (most recent call last):
  File "yt_dlp\utils.py", line 625, in sanitize_open
yt_dlp.utils.LockingUnsupportedError: File locking is not supported

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "yt_dlp\downloader\http.py", line 269, in download
  File "yt_dlp\downloader\common.py", line 224, in inner
  File "yt_dlp\downloader\common.py", line 242, in sanitize_open
  File "yt_dlp\utils.py", line 628, in sanitize_open
FileNotFoundError: [Errno 2] No such file or directory: 'What am I watching 😂😂😂 #fy #duet #fyp #fypシ #UFC #mma #viral #lol #comedy #humor #4u #4you #foryou #cute #foryourpage #foryoupage #forfun #memes #Love #follow #bestvideo #northcarolina #wilmington #wilmingtonnc #motivation #relatable #reaction #4 #4upage #love #4yp #4youpage #4up [7102236029242854699].mp4.part'


[download] Finished downloading playlist: derekbrunsonmma```

I can confirm that 1, 2, and 5 are fixed. I have not yet confirmed 3 and 4 are fixed; I will be able to test them in a little under 12 hours, and would be happy to do so if no one else is inclined.

yt-dlp --add-header 'user-agent:Mozilla/5.0' https://tiktok.com/@videozeugs
[tiktok:user] Setting up session
WARNING: [tiktok:user] Unable to download webpage: [Errno 60] Operation timed out
[tiktok:user] videozeugs: Downloading webpage
ERROR: [tiktok:user] videozeugs: Unable to download webpage: [Errno 60] Operation timed out (caused by TimeoutError(60, 'Operation timed out')); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

😦

@pukkandan I forked this repo and merged your branch into my copy. Build was successful; it addresses point 5, but unfortunately, point 1 is still broken.

Re: point 5:

λ › ~/yt-dlp/yt-dlp "https://www.tiktok.com/@uwumi/video/7108144227934227758" -vU -o "%(upload_date)s-%(id)s.%(ext)s"
[debug] Command-line config: ['https://www.tiktok.com/@uwumi/video/7108144227934227758', '-vU', '-o', '%(upload_date)s-%(id)s.%(ext)s']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.05.18 [b14d52355] (zip)
[debug] Plugins: ['SamplePluginIE', 'SamplePluginPP']
[debug] Python version 3.9.13 (CPython 64bit) - Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.31
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 5.0.1 (setts), ffprobe 5.0.1, phantomjs 2.1.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.14.1, brotli-1.0.9, certifi-2022.05.18.1, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.1
[debug] Proxy map: {}
Latest version: 2022.05.18, Current version: 2022.05.18
yt-dlp is up to date (2022.05.18)
[TikTok] Setting up session
WARNING: [TikTok] Unable to download webpage: The read operation timed out
[debug] [TikTok] Extracting URL: https://www.tiktok.com/@uwumi/video/7108144227934227758
[TikTok] 7108144227934227758: Downloading video details
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7108144227934227758: Downloading 1 format(s): bytevc1_720p_509343-2
[debug] Invoking http downloader on "https://v19.tiktokcdn.com/29dedec4b29b235978093946daba4e8d/62a90e2e/video/tos/maliva/tos-maliva-ve-0068c799-us/30c1f071a9234740a3c1af8ea8cc66e3/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=994&bt=497&btag=80000&cs=2&ds=3&ft=FEedZWD0p7122jajux4UxLBi6cHC~bwQ-4uIn&mime_type=video_mp4&qs=14&rc=O2U6ZDg6NTc5OTZlNThpZUBpM2c0OTk6ZjhtZDMzZzczNEAvLi0xNjAwXjExNjFeMl8yYSNmNmBycjQwLWZgLS1kMS9zcw%3D%3D&l=2022061416392701024504011102253977&cc=4"
[download] Destination: 20220612-7108144227934227758.mp4
[download] 100% of 949.80KiB in 00:00

As for point 1:

λ › ~/yt-dlp/yt-dlp "https://www.tiktok.com/@uwumi" -vU -o "%(upload_date)s-%(id)s.%(ext)s"
[debug] Command-line config: ['https://www.tiktok.com/@uwumi', '-vU', '-o', '%(upload_date)s-%(id)s.%(ext)s']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.05.18 [b14d52355] (zip)
[debug] Plugins: ['SamplePluginIE', 'SamplePluginPP']
[debug] Python version 3.9.13 (CPython 64bit) - Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.31
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 5.0.1 (setts), ffprobe 5.0.1, phantomjs 2.1.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.14.1, brotli-1.0.9, certifi-2022.05.18.1, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.1
[debug] Proxy map: {}
Latest version: 2022.05.18, Current version: 2022.05.18
yt-dlp is up to date (2022.05.18)
[tiktok:user] Setting up session
WARNING: [tiktok:user] Unable to download webpage: The read operation timed out
[debug] [tiktok:user] Extracting URL: https://www.tiktok.com/@uwumi
[tiktok:user] uwumi: Downloading webpage
WARNING: [tiktok:user] API-based extraction is known to be broken; trying with webpage
ERROR: the JSON object must be str, bytes or bytearray, not NoneType
Traceback (most recent call last):
  File "/home/j/yt-dlp/yt-dlp/yt_dlp/extractor/tiktok.py", line 675, in _real_extract
    raise ExtractorError('API-based extraction is known to be broken')
yt_dlp.utils.ExtractorError: API-based extraction is known to be broken; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/j/yt-dlp/yt-dlp/yt_dlp/YoutubeDL.py", line 1420, in wrapper
    return func(self, *args, **kwargs)
  File "/home/j/yt-dlp/yt-dlp/yt_dlp/YoutubeDL.py", line 1490, in __extract_info
    ie_result = ie.extract(url)
  File "/home/j/yt-dlp/yt-dlp/yt_dlp/extractor/common.py", line 642, in extract
    ie_result = self._real_extract(url)
  File "/home/j/yt-dlp/yt-dlp/yt_dlp/extractor/tiktok.py", line 679, in _real_extract
    return self._extract_from_webpage(user_id, user_name, webpage)
  File "/home/j/yt-dlp/yt-dlp/yt_dlp/extractor/tiktok.py", line 662, in _extract_from_webpage
    item_data = self._get_sigi_state(webpage, user_name)['ItemList']['user-post']
  File "/home/j/yt-dlp/yt-dlp/yt_dlp/extractor/tiktok.py", line 45, in _get_sigi_state
    return self._parse_json(get_element_by_id(
  File "/home/j/yt-dlp/yt-dlp/yt_dlp/extractor/common.py", line 936, in _parse_json
    return json.loads(
  File "/home/linuxbrew/.linuxbrew/Cellar/python@3.9/3.9.13_1/lib/python3.9/json/__init__.py", line 339, in loads
    raise TypeError(f'the JSON object must be str, bytes or bytearray, '
TypeError: the JSON object must be str, bytes or bytearray, not NoneType

As far as I can tell, the error produced here is novel, which would indicate some progress has been made towards downloading user pages, but not a total fix. I’m testing on Ubuntu 20.04.4 via WSL, using a residential Internet connection in the USA.

It works perfectly now.

Unfortunately, “vm” user profile links are still not working for me here in Canada. I also have “version 2022.05.18” as @D3SOX mentioned - but I get the timeout error.

Just tried it today on May 25th. Not an IP issue, because I can load same profiles on browser or app without trouble.

It works perfectly now.

and then disable the hardcoded “Connection”=“close” header with a flag, a ye-olde issue from urllib: python/cpython@137fd3d/Lib/urllib/request.py#L1333 After doing that other user-agents and headers work in testing also.

@kjerk Can you share the code you used for testing this?

@pukkandan I uploaded a branch for this https://github.com/kjerk/yt-dlp/tree/ISSUE-3776 and you can see the commit details here kjerk@de4a600 . This allows the request to go through and removes the hardcoded user agent (with the UA it still hangs), but I hadn’t proposed it as a real fix because then the self._video_entries_api() still returns empty as people have been saying, likely needing reinvestigation to figure out what happened to that api if that’s still something this fork wants to keep using, as opposed to page scraping shrug

I see what you are saying about TT blocking based on Connection: close / no persistent connections.

Copying in the updated extractor from master to #3668 and removing the hardcoded header (so we use the yt-dlp generated one), I get the same behaviour as your branch. When I use --no-persistent-connections it gets the same timeout.

Though with removing the hardcoded header, and using --add-header 'user-agent:Mozilla/5.0' as specified above works too, even with Connection:close.

Related: https://github.com/python/cpython/issues/57058

and then disable the hardcoded “Connection”=“close” header with a flag, a ye-olde issue from urllib: python/cpython@137fd3d/Lib/urllib/request.py#L1333 After doing that other user-agents and headers work in testing also.

@kjerk Can you share the code you used for testing this?

@pukkandan I uploaded a branch for this https://github.com/kjerk/yt-dlp/tree/ISSUE-3776 and you can see the commit details here https://github.com/kjerk/yt-dlp/commit/de4a6005e70f81f0f88807a368895a6da852a24b . This allows the request to go through and removes the hardcoded user agent (with the UA it still hangs), but I hadn’t proposed it as a real fix because then the self._video_entries_api() still returns empty as people have been saying, likely needing reinvestigation to figure out what happened to that api if that’s still something this fork wants to keep using, as opposed to page scraping 🤷

Workaround which just uses curl to get the redirect target and then passes it down to yt-dlp for the actual download :

curl -o /dev/null --silent https://vm.tiktok.com/foobar -w '%{redirect_url}' | yt-dlp -a -

Crude, but worked for me.

Indeed, that is a shortcut URL and so the UA command-line option doesn’t solve the problem.

❯ yt-dlp https://www.tiktok.com/@lapupidu/video/7097189476610411782\?_t\=8SP564fJZX4\&_r\=1 --add-header 'user-agent:Mozilla/5.0' -vU
[debug] Command-line config: ['https://www.tiktok.com/@lapupidu/video/7097189476610411782?_t=8SP564fJZX4&_r=1', '--add-header', 'user-agent:Mozilla/5.0', '-vU']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, err utf-8, pref UTF-8
[debug] yt-dlp version 2022.04.08 [7884ade65]
[debug] Python version 3.10.4 (CPython 64bit) - Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.35
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: avconv -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] Checking exe version: avprobe -bsfs
[debug] exe versions: none
[debug] Optional libraries: brotli, certifi, Cryptodome, mutagen, sqlite, websockets
[debug] Proxy map: {}
Latest version: 2022.05.18, Current version: 2022.04.08
ERROR: It looks like you installed yt-dlp with a package manager, pip or setup.py; Use that to update
[debug] [TikTok] Extracting URL: https://www.tiktok.com/@lapupidu/video/7097189476610411782?_t=8SP564fJZX4&_r=1
[TikTok] 7097189476610411782: Downloading video details
[debug] Sort order given by extractor: quality, codec, size, br
[debug] Formats sorted by: hasvid, ie_pref, quality, vcodec, acodec, filesize, fs_approx, tbr, vbr, abr, lang, res, fps, hdr:12(7), asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: best/bestvideo+bestaudio
[info] 7097189476610411782: Downloading 1 format(s): bytevc1_720p_449179-2
[debug] Invoking downloader on "https://v16m.tiktokcdn.com/4307f376d86f7117d5662429dcbdd26b/628559dd/video/tos/useast2a/tos-useast2a-pve-0068/66457562e9b64c90b51b4401a1b5816a/?a=1180&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=876&bt=438&cs=2&ds=3&ft=ARJagBiTq_2mo0PcHBJfkVQJcTba_KJ&mime_type=video_mp4&qs=14&rc=ZTw1aGQ7aDo7PDw4ODk3NkBpMzNuazw6ZmQ3PDMzNzczM0BgLmBiYi82NS8xLi1iNV4vYSNrYC4ucjRfZHNgLS1kMTZzcw%3D%3D&l=20220518144032010245034015071691A3"
[download] Destination: #fyp #kendalljenner #cucumber [7097189476610411782].mp4
[download] 100% of 1.60MiB in 00:00

really, it worked