Unofficial cobalt command line client made in go. cobalt-cli uses gobalt library for communication between your machine <-> cobalt servers.
- Get directly link from the service cdn (if possible);
- More than 15 services supported;
- JSON output using the flag
-j
or--json
; - Option to check status of cobalt servers;
- Use custom cobalt instances (see https://instances.hyper.lol);
- Get dubbed youtube audio.
Platform/OS | Download link |
---|---|
Windows | x64 / x86 / arm |
Linux | x64 / x86 / arm64 |
MacOS | Intel / M1, M2, M3 |
You can also check the releases page to download the latest version according to your platform.
Planned features for cobalt-cli:
- Json output;
- Time expiration for the returned url.
- Option to save file to the current/custom folder, likely
-s
flag;- Display progress bar to track download progress (when supported by cobalt).
- Hability to use custom downloader program (wget, curl, got, etc);
- Translations.
cobalt-cli has two subcommands:
- download: downloads something using cobalt
- instances: lists all known cobalt instances
usage: cobalt download [-h|--help] [-u|--url "<value>"] [-c|--video-codec
(av1|vp9|h264)] [-q|--video-quality
(144|240|360|480|720|1080|1440|2160)] [-f|--audio-format
(opus|ogg|wav|mp3|best)] [-p|--filename-pattern
(basic|pretty|nerdy|classic)] [-a|--no-video] [-V|--vimeo-dash]
[-t|--full-tiktok-audio] [-v|--no-audio] [-d|--dubbed-audio]
[-m|--metadata] [-g|--gif] [-j|--json] [-s|--status] [-i|--api
"<value>"] [-l|--language "<value>"] [-b|--browser]
download something using cobalt
Arguments:
-h --help Print help information
-u --url The url to download using cobalt
-c --video-codec Video codec to be used. Applies only to youtube
downloads. AV1: 8K/HDR, lower support | VP9: 4K/HDR,
best quality | H264: 1080p, works everywhere.
Default: h264
-q --video-quality Quality of the video. Default: 1080
-f --audio-format Audio format/codec to be used. Using the default the
audio won't be re-encoded. Default: best
-p --filename-pattern File name pattern. Classic:
youtube_yPYZpwSpKmA_1920x1080_h264.mp4 | audio:
youtube_yPYZpwSpKmA_audio.mp3 // Basic: Video Title
(1080p, h264).mp4 | audio: Audio Title - Audio
Author.mp3 // Pretty: Video Title (1080p, h264,
youtube).mp4 | audio: Audio Title - Audio Author
(soundcloud).mp3 // Nerdy: Video Title (1080p, h264,
youtube, yPYZpwSpKmA).mp4 | audio: Audio Title -
Audio Author (soundcloud, 1242868615).mp3. Default:
pretty
-a --no-video Extract audio only. Default: false
-V --vimeo-dash Downloads Vimeo videos using dash instead of
progressive. Default: false
-t --full-tiktok-audio Enables download of original sound used in a tiktok
video. Default: false
-v --no-audio Downloads only the video, without audio, when
possible. Default: false
-d --dubbed-audio Downloads youtube audio dubbed, if present. Change
the language using -l <ISO 639-1 format>. Default:
false
-m --metadata Disables file metadata. Default: false
-g --gif Disables conversion of twitter gifs to a .gif file.
Default: true
-j --json Output to stdin as json. Default: false
-s --status Will only check status of the select cobalt server,
print and exit. All other options will be ignored,
except -j. Default: false
-i --api Change the cobalt api endpoint to be used. See
others instances in https://instances.hyper.lol.
Default: https://co.wuk.sh
-l --language Downloads dubbed youtube audio according to the
language set following the ISO 639-1 format. Only
takes effect if -d was passed as an argument.
Default: en
-b --browser Opens the response link in default browser, if
successful. Default: false
usage: cobalt instances [-h|--help] [-j|--json]
get the list of cobalt instances
Arguments:
-h --help Print help information
-j --json Output to stdout as json
See the documentation for the json output of cobalt-cli.
All json output from the download subcommands follows this format:
{
"error": bool,
"message": "string",
"urls": ["string1", "string2", ...]
}
Where:
name | type | info | example |
---|---|---|---|
error | bool | true if something went wrong | "error":true |
message | string | return error messages, otherwise "ok" | "message":"cobalt error: i couldn't connect to the service api. maybe it's down, or cobalt got blocked" |
urls | []string | array of urls returned by the service, query scaped | "urls":["https%3A%2F%2Fus3-co.wuk.sh%2Fapi%2Fstream%3Ft%3D6kS3Xr97CAoqvPlBYX0r8%26e%3D1713849463113%26h%3DNHPfrLZ-BJejEnH2orowNy0zzTlVXSYw77RBhzIf0MU%26s%3DxvmTt9DTNl4wLslkfYfCUv6UDIPOTv9iZutl7ENM_dc%26i%3DuX7INLhsbzzofNxZaw6o7g"] |
Returns almost the original json from https://instances.hyper.lol/, except we add two extra keys: error and message, just like above.
Example JSON:
[{"error":false,"message":"success!"},[{"version":"7.12.6","commit":"50a98c8","branch":"current","name":"us3","url":"co.wuk.sh","cors":1,"startTime":"1713626380117","FrontendUrl":"cobalt.tools","ApiOnline":true,"FrontEndOnline":true},{"version":"7.12.6","commit":"50a98c8","branch":"current","name":"us-east","url":"cobalt.canine.tools","cors":1,"startTime":"1713837765475","FrontendUrl":"cobalt.canine.tools","ApiOnline":true,"FrontEndOnline":true},{"version":"7.12.6","commit":"50a98c8","branch":"current","name":"us-mw","url":"coapi.selfstacked.com","cors":1,"startTime":"1713626820678","FrontendUrl":"co.selfstacked.com","ApiOnline":true,"FrontEndOnline":true}]]
Error example:
{"error":true,"message":"Get \"https://instances.hyper.lol/instances.json\": dial tcp: lookup instances.hyper.lol: no such host"}
Make sure you have the lastest go compiler. Download it here.
Easy as:
- Clone this repository.
- On the root of this repository, run
go mod tidy
. This will download this project dependencies. - To run the application, use
go run .
. To compile, rungo build
.
To add additional Windows metadata, you'll need:
- go-winres, follow the install instructions there
Then run go-winres make
on the root of this repository, it will create two .syso files.
After that, building with go build
will automatically embed these files on the Windows executable.
Check out too: