Show HN: I made a Bluesky video downloader (blueskyvideodownloader.org)
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
61 comments
[ 5.3 ms ] story [ 112 ms ] threadhttps://github.com/yt-dlp/yt-dlp/pull/11055
Maybe also make one of those bots that you can tag to get a video link?
This works on most websites that serve you videos.
You are right that some websites give you .m3u or some kind of .htm that is not the actual video this way.
In all seriousness, nice work!
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.
down.blue could indeed also solve my problem, but I hadn’t come across it before.
Oh wait, we let commercial interests take that functionality from us...
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 clip from one video editing project into another without using the clipboard ?
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.
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.
It would ideally get integrated into the browser "downloading..." UI too, although I could imagine that being technically hard to do.
"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."
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.
https://github.com/imputnet/cobalt
“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!
To make this work properly, you need to mux it into an mp4 container. e.g.
(there are, hopefully, libraries for doing this that don't involve bundling the whole of ffmpeg)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 ;)
That aside congrats on releasing and thanks for making it a free tool, also impressive turnaround time.
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.
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.
They don't really care if you have a good time or if you really watch the video, it's just a bait.
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.
Decentralized in protocol only. Not in practice.