a2216510b7
usage: - create cookies.json file somewhere, preferrably outside cobalt directory - in docker, you can bind mount it (`volumes` in composefile) - if you don't want cobalt to update the cookies, set it to `:ro` (cobalt will print a warning about this, ignore it) - set COOKIE_PATH to the absolute path of this file - enjoy? usage in services: probably the simplest api ever - import { getCookie, updateCookie } from '../../cookie/manager.js'; - const cookie = getCookie('<service_name>'); - add this to headers - `headers: { cookie }` - after fetch is done, save potential cookie updates: updateCookie(cookie, fetch.headers) - see instagram.js for example usage |
||
---|---|---|
.github | ||
docs | ||
src | ||
.deepsource.toml | ||
.gitignore | ||
crowdin.yml | ||
docker-compose.example.yml | ||
Dockerfile | ||
jsconfig.json | ||
LICENSE | ||
package.json | ||
README.md |
cobalt
Best way to save what you love.
Live web app: co.wukko.me
What's cobalt?
cobalt is social and media platform downloader that doesn't piss you off.
It's fast, friendly, and doesn't have any bullshit that modern web is filled with: no ads, trackers, or analytics.
Paste the link, get the video, move on. It's that simple. Just how it should be.
Supported services
Service | Video + Audio | Only audio | Only video | Additional notes or features |
---|---|---|---|---|
bilibili.com | ✅ | ✅ | ✅ | |
✅ | ✅ | ✅ | Ability to pick what to save from multi-media posts. | |
Instagram Reels | ✅ | ✅ | ✅ | |
✅ | ✅ | ✅ | Support for videos and stories. | |
✅ | ✅ | ✅ | Support for GIFs and videos. | |
SoundCloud | ➖ | ✅ | ➖ | Audio metadata, downloads from private links. |
TikTok | ✅ | ✅ | ✅ | Supports downloads of: videos with or without watermark, images from slideshow without watermark, full (original) audios. |
Tumblr | ✅ | ✅ | ✅ | Support for audio file downloads. |
Twitter* | ✅ | ✅ | ✅ | Ability to pick what to save from multi-media tweets. |
Vimeo | ✅ | ✅ | ✅ | Audio downloads are only available for dash files. |
Vine Archive | ✅ | ✅ | ✅ | |
VK Videos | ✅ | ❌ | ❌ | |
VK Clips | ✅ | ❌ | ❌ | |
YouTube Videos & Shorts | ✅ | ✅ | ✅ | Support for 8K, 4K, HDR, VR, and high FPS videos. Audio metadata & dubs. h264/av1/vp9 codecs. |
YouTube Music | ➖ | ✅ | ➖ | Audio metadata. |
This list is not final and keeps expanding over time, make sure to check it once in a while!
*Reliability of downloads from Twitter is questionable due to its current management.
cobalt API
cobalt has an open API that you can use in your projects for free.
It's easy and straightforward to use, check out the docs and see for yourself.
Feel free to use the main API instance (co.wuk.sh) in your projects.
Host an instance yourself
Requirements
- Node.js 18 or above
- git
Setup script installs all needed npm
dependencies, but you have to install Node.js
and git
yourself.
- Clone the repo:
git clone https://github.com/wukko/cobalt
- Run setup script and follow instructions:
npm run setup
- Run cobalt via
npm start
- Done.
You need to host API and web app separately since v.6.0. Setup script will help you with that!
Ubuntu 22.04+ workaround
nscd
needs to be installed and running so that the ffmpeg-static
binary can resolve DNS (#101):
sudo apt install nscd
sudo service nscd start
Docker
It's also possible to run cobalt via Docker. I highly recommend using Docker compose.
Check out the example compose file and alter it for your needs.
Disclaimer
cobalt is my passion project, so update schedule depends solely on my free time, motivation, and mood.
Don't expect any consistency in that.
License
cobalt is under AGPL-3.0 license.
Fluent Emoji used in the project is under MIT license.