Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nichind/pybalt
Download mediafiles from YouTube, Twitter (X), Instagram, Reddit & more. CLI wrapper and python module for @imputnet's cobalt processing instance api.
https://github.com/nichind/pybalt
bilibili-downloader cli cobalt cobalt-tools downloader instagram instagram-downloader reddit reddit-downloader twitter twitter-downloader x-downloader youtube youtube-downloader
Last synced: 3 months ago
JSON representation
Download mediafiles from YouTube, Twitter (X), Instagram, Reddit & more. CLI wrapper and python module for @imputnet's cobalt processing instance api.
- Host: GitHub
- URL: https://github.com/nichind/pybalt
- Owner: nichind
- License: mit
- Created: 2024-10-26T19:35:37.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-11-14T20:50:25.000Z (3 months ago)
- Last Synced: 2024-11-14T21:27:05.794Z (3 months ago)
- Topics: bilibili-downloader, cli, cobalt, cobalt-tools, downloader, instagram, instagram-downloader, reddit, reddit-downloader, twitter, twitter-downloader, x-downloader, youtube, youtube-downloader
- Language: Python
- Homepage: https://pypi.org/project/pybalt/
- Size: 26.6 MB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
pybalt
CLI tool and python module for downloading media through Cobalt processing instances.
[![Get on PyPI](https://img.shields.io/pypi/v/pybalt.svg)](https://pypi.org/project/pybalt/)
[![Last commit](https://img.shields.io/github/last-commit/nichind/pybalt.svg)](https://github.com/nichind/pybalt)
[![Pip module installs total downloads](https://img.shields.io/pypi/dm/pybalt.svg)](https://pypi.org/project/pybalt/)
[![GitHub stars](https://img.shields.io/github/stars/nichind/pybalt.svg)](https://github.com/nichind/pybalt)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
CLI Preview
https://github.com/user-attachments/assets/cf5fd9a9-520b-4970-b8c2-42baa80d7523
Installation
Install pybalt using PowerShell on Windows
Downloads [install.bat](./install.bat) and executes it.
```powershell
powershell -Command "Invoke-WebRequest -Uri https://raw.githubusercontent.com/nichind/pybalt/main/install.bat -OutFile install.bat; .\install.bat"
```Install using PIP
```shell
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:
```shell
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](https://instances.cobalt.best). 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:
```shell
cobalt -h
```
Download video from URL
```shell
cobalt -u 'https://youtube.com/watch?v=8ZP5eqm4JqM'
```You can also provide the URL as a positional argument:
```shell
cobalt 'https://youtube.com/watch?v=8ZP5eqm4JqM'
```
Download YouTube playlist
```shell
cobalt -pl 'https://youtube.com/playlist?list=PL_93TBqf4ymR9GsuI9W4kQ-G3WM7d2Tqj'
```
Download from text file
Create a text file with URLs on each line:
```txt
https://youtube.com/watch?v=8ZP...
.....
....
...
```Then run:
```shell
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:
```shell
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
```python
from pybalt import Cobalt
from asyncio import runasync def main():
cobalt = Cobalt()
path = await cobalt.download('https://youtube.com/watch?v=8ZP5eqm4JqM')
print('Downloaded: ', path) # Downloaded: /Users/%USER%/Downloads/8ZP5eqm4JqM.mp4run(main())
```You can pass arguments inside the Cobalt object:
```python
from pybalt import Cobalt
from asyncio import runasync 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.mp4run(main())
```
Contributing
If you have any questions or suggestions, please [open an issue](https://github.com/nichind/pybalt/issues) or [create a pull request](https://github.com/nichind/pybalt/pulls).
Contributors