Hacker News new | past | comments | ask | show | jobs | submit login
[flagged] Show HN: I made a Bluesky video downloader (blueskyvideodownloader.org)
34 points by yangxiaobo 6 months ago | hide | past | favorite | 58 comments
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




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)


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.


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 ;)


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!


Great suggestion, haha!


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


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.


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.


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.


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


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.


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.


It was a very short .webm, looked like a gif converted to .webm


Sounds like you downloaded a "gif" embed, rather than a "video" embed. (It's 2024 and everyone serves """gif"""s inside video container formats to save bandwidth, but the UX and implementation details are still different to that of a "video" player)


Amusing title.

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


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


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


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


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.


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


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


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


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


fwiw cobalt.tools already has support for downloading bluesky videos

https://github.com/imputnet/cobalt


“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!


Why not use yt-dlp?


It does not have support yet.

https://github.com/yt-dlp/yt-dlp/pull/11055


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


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.


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.


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.


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.


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.


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


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.


It keeps 95% of people from downloading it.


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.


> 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.


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.


What is bluesky?


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


Jack Dorsey left twitter and made bluesky


twitter 2.0


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."


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.


I'm sure this is a feature of the browser... Just right click the video and "save as" and it'll give you a .mp4 file right? Or just Ctrl+C to copy the video onto the clipboard.

Oh wait, we let commercial interests take that functionality from us...


I don't think you ever could "copy the video onto the clipboard" in anything.

That said, I do wonder why you aren't able to just save as. Is it a "commercial interest" or is there an optimization going on?


How would you copy a video from one folder into another without using the clipboard ?

How would you copy a video clip from one video editing project into another without using the clipboard ?


That's an interesting question.

When you select and copy text, text data (typically UTF-8 encoded) is copied to a temporary area called the clipboard (except on X11, where the clipboard doesn't actually exist). When you select and copy an image, the pixel data (24bpp or 32bpp bitmap) is copied to the clipboard. This means you can copy text or image data from one application and paste it into another.

When you copy and paste files within a file manager, data isn't transferred across applications. The data copied is just text data with a special tag indicating it was copied from the file manager. When you paste it, the file manager performs the copy action from one filepath to another. Similarly, when you copy clips within a video-editing application or 3D models or anything more complex than just text and image, it's all done by copying a reference to the data within the application, so you can never paste it outside the application.

You can't, for example, copy a video from DaVinci Resolve and paste it in KDEnlive. You also can't copy and paste audio data.

For some reason, the clipboard is confined to text and image.

The same applies to drag and drop, by the way. If you drag and drop an image to a file manager, either it will pass a URL (text data) and the file manager handles downloading it from the source, or, on Windows, it gives the file manager the filepath of the image the browser already downloaded in cache so it copies without downloading anything.


From a UX perspective, right-click-save-as should absolutely be a thing that works.

But the fact that it doesn't isn't some kind of industry-wide conspiracy, it's just not an easy feature for a browser to implement in a generic way, given how streamed video works.


Maybe I should write a browser extension that actually does do this generically, by hooking the SourceBuffer interface, increasing the playback speed, and remuxing into a container format.


Even better, send a pull request to Blink to add this feature. It doesn't actually need to play the whole content, merely fire the right js events to get all the content loaded before doing a save.

It would ideally get integrated into the browser "downloading..." UI too, although I could imagine that being technically hard to do.


I strongly dislike this new trend of "SEO" spam titles for show HN posts. Show some respect to the community and quit using us as a link-building platform!


We've taken the part of the title out now that repeated the part that the title already said.


Well it certainly matches the way they've written the copy on the page.


How does this post brake rules?


Thanks for the clarification in the title, I was confused for a second there.

In all seriousness, nice work!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: