As with many things, the solution is ffmpeg. After I got that upsell thing when I tried to download a video about a week ago, I found the correct ffmpeg incantation, mostly out of spite for Twitter. If you find the m3u8 request in devtools on a tweet, you can use something like the following:
ffmpeg -i 'https://video.twimg.com/ext_tw_video/1846357395959615488/pu/pl/ecNx-sTzYA9doHYO.m3u8' -analyzeduration 5G -codec:a libmp3lame -b:a 96k output.mp4
(if anyone runs that command...you're welcome for the meme, unfortunately I don't know where it came from)
You probably get the same result in the end, but yt-dlp can also do this if you point it at the m3u8 file.
(Actually I just checked and it also supports downloading Twitter videos directly.)