Skip to content(if available)orjump to list(if available)

Show HN: I made a Bluesky video downloader

Show HN: I made a Bluesky video downloader

61 comments

·October 25, 2024

Hey HN,

Recently, a friend introduced me to the Bluesky platform, and I found it intriguing—especially its focus on decentralization. I believe it has the potential to become the next Twitter, and it already has over 13 million users.

Today, as I was browsing the platform, I came across a video in one of the posts that I found really interesting and wanted to download to my local drive. However, after searching for a while, I couldn’t find a suitable tool for this purpose.

So, I thought, why not create a tool to meet this need? All it should require is the link to a post, and it would allow users to download the embedded video directly to their local storage.

With Cursor’s help, I managed to complete this tool in just one day. It’s now fully functional and can download videos from Bluesky posts.

I'm thrilled to share this tool with everyone, and I hope you find it useful.

would love your feedback pls

Charles

Retr0id

Am I missing something, or are you just concatenating the MPEG-TS segments and slapping an .mp4 file extension on the end? This is not an MP4 file, and won't play in anything that expects .mp4 files to be MP4 files. (It'll still work in a surprising number of places because most players ignore the file extension and sniff the content anyway)

To make this work properly, you need to mux it into an mp4 container. e.g.

    ffmpeg -i video.ts -c copy video.mp4
(there are, hopefully, libraries for doing this that don't involve bundling the whole of ffmpeg)

Equal46

Clearly, he based it on the open-source code from GitHub, which simply concatenates the MPEG-TS segments and adds an .mp4 file extension at the end. You can check out my previous work on a download site for the Bluesky platform at https://blueskyvideodownload.com, which runs smoothly and returns the correct video.

Retr0id

Fascinating, your site looks so similar I wouldn't be surprised if one was a clone of the other.

But, I checked yours out and can confirm that it returns a correctly muxed MP4.

Maybe if you both open-sourced your codebases we could've avoided this duplication ;)

Equal46

Haha, I appreciate the observation! As a backend developer, I’m definitely more comfortable with the backend processes. But I also used Claude for the frontend, and while AI helps maintain a consistent aesthetic, it does lead to similar responses for everyone. That’s one of the downsides of relying on AI!

Equal46

Appreciate the feedback—it got me thinking the design needed a real upgrade. So, I went back and gave the whole layout a fresh look. Check it out—feels like a new experience, right? Definitely a step up from before. Let me know what you think!

yangxiaobo

Great suggestion, haha!

yangxiaobo

Your website looks great, and the downloaded videos work fine. Thumbs up to you!

yangxiaobo

Thank you very much for your feedback. I downloaded the video through this program, but it couldn't be played in the default player. However, it worked in another video player. I initially thought the issue was with my default player, but it seems there’s a slight flaw in the video downloaded by the program. Thank you for your feedback; I'll fix it as soon as possible.

yangxiaobo

As you mentioned, it was indeed just a simple change of the .mp4 extension. I have now fixed this issue using ffmpeg, as you suggested. Thank you very much for your feedback.

reportgunner

On firefox you can click the lock icon in the address bar -> connection secure -> more information -> media tab -> sort by 'Type' to find 'Video' -> rightclick that entry and click 'Copy' -> paste in address bar of new tab -> rightclick video -> 'Save video As'

This works on most websites that serve you videos.

Retr0id

This does not work for sites that serve videos in a segmented format, such as bluesky

reportgunner

I downloaded a video off bluesky this way before posting, I didn't check if the whole video got downloaded though, just the extension.

You are right that some websites give you .m3u or some kind of .htm that is not the actual video this way.

Retr0id

You presumably downloaded the first TS segment (in MPEG-TS format, not MP4), which could plausibly have been the whole video if it was short enough.

notpushkin

Amusing title.

Maybe also make one of those bots that you can tag to get a video link?

yangxiaobo

Sounds interesting, but I don't quite understand what it specifically is. What problem is it aiming to solve?

dsab

It is a shame that "decentralized" social network does not allow you to download videos

pfraze

The download button got cut for time. We don't have anything against it.

facialwipe

Everyone connects to the Bluesky PDS (Personal Data Server) otherwise they won’t have anyone to interact with. Similar story on Mastodon.

Decentralized in protocol only. Not in practice.

orwin

Depends what you call "in practice". If i can make my own client, it's decentralized enough.

GaryNumanVevo

Neat project! cobalt.tools already supports bluesky video downloads FYI.

uncharted9

Thanks for mentioning Cobalt. Looks really neat and supports all the places I might need to download videos from.

GaryNumanVevo

No problem, I self host a Cobalt instance on my NAS for caching youtube videos for my kids.

Retr0id

fwiw cobalt.tools already has support for downloading bluesky videos

https://github.com/imputnet/cobalt

Equal46

“Haha, I appreciate the observation! As a backend developer, I’m definitely more comfortable with the backend processes. But I also used Claude for the frontend, and while AI helps maintain a consistent aesthetic, it does lead to similar responses for everyone. That’s one of the downsides of relying on AI!”

“Appreciate the feedback—it got me thinking the design needed a real upgrade. So, I went back and gave the whole layout a fresh look. Check it out—feels like a new experience, right? Definitely a step up from before. Let me know what you think!”

Sometimes I can see the comments, and other times I can’t. But I just want you to know, I appreciate your insights!

gregoriol

Why not use yt-dlp?

yangxiaobo

Wow, what a powerful open-source project! I hadn't come across it before—thank you for the suggestion!

zorked

Looks good, for some reason the MP4 file doesn't appear to work on my Android device. (It shows only Pocket Casts as an option, which is weird, and it's not able to open the file). (Edit: actually it can, the UI is confusing.).

There are definitely other downloaders like https://down.blue, which is also a bot on the platform (if you tag @down.blue it will post a download link). For files I download there they do show the Photos app, which is how I'd watch such videos.

yangxiaobo

The issue with the MP4 format not opening has now been fixed, and I’ve released the update, so it should work now.

down.blue could indeed also solve my problem, but I hadn’t come across it before.

bluetidepro

Off topic but related… With so many ways to get around downloading videos/media like this for example, I will never understand why companies don’t just allow videos to be saved like a picture. Add a simple download button to make it obvious and simple for users to download a video. For example, Tiktok has this, and just adds their watermark to the downloaded video.

It’s just a false sense of security to users when they think people “can’t” download their content. Even apps like Snapchat that are marketed to be “save proof” are def not. I think it’s a betrayal to the user for any company to pretend a user’s media is “safe” from downloads/screenshots/etc.

drexlspivey

Pretty obvious isn’t it? If you download the video from youtube/twitter/whatever and you watch it from your hard drive next time, they can’t serve you an ad.

reportgunner

They want to spy on what you are doing when browsing their website, giving you a video without hoops to jump through stops them from doing that.

They don't really care if you have a good time or if you really watch the video, it's just a bait.

null

[deleted]

RobotToaster

If they used standard HTML video elements it would be just as easy, but everyone wants to use their own non-standard players.

egeozcan

Actually most use the HTML video element but use JS to download blobs and add them as src, and/or bury the elements like this:

https://imgur.com/C8AP7y0 (random video I found on threads as an example)

Just to break native download functionality and/or add own silly controls on top.

fallingknife

It keeps 95% of people from downloading it.

null

[deleted]

nullandvoid

What's with the title? Doesn't "Show HN: I made a Bluesky video downloader" provide just as much context as the current version in half the words?

That aside congrats on releasing and thanks for making it a free tool, also impressive turnaround time.

BugsJustFindMe

> https://imgur.com/a/2Lt4Xln

Remind me what this does again? :\

I suggest eliminating that spammish repetition. Body text like this gives a strong impression that the site is going to try to install a virus on my computer. It drips with a swampy kind of SEO desperation only seen on pages that embed malware and crosslink to bot farms.

yangxiaobo

Yes, I also feel that this kind of repetition isn't great, but it seems that better SEO requires it—there's not much choice.

danielovichdk

What is bluesky?

greenchair

appears to be a twitter clone. On the front page most posts I see are either pictures of manga art or cats.

reportgunner

Jack Dorsey left twitter and made bluesky

spiffistan

twitter 2.0

JKCalhoun

I had to ask ChatGPT the same thing.

"Bluesky is a decentralized social network platform that was originally incubated by Twitter and later spun out as an independent company. Its main goal is to create a more open and flexible social media ecosystem by using a decentralized protocol, called the Authenticated Transfer Protocol (AT Protocol). This protocol is designed to allow users more control over their data and enable interoperability across different social media apps that implement the protocol."

rsynnott

I mean, I think Googling would have given you a more useful answer. The magic robot has chosen to concentrate on how it _works_, without really saying what it _is_ (a kinda-decentralised Twitter clone, without the most objectionable component of Twitter).

For that matter, the first paragraph of the Wikipedia article is also far more helpful than what the robot gave you. Of all the weird uses of LLMs, "what is [thing which has a wikipedia page]" is perhaps the most pointless.