Downloads install.bat and executes it.
Powershell should be run as administrator, otherwise aliases (cobalt
, pybalt
) in terminal will not work.
powershell -Command "Invoke-WebRequest -Uri https://raw.githubusercontent.com/nichind/pybalt/main/install.bat -OutFile install.bat; .\install.bat"
pip install pybalt
This should create aliases pybalt
and cobalt
in your shell.
Try running cobalt -h
to see the help message.
If for some reason it didn't work, try using it directly from python package:
python -m pybalt
You can set processing instance URL, API key, and user-agent as environment variables; pybalt will use them if none are provided.
COBALT_API_URL=YOUR_INSTANCE_URL
COBALT_API_KEY=YOUR_API_KEY
COBALT_USER_AGENT=YOUR_USER_AGENT
By default, pybalt attempts to use any available instance for you provided by public list of instances. It is recommended to host your own instance or request an
API key
from someone else's instance.
Every command here uses the cobalt
alias; you can also use pybalt
or python -m pybalt
.
By default, all downloads are saved in the user's downloads folder ~/Downloads
, or the one specified by the -f
(-folder
) flag.
Get a list of all available commands by running:
cobalt -h
cobalt -u 'https://youtube.com/watch?v=8ZP5eqm4JqM'
You can also provide the URL as a positional argument:
cobalt 'https://youtube.com/watch?v=8ZP5eqm4JqM'
cobalt -pl 'https://youtube.com/playlist?list=PL_93TBqf4ymR9GsuI9W4kQ-G3WM7d2Tqj'
Create a text file with URLs on each line:
https://youtube.com/watch?v=8ZP...
.....
....
...
Then run:
cobalt -l 'path/to/file.txt'
Download all videos from a YouTube playlist in 720p
to folder /Music/
, with filename style classic
, using instance https://dwnld.nichind.dev
and API key
authorization:
cobalt -pl 'https://youtube.com/playlist?list=PL_93TBqf4ymR9GsuI9W4kQ-G3WM7d2Tqj' -q 720 -f './Music/' -fs 'classic' -i 'https://dwnld.nichind.dev' -k 'YOUR_API_KEY'
from pybalt import download
from asyncio import run
async def main():
path = await download('https://youtube.com/watch?v=8ZP5eqm4JqM')
print('Downloaded: ', path) # Downloaded: /Users/%USER%/Downloads/8ZP5eqm4JqM.mp4
run(main())
You can pass arguments inside the Cobalt object:
from pybalt import Cobalt
from asyncio import run
async def main():
cobalt = Cobalt(api_instance='YOUR_INSTANCE_URL', api_key='YOUR_API_KEY', headers={...})
path = await cobalt.download(url='https://youtube.com/watch?v=8ZP5eqm4JqM', quality='1080')
print('Downloaded: ', path) # Downloaded: /Users/%USER%/Downloads/8ZP5eqm4JqM.mp4
run(main())
If you have any questions or suggestions, please open an issue or create a pull request.