Skip to main content

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

Project description

pybalt

CLI tool and python module for downloading media through Cobalt processing instances.

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



Installation

Install pybalt using PowerShell on Windows

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"

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 directly from python package:

python -m pybalt



Usage & Examples

Selecting processing instance

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.


As a CLI

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

Download video from URL

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'

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/, 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'


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 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())



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.16.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

pybalt-2024.11.16-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pybalt-2024.11.16.tar.gz
  • Upload date:
  • Size: 12.8 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.16.tar.gz
Algorithm Hash digest
SHA256 88ca3e2eb2704ce208abf54fd53e849257b6d0c14424a7097363d23b13cfd932
MD5 9ab0ac9a104dab87a372d9b9a820d321
BLAKE2b-256 fc1e0727bb4c5f5abfb31582403d320739154f1fcd2e868e075f59ee396f34ba

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on nichind/pybalt

Attestations:

File details

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

File metadata

  • Download URL: pybalt-2024.11.16-py3-none-any.whl
  • Upload date:
  • Size: 11.9 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.16-py3-none-any.whl
Algorithm Hash digest
SHA256 3c4a2d837113150f9494a34bb0800c1bc0749e5cb671f8d79b648d13de2ad53b
MD5 e260c6710e22b0ffc899d1b28cef1163
BLAKE2b-256 e2790ec55b019ef56c7e83feed98be57f9cfd1cbff04d557d1b9876941f37fd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybalt-2024.11.16-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