How to Download Twitter Spaces That Aren't Yours

I recently caught the tail end of a TimescaleDB Twitter space that I wanted to snip for my mixtape in future. Spaces are only saved for a few days so if you want them beyond that you will have to download it. However, Twitter only lets the host of the space download. I tried using youtube-dl for it but it is currently unsupported.

Fortunately 89z on GitHub is very actively maintaining his own project that interfaces with some arbitrary social media: https://github.com/89z/mech and answered my questions enough to get me using it!

The project bundles releases only for Windows, so here’s a quick sequence of instructions for Mac.

Prerequisites

In case you are a nontechnical person arriving from Google - these instructions are meant for developers but written out step by step as faithfully as I can. The only prerequisite you need is:

but I won’t spend any time teaching you how to use the terminal.

First get the Space ID

The primary piece of knowledge you need is the Twitter Space ID. Given a Twitter space URL https://twitter.com/i/spaces/1YqGoprjyQEJv, the space ID is 1YqGoprjyQEJv. No API key is needed as far as I can tell, which is just peachy.

IMPORTANT - this process does not work for Twitter Super Follows Spaces as far as I can tell. If you are a developer, you MAY be able to fork the project to modify it. Let me know if you do.

The quickest way (June 2022)

I’ve now had enough support load that i realize I should just upload the binary myself so you can just use it.

If you trust that i’m not doing anything funky, go to https://github.com/sw-yx/mech/releases/tag/swyx-fork-v1 and download that twitter binary to somewhere local.

then, open your terminal to the same folder where that binary exists, and:

chmod +x twitter # for first time only
./twitter -c YOUR_SPACE_ID_HERE   

You may need to also set permissions in System Preferences.

Instructions to compile it yourself (May 2022)

We’re going to use @89z’s mech project, but as of the time that he used to support Twitter Spaces. so bear with me:

# make sure you have `git` installed!
git clone https://github.com/89z/mech
cd mech
git reset 5b977a09590b883584662a656a14d393337411c1 --hard # old twitter functionality was removed https://github.com/89z/mech/issues/71
cd cmd/twitter
# make sure you have `go` installed!
go build

This builds a binary called twitter which you can run:

# mac
./twitter -c YOUR_SPACE_ID_HERE   
# windows
twitter -c YOUR_SPACE_ID_HERE   

This starts the download:

$ ./twitter -c 1YqGoprjyQEJv    
POST https://api.twitter.com/1.1/guest/activate.json
GET https://twitter.com/i/api/graphql/Uv5R_-Chxbn1FEkyUkSW2w/AudioSpaceById?variables=%7B%22id%22%3A%221RDGlgoYkDkKL%22%2C%22isMetatagsQuery%22%3Afalse%2C%22withBirdwatchPivots%22%3Afalse%2C%22withDownvotePerspective%22%3Afalse%2C%22withReactionsMetadata%22%3Afalse%2C%22withReactionsPerspective%22%3Afalse%2C%22withReplays%22%3Afalse%2C%22withScheduledSpaces%22%3Afalse%2C%22withSuperFollowsTweetFields%22%3Afalse%2C%22withSuperFollowsUserFields%22%3Afalse%7D
GET https://twitter.com/i/api/1.1/live_video_stream/status/28_1496228425874374659
GET https://prod-fastly-us-east-1.video.pscp.tv/Transcoding/v1/hls/Ze8MHZCOuvGIbhBQYBAevAIotnQEwAixsGxoUgsOOJaJsf0Qm6Kxhwt3JH77MIxknSr_2nobkgkUDyYP9YwzbQ/non_transcode/us-east-1/periscope-replay-direct-prod-us-east-1-public/audio-space/playlist_16801097405082696033.m3u8?type=replay
0/1299 /Transcoding/v1/hls/Ze8MHZCOuvGIbhBQYBAevAIotnQEwAixsGxoUgsOOJaJsf0Qm6Kxhwt3JH77MIxknSr_2nobkgkUDyYP9YwzbQ/non_transcode/us-east-1/periscope-replay-direct-prod-us-east-1-public/audio-space/chunk_1645642768437487255_0_a.aac
1/1299 /Transcoding/v1/hls/Ze8MHZCOuvGIbhBQYBAevAIotnQEwAixsGxoUgsOOJaJsf0Qm6Kxhwt3JH77MIxknSr_2nobkgkUDyYP9YwzbQ/non_transcode/us-east-1/periscope-replay-direct-prod-us-east-1-public/audio-space/chunk_1645642768440813639_1_a.aac
2/1299 /Transcoding/v1/hls/Ze8MHZCOuvGIbhBQYBAevAIotnQEwAixsGxoUgsOOJaJsf0Qm6Kxhwt3JH77MIxknSr_2nobkgkUDyYP9YwzbQ/non_transc
# and so on...

The final file is an aac file which is still annoying but at least convertible and playable in Audacity.

image

Old Instructions (Feb 2022)

# make sure you have `git` installed!
git clone https://github.com/89z/mech
cd mech
# update: v1.49 onwards has the twitter spaces support again! https://github.com/89z/mech/issues/18#issuecomment-1058789325
git reset --hard v1.46.6 # only if you need to pin to a specific version that supports Twitter spaces, otherwise delete this line
cd cmd/twitter
go build

Tagged in: #tips

Reactions: 👍 6 🎉 4
Loading comments...
Webmentions
Loading...

Subscribe to the newsletter

Join >10,000 subscribers getting occasional updates on new posts and projects!

I also write an AI newsletter and a DevRel/DevTools newsletter.

Latest Posts

Search and see all content