Site request: Support for loom.com
See original GitHub issueChecklist
- I’m reporting a new site support request
- I’ve verified that I’m running youtube-dl version 2021.01.24.1 (I’m not actually running 2021.01.24.1; I’m running 2021.01.16 since that’s the latest version in the AUR, but I check the changelog and the site was not supported between these releases.)
- I’ve checked that all provided URLs are alive and playable in a browser
- I’ve searched the bugtracker for similar site support requests including closed ones
- I’ve checked that none of provided URLs violate any copyrights
Example URLs
- Single video: https://www.loom.com/share/31b41727a5b24dacb6c1417a565b2ebf
- Single video: https://www.loom.com/share/7e5168ec3b0744cab5e08a340cc7e086
- Single video: https://www.loom.com/share/6670e3eba3c84dc09ada8306c7138075
- Single video: https://www.loom.com/share/1cbc30216c734fe8b00b75dc204aff10
- Single video: https://www.loom.com/share/06ce552577fe49dfaa14015615549c90
- Single video: https://www.loom.com/share/b0d309c31e73405a9960dd88f5d48065
- Single video: https://www.loom.com/share/61759639b44a4ef1a6ef1764a6bc3253
- Playlist: I don’t believe loom has playlists. Could be wrong though.
(More can be found by just searching for site:loom.com/share
on a search engine like duckduckgo or google. These are just from their help pages.)
Description
From what I understood from the loom website, it’s basically like a shitier version of youtube that doesn’t have public videos and requires you to install an extension/desktop app instead of using OBS. So basically worthless.
But, for some reason, my teacher decided to use it for a video she put up. (Since I don’t want to dox myself, I just put support videos in the example URL list.) And since she was talking stupidly slowly, so I wanted to download it and then watch it. Turns out youtube-dl didn’t already have that capability, so I’m opening an issue for it.
Anyway, the site seems to be simple enough. Ignoring their fancy JS player, the video turns out to literally just be a webm video that’s downloaded from their cdn. (If you check the network logs when you watch a video, it seems to send a request with a URL that looks like: https://cdn.loom.com/sessions/raw/[VIDEO-ID].webm?Expires=[EXPIRY-TIME]&Policy=[POLICY-VALUE]&Signature=[SIGNATURE-VALUE]&Key-Pair-Id=[KEY-PAIR]
. (Where [VIDEO-ID]
is from the main URL: https://www.loom.com/share/[VIDEO-ID]
)
I don’t know where the POLICY-VALUE
, SIGNATURE-VALUE
, or KEY-PAIR
come from. It seems that the entire Expires=[EXPIRY-TIME]&
item can be removed, without it changing anything. (Though, if you remove the policy, it will say that it’s missing the expiry. Not sure why, since it works without the expiry… Though, that could be unintentional on their end, and might be patched at some point.)
This URL comes from a request the browser makes to the https://www.loom.com/api/campaigns/sessions/[VIDEO-ID]/raw-url
URL, which returns a JSON formatted string, where the url
key holds the reference to the cdn.
If I just take that URL and do youtube-dl https://cdn.loom.com/sessions/raw/. . .
, then it’ll download the webm video properly. So implementing this shouldn’t be too hard, just parse the video id, POST the endpoint for the cdn URL, and then download that like a normal webm/etc. video.
Though, checking another URL it also seems to have this other video with a .ts
extension?? idk, mpv says it’s the mpegts
format, encoded in h264. I don’t recognize that format though.
The URL I got that from is here. It also seems to have split that video into multiple parts, but I don’t think it did that on other videos. Idk, I didn’t look into how this works that much since I’m lazy.
If you guys decide not to implement this (because nobody uses this service), I’m fine with that too. I just wanted to make this because it seems like it’d be trivially easy to implement. (I would make a PR for it myself, except I’m a java developer and my python code looks like shit. You probably wouldn’t want it anyway.)
Issue Analytics
- State:
- Created 3 years ago
- Reactions:2
- Comments:10
Top GitHub Comments
for this link - https://www.loom.com/share/31b41727a5b24dacb6c1417a565b2ebf press F12 on your keyboard to bring up the debug menu, go to network - media, type mp4 in the search box, look for the link that has .mp4 at the end, copy the link and feed it into youtube-dl to download the video. (NOTE: for some reason i am only able to get a partial video to download and not the complete clip). if i use the add-on video download helper, i am able to grab the complete video.
Looking forward for this PR