Metadata-Version: 2.1
Name: youcube
Version: 0.0.0
Summary: A server which provides a WebSocket API for YouCube clients
Author: Commandcracker
License: GPL-3.0
Project-URL: Homepage, https://youcube.madefor.cc
Project-URL: Repository, https://github.com/CC-YouCube/server
Project-URL: Documentation, https://youcube.madefor.cc/guides/server/installation/
Keywords: youtube,youcube,computercraft,minecraft
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: Multimedia :: Sound/Audio :: Players
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: sanic ~=23.12.1
Requires-Dist: yt-dlp ~=2024.4.9
Requires-Dist: ujson ~=5.9.0
Requires-Dist: spotipy ~=2.23.0

# YouCube Server

[![Python Version: 3.7+]](https://www.python.org/downloads/)
[![Python Lint Workflow Status]](https://github.com/CC-YouCube/server/actions/workflows/pylint.yml)

![preview]

YouCube has a some public servers, which you can use if you don't want to host your own server. \
The client has the public servers set by default, so you can just run the client, and you're good to go. \
Moor Information about the servers can be seen on the [doc].

## Requirements

- [yt-dlp/FFmpeg] / [FFmpeg 5.1+]
- [sanjuuni]
- [Python 3.7+]
  - [sanic]
  - [yt-dlp]
  - [ujson] (Optional)
  - [spotipy]

You can install the required packages with [pip] by running:

```shell
pip install -r src/requirements.txt
```

## Starting the Server

```bash
python src/youcube.py
```

## Environment variables

Environment variables you can use to configure the server:

| Variable                      | Default     | Description                                                                                                        |
| ----------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------ |
| `HOST`                        | `127.0.0.1` | The host where the web server runs on.                                                                             |
| `PORT`                        | `5000`      | The port where the web server should run on                                                                        |
| `FFMPEG_PATH`                 | `ffmpeg`    | Path to the FFmpeg executable                                                                                      |
| `SANJUUNI_PATH`               | `sanjuuni`  | Path to the Sanjuuni executable                                                                                    |
| `NO_COLOR`                    | `False`     | Disable colored output                                                                                             |
| `LOGLEVEL`                    | `DEBUG`     | Python Log level of the main logger                                                                                |
| `DISABLE_OPENCL`              | `False`     | Disables sanjuuni GPU acceleration                                                                                 |
| `NO_FAST`                     | `False`     | Disable Sanic worker processes maximization                                                                        |
| `SPOTIPY_CLIENT_ID`           |             | The Client ID from your [spotify application]                                                                      |
| `SPOTIPY_CLIENT_SECRET`       |             | The Client Secret from your [spotify application]                                                                  |
| `DATA_CACHE_CLEANUP_INTERVAL` | `300`       | Time interval (in seconds) for the data cache cleaner to wait before checking for outdated cache entries.          |
| `DATA_CACHE_CLEANUP_AFTER`    | `3600`      | Time threshold (in seconds) for considering a cache entry outdated. Cache entries older than this will be removed. |

And [Sanic Builtin values].

## Docker Compose

```yml
version: "2.0"
services:
  youcube:
    image: ghcr.io/cc-youcube/youcube:latest
    restart: always
    hostname: youcube
    ports:
      - 5000:5000
```

[spotify application]: https://developer.spotify.com/dashboard/applications
[pip]: https://pip.pypa.io/en/stable/installation
[yt-dlp/FFmpeg]: https://github.com/yt-dlp/FFmpeg-Builds
[FFmpeg 5.1+]: https://ffmpeg.org
[sanjuuni]: https://github.com/MCJack123/sanjuuni
[Python 3.7+]: https://www.python.org/downloads
[sanic]: https://sanic.dev
[yt-dlp]: https://pypi.org/project/yt-dlp
[ujson]: https://pypi.org/project/ujson
[spotipy]: https://pypi.org/project/spotipy
[doc]: https://youcube.madefor.cc/api
[preview]: .README/preview-server.png
[Python Version: 3.7+]: https://img.shields.io/badge/Python-3.7+-green?style=for-the-badge&logo=Python&logoColor=white
[Python Lint Workflow Status]: https://img.shields.io/github/actions/workflow/status/CC-YouCube/server/pylint.yml?branch=main&label=Python%20Lint&logo=github&style=for-the-badge
[Sanic Builtin values]: https://sanic.dev/en/guide/running/configuration.md#builtin-values
