pybalt


Namepybalt JSON
Version 2024.11.16 PyPI version JSON
download
home_pagehttps://github.com/nichind/pybalt
SummaryDownload mediafiles from YouTube, Twitter (X), Instagram, Reddit & more. CLI & python module for @imputnet's cobalt processing instance api.
upload_time2024-11-20 13:00:19
maintainerNone
docs_urlNone
authornichind
requires_python>=3.8
licenseNone
keywords downloader cobalt cobalt-cli youtube twitter x instagram reddit twitch bilibili download youtube-downloader twitter-downloader
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center" style="display: flex; flex-flow: column wrap;">
  <img src='./assets/logo.png' style='border-radius: 8px; width: 124px'></img>
  <h3>pybalt</h3>
  <h5>CLI tool and python module for downloading media through Cobalt processing instances.</h5>
  
  [![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)

  <div align="center" style="display: flex; flex-flow: column wrap;">
  <h3>CLI Preview</h3>

  https://github.com/user-attachments/assets/cf5fd9a9-520b-4970-b8c2-42baa80d7523
  </div>
  
</div>
<br><br>
<h1>Installation</h1>
<h4>Install pybalt using PowerShell on Windows</h4>

Downloads [install.bat](./install.bat) and executes it.

Powershell should be run as administrator, otherwise aliases (`cobalt`, `pybalt`) in terminal will not work.

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

<h4>Install using PIP</h4>

```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
```
<br><br>
<h1>Usage & Examples</h1>

<img src='./assets/cli-preview.gif' style='border-radius: 8px'></img>

<h3>Selecting processing instance</h3>

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.

<br>
<h2>As a CLI</h2>
<details open>
<summary></summary>

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
```

<br>
<h3>Download video from URL</h3>

```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'
```

<br>
<h3>Download YouTube playlist</h3>

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

<br>
<h3>Download from text file</h3>

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'
```

<br>
<h3>More examples</h3>

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'
```

</details>
<br><br>
<h2>As a module</h2>
<details open>
<summary></summary>

<h3>Download video from URL</h3>

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

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

</details>

<br><br>
<h1>Contributing</h1>

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

<h3>Contributors</h3>

<img src="https://contrib.rocks/image?repo=nichind/pybalt" alt="Contributors" style="max-width: 100%;"/>


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/nichind/pybalt",
    "name": "pybalt",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "downloader, cobalt, cobalt-cli, youtube, twitter, x, instagram, reddit, twitch, bilibili, download, youtube-downloader, twitter-downloader",
    "author": "nichind",
    "author_email": "nichinddev@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/fc/1e/0727bb4c5f5abfb31582403d320739154f1fcd2e868e075f59ee396f34ba/pybalt-2024.11.16.tar.gz",
    "platform": null,
    "description": "<div align=\"center\" style=\"display: flex; flex-flow: column wrap;\">\n  <img src='./assets/logo.png' style='border-radius: 8px; width: 124px'></img>\n  <h3>pybalt</h3>\n  <h5>CLI tool and python module for downloading media through Cobalt processing instances.</h5>\n  \n  [![Get on PyPI](https://img.shields.io/pypi/v/pybalt.svg)](https://pypi.org/project/pybalt/)\n  [![Last commit](https://img.shields.io/github/last-commit/nichind/pybalt.svg)](https://github.com/nichind/pybalt)\n  [![Pip module installs total downloads](https://img.shields.io/pypi/dm/pybalt.svg)](https://pypi.org/project/pybalt/)\n  [![GitHub stars](https://img.shields.io/github/stars/nichind/pybalt.svg)](https://github.com/nichind/pybalt)\n  [![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)\n\n  <div align=\"center\" style=\"display: flex; flex-flow: column wrap;\">\n  <h3>CLI Preview</h3>\n\n  https://github.com/user-attachments/assets/cf5fd9a9-520b-4970-b8c2-42baa80d7523\n  </div>\n  \n</div>\n<br><br>\n<h1>Installation</h1>\n<h4>Install pybalt using PowerShell on Windows</h4>\n\nDownloads [install.bat](./install.bat) and executes it.\n\nPowershell should be run as administrator, otherwise aliases (`cobalt`, `pybalt`) in terminal will not work.\n\n```powershell\npowershell -Command \"Invoke-WebRequest -Uri https://raw.githubusercontent.com/nichind/pybalt/main/install.bat -OutFile install.bat; .\\install.bat\"\n```\n\n<h4>Install using PIP</h4>\n\n```shell\npip install pybalt\n```  \n\nThis should create aliases `pybalt` and `cobalt` in your shell.\n\nTry running `cobalt -h` to see the help message.\n\nIf for some reason it didn't work, try using it directly from python package:\n\n```shell\npython -m pybalt\n```\n<br><br>\n<h1>Usage & Examples</h1>\n\n<img src='./assets/cli-preview.gif' style='border-radius: 8px'></img>\n\n<h3>Selecting processing instance</h3>\n\nYou can set **processing instance URL**, **API key**, and **user-agent** as environment variables; pybalt will use them if none are provided.\n\n```\nCOBALT_API_URL=YOUR_INSTANCE_URL\nCOBALT_API_KEY=YOUR_API_KEY\nCOBALT_USER_AGENT=YOUR_USER_AGENT\n```\n\n> 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.\n\n<br>\n<h2>As a CLI</h2>\n<details open>\n<summary></summary>\n\nEvery command here uses the `cobalt` alias; you can also use `pybalt` or `python -m pybalt`.\n\nBy default, all downloads are saved in the user's downloads folder `~/Downloads`, or the one specified by the `-f` (`-folder`) flag.\n\nGet a list of all available commands by running:\n\n```shell\ncobalt -h\n```\n\n<br>\n<h3>Download video from URL</h3>\n\n```shell\ncobalt -u 'https://youtube.com/watch?v=8ZP5eqm4JqM'\n```\n\nYou can also provide the URL as a positional argument:\n\n```shell\ncobalt 'https://youtube.com/watch?v=8ZP5eqm4JqM'\n```\n\n<br>\n<h3>Download YouTube playlist</h3>\n\n```shell\ncobalt -pl 'https://youtube.com/playlist?list=PL_93TBqf4ymR9GsuI9W4kQ-G3WM7d2Tqj'\n```\n\n<br>\n<h3>Download from text file</h3>\n\nCreate a text file with URLs on each line:\n\n```txt\nhttps://youtube.com/watch?v=8ZP...\n.....\n....\n...\n```\n\nThen run:\n\n```shell\ncobalt -l 'path/to/file.txt'\n```\n\n<br>\n<h3>More examples</h3>\n\nDownload 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:\n\n```shell\ncobalt -pl 'https://youtube.com/playlist?list=PL_93TBqf4ymR9GsuI9W4kQ-G3WM7d2Tqj' -q 720 -f './Music/' -fs 'classic' -i 'https://dwnld.nichind.dev' -k 'YOUR_API_KEY'\n```\n\n</details>\n<br><br>\n<h2>As a module</h2>\n<details open>\n<summary></summary>\n\n<h3>Download video from URL</h3>\n\n```python\nfrom pybalt import Cobalt\nfrom asyncio import run\n\nasync def main():\n    cobalt = Cobalt()\n    path = await cobalt.download('https://youtube.com/watch?v=8ZP5eqm4JqM')\n    print('Downloaded: ', path)  # Downloaded: /Users/%USER%/Downloads/8ZP5eqm4JqM.mp4\n\nrun(main())\n```\n\nYou can pass arguments inside the Cobalt object:\n\n```python\nfrom pybalt import Cobalt\nfrom asyncio import run\n\nasync def main():\n    cobalt = Cobalt(api_instance='YOUR_INSTANCE_URL', api_key='YOUR_API_KEY', headers={...})\n    path = await cobalt.download(url='https://youtube.com/watch?v=8ZP5eqm4JqM', quality='1080')\n    print('Downloaded: ', path)  # Downloaded: /Users/%USER%/Downloads/8ZP5eqm4JqM.mp4\n\nrun(main())\n``` \n\n</details>\n\n<br><br>\n<h1>Contributing</h1>\n\nIf 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).\n\n<h3>Contributors</h3>\n\n<img src=\"https://contrib.rocks/image?repo=nichind/pybalt\" alt=\"Contributors\" style=\"max-width: 100%;\"/>\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Download mediafiles from YouTube, Twitter (X), Instagram, Reddit & more. CLI & python module for @imputnet's cobalt processing instance api.",
    "version": "2024.11.16",
    "project_urls": {
        "Homepage": "https://github.com/nichind/pybalt"
    },
    "split_keywords": [
        "downloader",
        " cobalt",
        " cobalt-cli",
        " youtube",
        " twitter",
        " x",
        " instagram",
        " reddit",
        " twitch",
        " bilibili",
        " download",
        " youtube-downloader",
        " twitter-downloader"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e2790ec55b019ef56c7e83feed98be57f9cfd1cbff04d557d1b9876941f37fd0",
                "md5": "e260c6710e22b0ffc899d1b28cef1163",
                "sha256": "3c4a2d837113150f9494a34bb0800c1bc0749e5cb671f8d79b648d13de2ad53b"
            },
            "downloads": -1,
            "filename": "pybalt-2024.11.16-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e260c6710e22b0ffc899d1b28cef1163",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 11918,
            "upload_time": "2024-11-20T13:00:17",
            "upload_time_iso_8601": "2024-11-20T13:00:17.681719Z",
            "url": "https://files.pythonhosted.org/packages/e2/79/0ec55b019ef56c7e83feed98be57f9cfd1cbff04d557d1b9876941f37fd0/pybalt-2024.11.16-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fc1e0727bb4c5f5abfb31582403d320739154f1fcd2e868e075f59ee396f34ba",
                "md5": "9ab0ac9a104dab87a372d9b9a820d321",
                "sha256": "88ca3e2eb2704ce208abf54fd53e849257b6d0c14424a7097363d23b13cfd932"
            },
            "downloads": -1,
            "filename": "pybalt-2024.11.16.tar.gz",
            "has_sig": false,
            "md5_digest": "9ab0ac9a104dab87a372d9b9a820d321",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 12844,
            "upload_time": "2024-11-20T13:00:19",
            "upload_time_iso_8601": "2024-11-20T13:00:19.537788Z",
            "url": "https://files.pythonhosted.org/packages/fc/1e/0727bb4c5f5abfb31582403d320739154f1fcd2e868e075f59ee396f34ba/pybalt-2024.11.16.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-20 13:00:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "nichind",
    "github_project": "pybalt",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pybalt"
}
        
Elapsed time: 0.80220s