Skip to main content

Download mediafiles from YouTube, Twitter (X), Instagram, Reddit & more. CLI wrapper and python module for @imputnet's cobalt processing instance api.

Project description

pybalt

Python module & CLI to download media using cobalt processing instance(s)

GitHub stars Get on pypi Last commit Pip module installs total downloads Ruff

CLI Preview



Installation

Install using PowerShell

powershell -Command "Invoke-WebRequest -Uri https://raw.githubusercontent.com/nichind/pybalt/main/install.bat -OutFile install.bat; .\install.bat"

Install using PIP

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 with python:

python -m pybalt



Usage & Examples

Selecting processing instance

You can set processing instance url, api key and user-agent to enviroment variables, pybalt will use them if none was provided.

COBALT_API_URL=YOUR_INSTANCE_URL
COBALT_API_KEY=YOUR_API_KEY
COBALT_USER_AGENT=YOUR_USER_AGENT

By default pybalt tries to parse any avalible instance for you. I recommend hosting your own instance or asking someone to give you api key for their instance.


As a CLI

Every command here uses the cobalt alias, you can also use pybalt or python -m pybalt as well.

By default all downloads are saved in a user downloads folder ~/Downloads or the one specified by the --folder flag.

Get list of all available commands by running:

cobalt -h

Download video from URL

cobalt -u 'https://youtube.com/watch?v=8ZP5eqm4JqM'

you can also provide url as positional argument:

cobalt 'https://youtube.com/watch?v=8ZP5eqm4JqM'

Download Youtube playlist

cobalt -pl 'https://youtube.com/playlist?list=PL_93TBqf4ymR9GsuI9W4kQ-G3WM7d2Tqj'

Download from text file

Create a text file with URLs on each line:

https://youtube.com/watch?v=8ZP...
.....
....
...

then run:

cobalt -l 'path/to/file.txt'

More examples

Download all videos from a YouTube playlist in 720p to folder /Music/, filename style classic, use instance https://dwnld.nichind.dev with 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'


As a module

Download video from URL

from pybalt import Cobalt
from asyncio import run


async def main():
    cobalt = Cobalt()
    path = await cobalt.download('https://youtube.com/watch?v=8ZP5eqm4JqM')
    print('Downloaded: ', path)  # Downloaded: /Users/%USER%/Downloads/8ZP5eqm4JqM.mp4


run(main())

You can pass arguments inside 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())



Contributing

If you have any questions or suggestions, please open an issue or create a pull request.

Contributors

Contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybalt-2024.11.13.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

pybalt-2024.11.13-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file pybalt-2024.11.13.tar.gz.

File metadata

  • Download URL: pybalt-2024.11.13.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pybalt-2024.11.13.tar.gz
Algorithm Hash digest
SHA256 c3e0d158e07567e7d966d624a0d2cd883a1dbf8a231c97fbf68461ad2082119c
MD5 a82d5ea0fe82a4e4257a6fb475bae2ba
BLAKE2b-256 98b59bee045c475c6391e41246b6dd7f105367349fbba9848017351d1c3d142c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybalt-2024.11.13.tar.gz:

Publisher: publish.yml on nichind/pybalt

Attestations:

File details

Details for the file pybalt-2024.11.13-py3-none-any.whl.

File metadata

  • Download URL: pybalt-2024.11.13-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pybalt-2024.11.13-py3-none-any.whl
Algorithm Hash digest
SHA256 6704423826e9673f0b43e25fd586b8050f52040349f0ed84465c56d31df49b84
MD5 74d3899241478c8ed7158d025228ab24
BLAKE2b-256 fcacb4eaf22ecb9cf4577aba98ee406f7f2d971349f990fc6c968fae79058a41

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybalt-2024.11.13-py3-none-any.whl:

Publisher: publish.yml on nichind/pybalt

Attestations:

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page