StreamingCommunity


NameStreamingCommunity JSON
Version 3.3.0 PyPI version JSON
download
home_pagehttps://github.com/Lovi-0/StreamingCommunity
SummaryNone
upload_time2025-08-30 07:41:31
maintainerNone
docs_urlNone
authorLovi-0
requires_python>=3.8
licenseNone
keywords streaming community
VCS
bugtrack_url
requirements httpx bs4 rich tqdm m3u8 certifi psutil unidecode curl_cffi jsbeautifier pathvalidate pycryptodomex ua-generator qbittorrent-api pyTelegramBotAPI pywidevine
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">

## 📊 Project Status & Info
[![PyPI Version](https://img.shields.io/pypi/v/streamingcommunity?logo=pypi&logoColor=white&labelColor=2d3748&color=3182ce&style=for-the-badge)](https://pypi.org/project/streamingcommunity)
[![Last Commit](https://img.shields.io/github/last-commit/Arrowar/StreamingCommunity?logo=git&logoColor=white&labelColor=2d3748&color=805ad5&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/commits)
[![Issues](https://img.shields.io/github/issues/Arrowar/StreamingCommunity?logo=github&logoColor=white&labelColor=2d3748&color=ed8936&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/issues)
[![License](https://img.shields.io/github/license/Arrowar/StreamingCommunity?logo=gnu&logoColor=white&labelColor=2d3748&color=e53e3e&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/blob/main/LICENSE)

## 💝 Support the Project

[![Donate PayPal](https://img.shields.io/badge/đŸ’ŗ_Donate-PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white&labelColor=2d3748)](https://www.paypal.com/donate/?hosted_button_id=UXTWMT8P6HE2C)
## 🚀 Download & Install

[![Windows](https://img.shields.io/badge/đŸĒŸ_Windows-0078D4?style=for-the-badge&logo=windows&logoColor=white&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_win.exe)
[![macOS](https://img.shields.io/badge/🍎_macOS-000000?style=for-the-badge&logo=apple&logoColor=white&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_mac)
[![Linux latest](https://img.shields.io/badge/🐧_Linux_latest-FCC624?style=for-the-badge&logo=linux&logoColor=black&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_latest)
[![Linux 22.04](https://img.shields.io/badge/🐧_Linux_22.04-FCC624?style=for-the-badge&logo=linux&logoColor=black&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_previous)
---

*⚡ **Quick Start:** `pip install streamingcommunity` or download the executable for your platform above*

</div>

# 📋 Table of Contents

<details>
<summary>đŸ“Ļ Installation</summary>

- 🔄 [Update Domains](#update-domains)
- 🌐 [Available Sites](https://arrowar.github.io/StreamingCommunity/)
- đŸ› ī¸ [Installation](#installation)
    - đŸ“Ļ [PyPI Installation](#1-pypi-installation)
    - 🔄 [Automatic Installation](#2-automatic-installation)
    - 🔧 [Binary Location](#binary-location)
    - 📝 [Manual Installation](#3-manual-installation)
        - đŸ’ģ [Win 7](https://github.com/Ghost6446/StreamingCommunity_api/wiki/Installation#win-7)
        - 📱 [Termux](https://github.com/Ghost6446/StreamingCommunity_api/wiki/Termux)
</details>

<details>
<summary>âš™ī¸ Configuration & Usage</summary>

- âš™ī¸ [Configuration](#configuration)
    - 🔧 [Default](#default-settings)
    - 📩 [Request](#requests-settings)
    - đŸ“Ĩ [Download](#m3u8_download-settings)
    - 🔍 [Parser](#m3u8_parser-settings)
- 📝 [Command](#command)
- 🔍 [Global search](#global-search)
- đŸ’ģ [Examples of terminal](#examples-of-terminal-usage)
</details>

<details>
<summary>🔧 Advanced Features</summary>

- 🔧 [Manual domain configuration](#update-domains)
- đŸŗ [Docker](#docker)
- 📝 [Telegram Usage](#telegram-usage)
- 🧩 [Hook/Plugin System](#hookplugin-system)
</details>

<details>
<summary>â„šī¸ Help & Support</summary>

- 🎓 [Tutorial](#tutorials)
- 📝 [To do](#to-do)
- âš ī¸ [Disclaimer](#disclaimer)
</details>

# Installation

## 1. PyPI Installation

Install directly from PyPI:

```bash
pip install StreamingCommunity
```

Update to the latest version:

```bash
pip install --upgrade StreamingCommunity
```

## Quick Start

Create a simple script (`run_streaming.py`) to launch the main application:

```python
from StreamingCommunity.run import main

if __name__ == "__main__":
    main()
```

Run the script:

```bash
python run_streaming.py
```

## Modules

<details>
<summary>đŸ“Ĩ HLS Downloader</summary>

Download HTTP Live Streaming (HLS) content from m3u8 URLs.

```python
from StreamingCommunity import HLS_Downloader

# Initialize with m3u8 URL and optional output path
downloader = HLS_Downloader(
    m3u8_url="https://example.com/stream.m3u8",
    output_path="/downloads/video.mp4"  # Optional
)

# Start the download
downloader.download()
```

See [HLS example](./Test/Download/HLS.py) for complete usage.
</details>

<details>
<summary>đŸ“Ŋī¸ MP4 Downloader</summary>

Direct MP4 file downloader with support for custom headers and referrer.

```python
from StreamingCommunity import MP4_downloader

# Basic usage
downloader = MP4_downloader(
    url="https://example.com/video.mp4",
    path="/downloads/saved_video.mp4"
)

# Advanced usage with custom headers and referrer
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
downloader = MP4_downloader(
    url="https://example.com/video.mp4",
    path="/downloads/saved_video.mp4",
    referer="https://example.com",
    headers_=headers
)

# Start download
downloader.download()
```

See [MP4 example](./Test/Download/MP4.py) for complete usage.
</details>

<details>
<summary>🧲 Torrent Client</summary>

Download content via torrent magnet links.

```python
from StreamingCommunity import TOR_downloader

# Initialize torrent client
client = TOR_downloader()

# Add magnet link
client.add_magnet_link("magnet:?xt=urn:btih:example_hash&dn=example_name", save_path=".")

# Start download
client.start_download()
```

See [Torrent example](./Test/Download/TOR.py) for complete usage.
</details>

<details>
<summary>đŸŽžī¸ DASH Downloader</summary>

```python
license_url = "https://example.com/stream.mpd"
mpd_url = "https://example.com/get_license"

dash_process = DASH_Downloader(
    cdm_device=get_wvd_path(),
    license_url=license_url,
    mpd_url=mpd_url,
    output_path="output.mp4",
)
dash_process.parse_manifest()

if dash_process.download_and_decrypt():
    dash_process.finalize_output()

dash_process.get_status()
```

</details>

## Binary Location

<details>
<summary>📂 Default Locations</summary>

- **Windows**: `C:\binary`
- **MacOS**: `~/Applications/binary`
- **Linux**: `~/.local/bin/binary`
</details>

<details>
<summary>đŸĒŸ Windows Configuration</summary>

1. Move the binary folder from `C:\binary` to your desired location
2. Add the new path to Windows environment variables:
   - Open Start menu and search for "Environment Variables"
   - Click "Edit the system environment variables"
   - Click "Environment Variables" button
   - Under "System Variables", find and select "Path"
   - Click "Edit"
   - Add the new binary folder path
   - Click "OK" to save changes

For detailed Windows PATH instructions, see the [Windows PATH guide](https://www.eukhost.com/kb/how-to-add-to-the-path-on-windows-10-and-windows-11/).
</details>

<details>
<summary>🍎 MacOS Configuration</summary>

1. Move the binary folder from `~/Applications/binary` to your desired location
2. Add the new path to your shell's configuration file:
   ```bash
   # For bash (edit ~/.bash_profile)
   export PATH="/your/custom/path:$PATH"

   # For zsh (edit ~/.zshrc)
   export PATH="/your/custom/path:$PATH"
   ```
3. Reload your shell configuration:
   ```bash
   # For bash
   source ~/.bash_profile

   # For zsh
   source ~/.zshrc
   ```
</details>

<details>
<summary>🐧 Linux Configuration</summary>

1. Move the binary folder from `~/.local/bin/binary` to your desired location
2. Add the new path to your shell's configuration file:
   ```bash
   # For bash (edit ~/.bashrc)
   export PATH="/your/custom/path:$PATH"

   # For zsh (edit ~/.zshrc)
   export PATH="/your/custom/path:$PATH"
   ```
3. Apply the changes:
   ```bash
   source ~/.bashrc   # for bash
   # or
   source ~/.zshrc    # for zsh
   ```
</details>

> [!IMPORTANT]
> After moving the binary folder, ensure that all executables (ffmpeg, ffprobe, ffplay) are present in the new location and have the correct permissions:
> - Windows: `.exe` extensions required
> - MacOS/Linux: Ensure files have execute permissions (`chmod +x filename`)

## 3. Manual Installation

<details>
<summary>📋 Requirements</summary>

Prerequisites:
* [Python](https://www.python.org/downloads/) > 3.8
* [FFmpeg](https://www.gyan.dev/ffmpeg/builds/)
</details>

<details>
<summary>âš™ī¸ Python Dependencies</summary>

```bash
pip install -r requirements.txt
```
</details>

<details>
<summary>🚀 Usage</summary>

#### On Windows:

```powershell
python test_run.py
```

#### On Linux/MacOS:

```bash
python3 test_run.py
```
</details>

## Update

Keep your script up to date with the latest features by running:

### On Windows:

```powershell
python update.py
```

### On Linux/MacOS:

```bash
python3 update.py
```

<br>

## Update Domains

<details>
<summary>🌐 Domain Configuration Methods</summary>

There are two ways to manage the domains for the supported websites:

### 1. Online Domain Fetching (Recommended)

Set `fetch_domain_online` to `true` in your `config.json`:

```json
{
   "DEFAULT": {
      "fetch_domain_online": true
   }
}
```

This will:
- Download the latest domains from the GitHub repository
- Automatically save them to a local `domains.json` file
- Ensure you always have the most up-to-date streaming site domains

### 2. Local Domain Configuration

Set `fetch_domain_online` to `false` to use a local configuration:

```json
{
   "DEFAULT": {
      "fetch_domain_online": false
   }
}
```

Then create a `domains.json` file in the root directory with your domain configuration:

```json
{
   "altadefinizione": {
       "domain": "si",
       "full_url": "https://altadefinizione.si/"
   },
   "streamingcommunity": {
       "domain": "best",
       "full_url": "https://streamingcommunity.best/"
   }
}
```

### 3. Automatic Fallback

If online fetching fails, the script will automatically attempt to use the local `domains.json` file as a fallback, ensuring maximum reliability.

#### 💡 Adding a New Site
If you want to request a new site to be added to the repository, message us on the Discord server!

</details>

## Hook/Plugin System

<details>
<summary>🧩 Run custom scripts before/after the main execution</summary>

Define pre/post hooks in `config.json` under the `HOOKS` section. Supported types:

- **python**: runs `script.py` with the current Python interpreter
- **bash/sh**: runs via `bash`/`sh` on macOS/Linux
- **bat/cmd**: runs via `cmd /c` on Windows
- Inline **command**: use `command` instead of `path`

Sample configuration:

```json
{
  "HOOKS": {
    "pre_run": [
      {
        "name": "prepare-env",
        "type": "python",
        "path": "scripts/prepare.py",
        "args": ["--clean"],
        "env": {"MY_FLAG": "1"},
        "cwd": "~",
        "os": ["linux", "darwin"],
        "timeout": 60,
        "enabled": true,
        "continue_on_error": true
      }
    ],
    "post_run": [
      {
        "name": "notify",
        "type": "bash",
        "command": "echo 'Download completed'"
      }
    ]
  }
}
```

Notes:

- **os**: optional OS filter (`windows`, `darwin` (`darwin` is used for MacOS), `linux`).
- **args**: list of arguments passed to the script.
- **env**: additional environment variables.
- **cwd**: working directory for the script; supports `~` and environment variables.
- **continue_on_error**: if `false`, the app stops when the hook fails.
- **timeout**: in seconds; when exceeded the hook fails.

Hooks are executed automatically by `run.py` before (`pre_run`) and after (`post_run`) the main execution.

</details>

# Configuration

<details>
<summary>âš™ī¸ Overview</summary>

You can change some behaviors by tweaking the configuration file. The configuration file is divided into several main sections.
</details>

<details>
<summary>🔧 DEFAULT Settings</summary>

```json
{
    "DEFAULT": {
        "debug": false,
        "show_message": true,
        "show_trending": true,
        "fetch_domain_online": true,
        "telegram_bot": false,
        "validate_github_config": false
    }
}
```

- `debug`: Enables debug logging
- `show_message`: Displays informational messages
- `show_trending`: Shows trending content
- `fetch_domain_online`: If true, downloads domains from GitHub repository and saves to local file; if false, uses existing local domains.json file
- `telegram_bot`: Enables Telegram bot integration
- `validate_github_config`: If set to false, disables validation and updating of configuration from GitHub
</details>

<details>
<summary>📁 OUT_FOLDER Settings</summary>

```json
{
    "OUT_FOLDER": {
        "root_path": "Video",
        "movie_folder_name": "Movie",
        "serie_folder_name": "Serie",
        "anime_folder_name": "Anime",
        "map_episode_name": "E%(episode)_%(episode_name)",
        "add_siteName": false
    }
}
```

#### Directory Configuration
- `root_path`: Directory where all videos will be saved
  * Windows: `C:\\MyLibrary\\Folder` or `\\\\MyServer\\MyLibrary` (network folder)
  * Linux/MacOS: `Desktop/MyLibrary/Folder`

#### Folder Names
- `movie_folder_name`: Subdirectory for movies (can be changed with `--movie_folder_name`)
- `serie_folder_name`: Subdirectory for TV series (can be changed with `--serie_folder_name`)
- `anime_folder_name`: Subdirectory for anime (can be changed with `--anime_folder_name`)

#### Episode Naming
- `map_episode_name`: Template for episode filenames
  * `%(tv_name)`: Name of TV Show
  * `%(season)`: Season number
  * `%(episode)`: Episode number
  * `%(episode_name)`: Episode name
  * Can be changed with `--map_episode_name`

#### Additional Options
- `add_siteName`: Appends site_name to root path (can be changed with `--add_siteName true/false`)
</details>

<details>
<summary>🔄 QBIT_CONFIG Settings</summary>

```json
{
    "QBIT_CONFIG": {
        "host": "192.168.1.51",
        "port": "6666",
        "user": "admin",
        "pass": "adminadmin"
    }
}
```

To enable qBittorrent integration, follow the setup guide [here](https://github.com/lgallard/qBittorrent-Controller/wiki/How-to-enable-the-qBittorrent-Web-UI).
</details>

<details>
<summary>📡 REQUESTS Settings</summary>

```json
{
    "REQUESTS": {
        "verify": false,
        "timeout": 20,
        "max_retry": 8,
        "proxy": {
            "http": "http://username:password@host:port",
            "https": "https://username:password@host:port"
        }
    }
}
```

- `verify`: Verifies SSL certificates
- `timeout`: Maximum timeout (in seconds) for each request
- `max_retry`: Number of retry attempts per segment during M3U8 index download
- `proxy`: Proxy configuration for HTTP/HTTPS requests
  * Set to empty string `""` to disable proxies (default)
  * Example with authentication:
    ```json
    "proxy": {
        "http": "http://username:password@host:port",
        "https": "https://username:password@host:port"
    }
    ```
  * Example without authentication:
    ```json
    "proxy": {
        "http": "http://host:port",
        "https": "https://host:port"
    }
    ```
</details>

<details>
<summary>đŸ“Ĩ M3U8_DOWNLOAD Settings</summary>

```json
{
    "M3U8_DOWNLOAD": {
        "tqdm_delay": 0.01,
        "default_video_workser": 12,
        "default_audio_workser": 12,
        "segment_timeout": 8,
        "specific_list_audio": [
            "ita"
        ],
        "download_subtitle": true,
        "merge_subs": true,
        "specific_list_subtitles": [
            "ita",    // Specify language codes or use ["*"] to download all available subtitles
            "eng"
        ],
        "cleanup_tmp_folder": true
    }
}
```

#### Performance Settings
- `tqdm_delay`: Delay between progress bar updates
- `default_video_workser`: Number of threads for video download
  * Can be changed with `--default_video_worker <number>`
- `default_audio_workser`: Number of threads for audio download
  * Can be changed with `--default_audio_worker <number>`
- `segment_timeout`: Timeout for downloading individual segments

#### Audio Settings
- `download_audio`: Whether to download audio tracks
- `specific_list_audio`: List of audio languages to download
  * Can be changed with `--specific_list_audio ita,eng`

#### Subtitle Settings
- `download_subtitle`: Whether to download subtitles
- `merge_subs`: Whether to merge subtitles with video
- `specific_list_subtitles`: List of subtitle languages to download
  * Use `["*"]` to download all available subtitles
  * Or specify individual languages like `["ita", "eng"]`
  * Can be changed with `--specific_list_subtitles ita,eng`

#### Cleanup
- `cleanup_tmp_folder`: Remove temporary .ts files after download
</details>

<details>
<summary>🌍 Available Language Codes</summary>

| European        | Asian           | Middle Eastern  | Others          |
|-----------------|-----------------|-----------------|-----------------|
| ita - Italian   | chi - Chinese   | ara - Arabic    | eng - English   |
| spa - Spanish   | jpn - Japanese  | heb - Hebrew    | por - Portuguese|
| fre - French    | kor - Korean    | tur - Turkish   | fil - Filipino  |
| ger - German    | hin - Hindi     |                 | ind - Indonesian|
| rus - Russian   | mal - Malayalam |                 | may - Malay     |
| swe - Swedish   | tam - Tamil     |                 | vie - Vietnamese|
| pol - Polish    | tel - Telugu    |                 |                 |
| ukr - Ukrainian | tha - Thai      |                 |                 |
</details>

<details>
<summary>đŸŽĨ M3U8_CONVERSION Settings</summary>

```json
{
    "M3U8_CONVERSION": {
        "use_codec": false,
        "use_vcodec": true,
        "use_acodec": true,
        "use_bitrate": true,
        "use_gpu": false,
        "default_preset": "ultrafast"
    }
}
```

#### Basic Settings
- `use_codec`: Use specific codec settings
- `use_vcodec`: Use specific video codec
- `use_acodec`: Use specific audio codec
- `use_bitrate`: Apply bitrate settings
- `use_gpu`: Enable GPU acceleration (if available)
- `default_preset`: FFmpeg encoding preset

#### Encoding Presets
The `default_preset` configuration can be set to:
- `ultrafast`: Extremely fast conversion but larger file size
- `superfast`: Very fast with good quality/size ratio
- `veryfast`: Fast with good compression
- `faster`: Optimal balance for most users
- `fast`: Good compression, moderate time
- `medium`: FFmpeg default setting
- `slow`: High quality, slower process
- `slower`: Very high quality, slow process
- `veryslow`: Maximum quality, very slow process

#### GPU Acceleration
When `use_gpu` is enabled, supports:
- NVIDIA: NVENC 
- AMD: AMF
- Intel: QSV

Note: Requires updated drivers and FFmpeg with hardware acceleration support.
</details>

<details>
<summary>🔍 M3U8_PARSER Settings</summary>

```json
{
    "M3U8_PARSER": {
        "force_resolution": "Best"
    }
}
```

#### Resolution Options
- `force_resolution`: Choose video resolution:
  * `"Best"`: Highest available resolution
  * `"Worst"`: Lowest available resolution
  * `"720p"`: Force 720p resolution
  * Specific resolutions:
    - 1080p (1920x1080)
    - 720p (1280x720)
    - 480p (640x480)
    - 360p (640x360)
    - 320p (480x320)
    - 240p (426x240)
    - 240p (320x240)
    - 144p (256x144)

</details>

# Global Search

<details>
<summary>🔍 Feature Overview</summary>

You can now search across multiple streaming sites at once using the Global Search feature. This allows you to find content more efficiently without having to search each site individually.
</details>

<details>
<summary>đŸŽ¯ Search Options</summary>

When using Global Search, you have three ways to select which sites to search:

1. **Search all sites** - Searches across all available streaming sites
2. **Search by category** - Group sites by their categories (movies, series, anime, etc.)
3. **Select specific sites** - Choose individual sites to include in your search
</details>

<details>
<summary>📝 Navigation and Selection</summary>

After performing a search:

1. Results are displayed in a consolidated table showing:
   - Title
   - Media type (movie, TV series, etc.)
   - Source site

2. Select an item by number to view details or download

3. The system will automatically use the appropriate site's API to handle the download
</details>

<details>
<summary>âŒ¨ī¸ Command Line Arguments</summary>

The Global Search can be configured from the command line:

- `--global` - Perform a global search across multiple sites.
- `-s`, `--search` - Specify the search terms.
</details>

# Examples of terminal usage

```bash
# Run a specific site by name with a search term
python test_run.py --site streamingcommunity --search "interstellar"

# Run a specific site by numeric index (as shown in -h help)
python test_run.py --site 0 --search "interstellar"

# Auto-download the first result from search (requires --site and --search)
python test_run.py --site streamingcommunity --search "interstellar" --auto-first

# Show help (includes available sites by name and by index)
python test_run.py -h

# Change video and audio workers
python test_run.py --default_video_worker 8 --default_audio_worker 8

# Set specific languages
python test_run.py --specific_list_audio ita,eng --specific_list_subtitles eng,spa

# Keep console open after download
python test_run.py --not_close true

# Use global search
python test_run.py --global -s "cars"

# Select specific category
python test_run.py --category 1       # Search in anime category
python test_run.py --category 2       # Search in movies & series
python test_run.py --category 3       # Search in series
python test_run.py --category 4       # Search in torrent category

# If installed via pip, you can also use the entrypoint directly
streamingcommunity --site streamingcommunity --search "interstellar" --auto-first
```

# Docker

<details>
<summary>đŸŗ Basic Setup</summary>

Build the image:
```
docker build -t streaming-community-api .
```

Run the container with Cloudflare DNS for better connectivity:
```
docker run -it --dns 1.1.1.1 -p 8000:8000 streaming-community-api
```
</details>

<details>
<summary>💾 Custom Storage Location</summary>

By default the videos will be saved in `/app/Video` inside the container. To save them on your machine:

```
docker run -it --dns 9.9.9.9 -p 8000:8000 -v /path/to/download:/app/Video streaming-community-api
```
</details>

<details>
<summary>đŸ› ī¸ Quick Setup with Make</summary>

Inside the Makefile (install `make`) are already configured two commands to build and run the container:

```
make build-container

# set your download directory as ENV variable
make LOCAL_DIR=/path/to/download run-container
```

The `run-container` command mounts also the `config.json` file, so any change to the configuration file is reflected immediately without having to rebuild the image.
</details>

# Telegram Usage

<details>
<summary>âš™ī¸ Basic Configuration</summary>

The bot was created to replace terminal commands and allow interaction via Telegram. Each download runs within a screen session, enabling multiple downloads to run simultaneously.

To run the bot in the background, simply start it inside a screen session and then press Ctrl + A, followed by D, to detach from the session without stopping the bot.

Command Functions:

🔹 /start – Starts a new search for a download. This command performs the same operations as manually running the script in the terminal with test_run.py.

🔹 /list – Displays the status of active downloads, with options to:

Stop an incorrect download using /stop <ID>.

View the real-time output of a download using /screen <ID>.

⚠ Warning: If a download is interrupted, incomplete files may remain in the folder specified in config.json. These files must be deleted manually to avoid storage or management issues.

🛠 Configuration: Currently, the bot's settings are stored in the config.json file, which is located in the same directory as the telegram_bot.py script.

## .env Example:

You need to create an .env file and enter your Telegram token and user ID to authorize only one user to use it

```
TOKEN_TELEGRAM=IlTuo2131TOKEN$12D3Telegram
AUTHORIZED_USER_ID=12345678
DEBUG=False
```
</details>

<details>
<summary>đŸ“Ĩ Dependencies & Launch</summary>

Install dependencies:
```bash
pip install -r requirements.txt
```

Start the bot (from /StreamingCommunity/TelegramHelp):
```bash
python3 telegram_bot.py
```
</details>

# SITE_LOGIN key  
To use some site, you may need a SITE_LOGIN key.  
See [guide.md](.github/.site/guide.md) for instructions on how to obtain it.

# Tutorials

- [Windows](https://www.youtube.com/watch?v=mZGqK4wdN-k)
- [Linux](https://www.youtube.com/watch?v=0qUNXPE_mTg)
- [Pypy](https://www.youtube.com/watch?v=C6m9ZKOK0p4)
- [Compiled](https://www.youtube.com/watch?v=pm4lqsxkTVo)

# To Do

- To Finish [website API](https://github.com/Arrowar/StreamingCommunity/tree/test_gui_1)
- To finish [website API 2](https://github.com/hydrosh/StreamingCommunity/tree/test_gui_1)

## Useful Project

### đŸŽ¯ [Unit3Dup](https://github.com/31December99/Unit3Dup)
Bot in Python per la generazione e l'upload automatico di torrent su tracker basati su Unit3D.


### 🇮🇹 [MammaMia](https://github.com/UrloMythus/MammaMia)
Addon per Stremio che consente lo streaming HTTPS di film, serie, anime e TV in diretta in lingua italiana.

### 🧩 [streamingcommunity-unofficialapi](https://github.com/Blu-Tiger/streamingcommunity-unofficialapi)
API non ufficiale per accedere ai contenuti del sito italiano StreamingCommunity.

# Disclaimer

This software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.

> **Note:** DASH downloads require a valid L3 CDM (Content Decryption Module) to proceed. This project does not provide, include, or facilitate obtaining any CDM. Users are responsible for ensuring compliance with all applicable laws and requirements regarding DRM and decryption modules.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Lovi-0/StreamingCommunity",
    "name": "StreamingCommunity",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "streaming community",
    "author": "Lovi-0",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/b2/c4/7314692e90d7740e3403f4e8f9ce395a6c364b242f34eef84f921b08a4ef/streamingcommunity-3.3.0.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n\n## \ud83d\udcca Project Status & Info\n[![PyPI Version](https://img.shields.io/pypi/v/streamingcommunity?logo=pypi&logoColor=white&labelColor=2d3748&color=3182ce&style=for-the-badge)](https://pypi.org/project/streamingcommunity)\n[![Last Commit](https://img.shields.io/github/last-commit/Arrowar/StreamingCommunity?logo=git&logoColor=white&labelColor=2d3748&color=805ad5&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/commits)\n[![Issues](https://img.shields.io/github/issues/Arrowar/StreamingCommunity?logo=github&logoColor=white&labelColor=2d3748&color=ed8936&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/issues)\n[![License](https://img.shields.io/github/license/Arrowar/StreamingCommunity?logo=gnu&logoColor=white&labelColor=2d3748&color=e53e3e&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/blob/main/LICENSE)\n\n## \ud83d\udc9d Support the Project\n\n[![Donate PayPal](https://img.shields.io/badge/\ud83d\udcb3_Donate-PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white&labelColor=2d3748)](https://www.paypal.com/donate/?hosted_button_id=UXTWMT8P6HE2C)\n## \ud83d\ude80 Download & Install\n\n[![Windows](https://img.shields.io/badge/\ud83e\ude9f_Windows-0078D4?style=for-the-badge&logo=windows&logoColor=white&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_win.exe)\n[![macOS](https://img.shields.io/badge/\ud83c\udf4e_macOS-000000?style=for-the-badge&logo=apple&logoColor=white&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_mac)\n[![Linux latest](https://img.shields.io/badge/\ud83d\udc27_Linux_latest-FCC624?style=for-the-badge&logo=linux&logoColor=black&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_latest)\n[![Linux 22.04](https://img.shields.io/badge/\ud83d\udc27_Linux_22.04-FCC624?style=for-the-badge&logo=linux&logoColor=black&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_previous)\n---\n\n*\u26a1 **Quick Start:** `pip install streamingcommunity` or download the executable for your platform above*\n\n</div>\n\n# \ud83d\udccb Table of Contents\n\n<details>\n<summary>\ud83d\udce6 Installation</summary>\n\n- \ud83d\udd04 [Update Domains](#update-domains)\n- \ud83c\udf10 [Available Sites](https://arrowar.github.io/StreamingCommunity/)\n- \ud83d\udee0\ufe0f [Installation](#installation)\n    - \ud83d\udce6 [PyPI Installation](#1-pypi-installation)\n    - \ud83d\udd04 [Automatic Installation](#2-automatic-installation)\n    - \ud83d\udd27 [Binary Location](#binary-location)\n    - \ud83d\udcdd [Manual Installation](#3-manual-installation)\n        - \ud83d\udcbb [Win 7](https://github.com/Ghost6446/StreamingCommunity_api/wiki/Installation#win-7)\n        - \ud83d\udcf1 [Termux](https://github.com/Ghost6446/StreamingCommunity_api/wiki/Termux)\n</details>\n\n<details>\n<summary>\u2699\ufe0f Configuration & Usage</summary>\n\n- \u2699\ufe0f [Configuration](#configuration)\n    - \ud83d\udd27 [Default](#default-settings)\n    - \ud83d\udce9 [Request](#requests-settings)\n    - \ud83d\udce5 [Download](#m3u8_download-settings)\n    - \ud83d\udd0d [Parser](#m3u8_parser-settings)\n- \ud83d\udcdd [Command](#command)\n- \ud83d\udd0d [Global search](#global-search)\n- \ud83d\udcbb [Examples of terminal](#examples-of-terminal-usage)\n</details>\n\n<details>\n<summary>\ud83d\udd27 Advanced Features</summary>\n\n- \ud83d\udd27 [Manual domain configuration](#update-domains)\n- \ud83d\udc33 [Docker](#docker)\n- \ud83d\udcdd [Telegram Usage](#telegram-usage)\n- \ud83e\udde9 [Hook/Plugin System](#hookplugin-system)\n</details>\n\n<details>\n<summary>\u2139\ufe0f Help & Support</summary>\n\n- \ud83c\udf93 [Tutorial](#tutorials)\n- \ud83d\udcdd [To do](#to-do)\n- \u26a0\ufe0f [Disclaimer](#disclaimer)\n</details>\n\n# Installation\n\n## 1. PyPI Installation\n\nInstall directly from PyPI:\n\n```bash\npip install StreamingCommunity\n```\n\nUpdate to the latest version:\n\n```bash\npip install --upgrade StreamingCommunity\n```\n\n## Quick Start\n\nCreate a simple script (`run_streaming.py`) to launch the main application:\n\n```python\nfrom StreamingCommunity.run import main\n\nif __name__ == \"__main__\":\n    main()\n```\n\nRun the script:\n\n```bash\npython run_streaming.py\n```\n\n## Modules\n\n<details>\n<summary>\ud83d\udce5 HLS Downloader</summary>\n\nDownload HTTP Live Streaming (HLS) content from m3u8 URLs.\n\n```python\nfrom StreamingCommunity import HLS_Downloader\n\n# Initialize with m3u8 URL and optional output path\ndownloader = HLS_Downloader(\n    m3u8_url=\"https://example.com/stream.m3u8\",\n    output_path=\"/downloads/video.mp4\"  # Optional\n)\n\n# Start the download\ndownloader.download()\n```\n\nSee [HLS example](./Test/Download/HLS.py) for complete usage.\n</details>\n\n<details>\n<summary>\ud83d\udcfd\ufe0f MP4 Downloader</summary>\n\nDirect MP4 file downloader with support for custom headers and referrer.\n\n```python\nfrom StreamingCommunity import MP4_downloader\n\n# Basic usage\ndownloader = MP4_downloader(\n    url=\"https://example.com/video.mp4\",\n    path=\"/downloads/saved_video.mp4\"\n)\n\n# Advanced usage with custom headers and referrer\nheaders = {\n    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\"\n}\ndownloader = MP4_downloader(\n    url=\"https://example.com/video.mp4\",\n    path=\"/downloads/saved_video.mp4\",\n    referer=\"https://example.com\",\n    headers_=headers\n)\n\n# Start download\ndownloader.download()\n```\n\nSee [MP4 example](./Test/Download/MP4.py) for complete usage.\n</details>\n\n<details>\n<summary>\ud83e\uddf2 Torrent Client</summary>\n\nDownload content via torrent magnet links.\n\n```python\nfrom StreamingCommunity import TOR_downloader\n\n# Initialize torrent client\nclient = TOR_downloader()\n\n# Add magnet link\nclient.add_magnet_link(\"magnet:?xt=urn:btih:example_hash&dn=example_name\", save_path=\".\")\n\n# Start download\nclient.start_download()\n```\n\nSee [Torrent example](./Test/Download/TOR.py) for complete usage.\n</details>\n\n<details>\n<summary>\ud83c\udf9e\ufe0f DASH Downloader</summary>\n\n```python\nlicense_url = \"https://example.com/stream.mpd\"\nmpd_url = \"https://example.com/get_license\"\n\ndash_process = DASH_Downloader(\n    cdm_device=get_wvd_path(),\n    license_url=license_url,\n    mpd_url=mpd_url,\n    output_path=\"output.mp4\",\n)\ndash_process.parse_manifest()\n\nif dash_process.download_and_decrypt():\n    dash_process.finalize_output()\n\ndash_process.get_status()\n```\n\n</details>\n\n## Binary Location\n\n<details>\n<summary>\ud83d\udcc2 Default Locations</summary>\n\n- **Windows**: `C:\\binary`\n- **MacOS**: `~/Applications/binary`\n- **Linux**: `~/.local/bin/binary`\n</details>\n\n<details>\n<summary>\ud83e\ude9f Windows Configuration</summary>\n\n1. Move the binary folder from `C:\\binary` to your desired location\n2. Add the new path to Windows environment variables:\n   - Open Start menu and search for \"Environment Variables\"\n   - Click \"Edit the system environment variables\"\n   - Click \"Environment Variables\" button\n   - Under \"System Variables\", find and select \"Path\"\n   - Click \"Edit\"\n   - Add the new binary folder path\n   - Click \"OK\" to save changes\n\nFor detailed Windows PATH instructions, see the [Windows PATH guide](https://www.eukhost.com/kb/how-to-add-to-the-path-on-windows-10-and-windows-11/).\n</details>\n\n<details>\n<summary>\ud83c\udf4e MacOS Configuration</summary>\n\n1. Move the binary folder from `~/Applications/binary` to your desired location\n2. Add the new path to your shell's configuration file:\n   ```bash\n   # For bash (edit ~/.bash_profile)\n   export PATH=\"/your/custom/path:$PATH\"\n\n   # For zsh (edit ~/.zshrc)\n   export PATH=\"/your/custom/path:$PATH\"\n   ```\n3. Reload your shell configuration:\n   ```bash\n   # For bash\n   source ~/.bash_profile\n\n   # For zsh\n   source ~/.zshrc\n   ```\n</details>\n\n<details>\n<summary>\ud83d\udc27 Linux Configuration</summary>\n\n1. Move the binary folder from `~/.local/bin/binary` to your desired location\n2. Add the new path to your shell's configuration file:\n   ```bash\n   # For bash (edit ~/.bashrc)\n   export PATH=\"/your/custom/path:$PATH\"\n\n   # For zsh (edit ~/.zshrc)\n   export PATH=\"/your/custom/path:$PATH\"\n   ```\n3. Apply the changes:\n   ```bash\n   source ~/.bashrc   # for bash\n   # or\n   source ~/.zshrc    # for zsh\n   ```\n</details>\n\n> [!IMPORTANT]\n> After moving the binary folder, ensure that all executables (ffmpeg, ffprobe, ffplay) are present in the new location and have the correct permissions:\n> - Windows: `.exe` extensions required\n> - MacOS/Linux: Ensure files have execute permissions (`chmod +x filename`)\n\n## 3. Manual Installation\n\n<details>\n<summary>\ud83d\udccb Requirements</summary>\n\nPrerequisites:\n* [Python](https://www.python.org/downloads/) > 3.8\n* [FFmpeg](https://www.gyan.dev/ffmpeg/builds/)\n</details>\n\n<details>\n<summary>\u2699\ufe0f Python Dependencies</summary>\n\n```bash\npip install -r requirements.txt\n```\n</details>\n\n<details>\n<summary>\ud83d\ude80 Usage</summary>\n\n#### On Windows:\n\n```powershell\npython test_run.py\n```\n\n#### On Linux/MacOS:\n\n```bash\npython3 test_run.py\n```\n</details>\n\n## Update\n\nKeep your script up to date with the latest features by running:\n\n### On Windows:\n\n```powershell\npython update.py\n```\n\n### On Linux/MacOS:\n\n```bash\npython3 update.py\n```\n\n<br>\n\n## Update Domains\n\n<details>\n<summary>\ud83c\udf10 Domain Configuration Methods</summary>\n\nThere are two ways to manage the domains for the supported websites:\n\n### 1. Online Domain Fetching (Recommended)\n\nSet `fetch_domain_online` to `true` in your `config.json`:\n\n```json\n{\n   \"DEFAULT\": {\n      \"fetch_domain_online\": true\n   }\n}\n```\n\nThis will:\n- Download the latest domains from the GitHub repository\n- Automatically save them to a local `domains.json` file\n- Ensure you always have the most up-to-date streaming site domains\n\n### 2. Local Domain Configuration\n\nSet `fetch_domain_online` to `false` to use a local configuration:\n\n```json\n{\n   \"DEFAULT\": {\n      \"fetch_domain_online\": false\n   }\n}\n```\n\nThen create a `domains.json` file in the root directory with your domain configuration:\n\n```json\n{\n   \"altadefinizione\": {\n       \"domain\": \"si\",\n       \"full_url\": \"https://altadefinizione.si/\"\n   },\n   \"streamingcommunity\": {\n       \"domain\": \"best\",\n       \"full_url\": \"https://streamingcommunity.best/\"\n   }\n}\n```\n\n### 3. Automatic Fallback\n\nIf online fetching fails, the script will automatically attempt to use the local `domains.json` file as a fallback, ensuring maximum reliability.\n\n#### \ud83d\udca1 Adding a New Site\nIf you want to request a new site to be added to the repository, message us on the Discord server!\n\n</details>\n\n## Hook/Plugin System\n\n<details>\n<summary>\ud83e\udde9 Run custom scripts before/after the main execution</summary>\n\nDefine pre/post hooks in `config.json` under the `HOOKS` section. Supported types:\n\n- **python**: runs `script.py` with the current Python interpreter\n- **bash/sh**: runs via `bash`/`sh` on macOS/Linux\n- **bat/cmd**: runs via `cmd /c` on Windows\n- Inline **command**: use `command` instead of `path`\n\nSample configuration:\n\n```json\n{\n  \"HOOKS\": {\n    \"pre_run\": [\n      {\n        \"name\": \"prepare-env\",\n        \"type\": \"python\",\n        \"path\": \"scripts/prepare.py\",\n        \"args\": [\"--clean\"],\n        \"env\": {\"MY_FLAG\": \"1\"},\n        \"cwd\": \"~\",\n        \"os\": [\"linux\", \"darwin\"],\n        \"timeout\": 60,\n        \"enabled\": true,\n        \"continue_on_error\": true\n      }\n    ],\n    \"post_run\": [\n      {\n        \"name\": \"notify\",\n        \"type\": \"bash\",\n        \"command\": \"echo 'Download completed'\"\n      }\n    ]\n  }\n}\n```\n\nNotes:\n\n- **os**: optional OS filter (`windows`, `darwin` (`darwin` is used for MacOS), `linux`).\n- **args**: list of arguments passed to the script.\n- **env**: additional environment variables.\n- **cwd**: working directory for the script; supports `~` and environment variables.\n- **continue_on_error**: if `false`, the app stops when the hook fails.\n- **timeout**: in seconds; when exceeded the hook fails.\n\nHooks are executed automatically by `run.py` before (`pre_run`) and after (`post_run`) the main execution.\n\n</details>\n\n# Configuration\n\n<details>\n<summary>\u2699\ufe0f Overview</summary>\n\nYou can change some behaviors by tweaking the configuration file. The configuration file is divided into several main sections.\n</details>\n\n<details>\n<summary>\ud83d\udd27 DEFAULT Settings</summary>\n\n```json\n{\n    \"DEFAULT\": {\n        \"debug\": false,\n        \"show_message\": true,\n        \"show_trending\": true,\n        \"fetch_domain_online\": true,\n        \"telegram_bot\": false,\n        \"validate_github_config\": false\n    }\n}\n```\n\n- `debug`: Enables debug logging\n- `show_message`: Displays informational messages\n- `show_trending`: Shows trending content\n- `fetch_domain_online`: If true, downloads domains from GitHub repository and saves to local file; if false, uses existing local domains.json file\n- `telegram_bot`: Enables Telegram bot integration\n- `validate_github_config`: If set to false, disables validation and updating of configuration from GitHub\n</details>\n\n<details>\n<summary>\ud83d\udcc1 OUT_FOLDER Settings</summary>\n\n```json\n{\n    \"OUT_FOLDER\": {\n        \"root_path\": \"Video\",\n        \"movie_folder_name\": \"Movie\",\n        \"serie_folder_name\": \"Serie\",\n        \"anime_folder_name\": \"Anime\",\n        \"map_episode_name\": \"E%(episode)_%(episode_name)\",\n        \"add_siteName\": false\n    }\n}\n```\n\n#### Directory Configuration\n- `root_path`: Directory where all videos will be saved\n  * Windows: `C:\\\\MyLibrary\\\\Folder` or `\\\\\\\\MyServer\\\\MyLibrary` (network folder)\n  * Linux/MacOS: `Desktop/MyLibrary/Folder`\n\n#### Folder Names\n- `movie_folder_name`: Subdirectory for movies (can be changed with `--movie_folder_name`)\n- `serie_folder_name`: Subdirectory for TV series (can be changed with `--serie_folder_name`)\n- `anime_folder_name`: Subdirectory for anime (can be changed with `--anime_folder_name`)\n\n#### Episode Naming\n- `map_episode_name`: Template for episode filenames\n  * `%(tv_name)`: Name of TV Show\n  * `%(season)`: Season number\n  * `%(episode)`: Episode number\n  * `%(episode_name)`: Episode name\n  * Can be changed with `--map_episode_name`\n\n#### Additional Options\n- `add_siteName`: Appends site_name to root path (can be changed with `--add_siteName true/false`)\n</details>\n\n<details>\n<summary>\ud83d\udd04 QBIT_CONFIG Settings</summary>\n\n```json\n{\n    \"QBIT_CONFIG\": {\n        \"host\": \"192.168.1.51\",\n        \"port\": \"6666\",\n        \"user\": \"admin\",\n        \"pass\": \"adminadmin\"\n    }\n}\n```\n\nTo enable qBittorrent integration, follow the setup guide [here](https://github.com/lgallard/qBittorrent-Controller/wiki/How-to-enable-the-qBittorrent-Web-UI).\n</details>\n\n<details>\n<summary>\ud83d\udce1 REQUESTS Settings</summary>\n\n```json\n{\n    \"REQUESTS\": {\n        \"verify\": false,\n        \"timeout\": 20,\n        \"max_retry\": 8,\n        \"proxy\": {\n            \"http\": \"http://username:password@host:port\",\n            \"https\": \"https://username:password@host:port\"\n        }\n    }\n}\n```\n\n- `verify`: Verifies SSL certificates\n- `timeout`: Maximum timeout (in seconds) for each request\n- `max_retry`: Number of retry attempts per segment during M3U8 index download\n- `proxy`: Proxy configuration for HTTP/HTTPS requests\n  * Set to empty string `\"\"` to disable proxies (default)\n  * Example with authentication:\n    ```json\n    \"proxy\": {\n        \"http\": \"http://username:password@host:port\",\n        \"https\": \"https://username:password@host:port\"\n    }\n    ```\n  * Example without authentication:\n    ```json\n    \"proxy\": {\n        \"http\": \"http://host:port\",\n        \"https\": \"https://host:port\"\n    }\n    ```\n</details>\n\n<details>\n<summary>\ud83d\udce5 M3U8_DOWNLOAD Settings</summary>\n\n```json\n{\n    \"M3U8_DOWNLOAD\": {\n        \"tqdm_delay\": 0.01,\n        \"default_video_workser\": 12,\n        \"default_audio_workser\": 12,\n        \"segment_timeout\": 8,\n        \"specific_list_audio\": [\n            \"ita\"\n        ],\n        \"download_subtitle\": true,\n        \"merge_subs\": true,\n        \"specific_list_subtitles\": [\n            \"ita\",    // Specify language codes or use [\"*\"] to download all available subtitles\n            \"eng\"\n        ],\n        \"cleanup_tmp_folder\": true\n    }\n}\n```\n\n#### Performance Settings\n- `tqdm_delay`: Delay between progress bar updates\n- `default_video_workser`: Number of threads for video download\n  * Can be changed with `--default_video_worker <number>`\n- `default_audio_workser`: Number of threads for audio download\n  * Can be changed with `--default_audio_worker <number>`\n- `segment_timeout`: Timeout for downloading individual segments\n\n#### Audio Settings\n- `download_audio`: Whether to download audio tracks\n- `specific_list_audio`: List of audio languages to download\n  * Can be changed with `--specific_list_audio ita,eng`\n\n#### Subtitle Settings\n- `download_subtitle`: Whether to download subtitles\n- `merge_subs`: Whether to merge subtitles with video\n- `specific_list_subtitles`: List of subtitle languages to download\n  * Use `[\"*\"]` to download all available subtitles\n  * Or specify individual languages like `[\"ita\", \"eng\"]`\n  * Can be changed with `--specific_list_subtitles ita,eng`\n\n#### Cleanup\n- `cleanup_tmp_folder`: Remove temporary .ts files after download\n</details>\n\n<details>\n<summary>\ud83c\udf0d Available Language Codes</summary>\n\n| European        | Asian           | Middle Eastern  | Others          |\n|-----------------|-----------------|-----------------|-----------------|\n| ita - Italian   | chi - Chinese   | ara - Arabic    | eng - English   |\n| spa - Spanish   | jpn - Japanese  | heb - Hebrew    | por - Portuguese|\n| fre - French    | kor - Korean    | tur - Turkish   | fil - Filipino  |\n| ger - German    | hin - Hindi     |                 | ind - Indonesian|\n| rus - Russian   | mal - Malayalam |                 | may - Malay     |\n| swe - Swedish   | tam - Tamil     |                 | vie - Vietnamese|\n| pol - Polish    | tel - Telugu    |                 |                 |\n| ukr - Ukrainian | tha - Thai      |                 |                 |\n</details>\n\n<details>\n<summary>\ud83c\udfa5 M3U8_CONVERSION Settings</summary>\n\n```json\n{\n    \"M3U8_CONVERSION\": {\n        \"use_codec\": false,\n        \"use_vcodec\": true,\n        \"use_acodec\": true,\n        \"use_bitrate\": true,\n        \"use_gpu\": false,\n        \"default_preset\": \"ultrafast\"\n    }\n}\n```\n\n#### Basic Settings\n- `use_codec`: Use specific codec settings\n- `use_vcodec`: Use specific video codec\n- `use_acodec`: Use specific audio codec\n- `use_bitrate`: Apply bitrate settings\n- `use_gpu`: Enable GPU acceleration (if available)\n- `default_preset`: FFmpeg encoding preset\n\n#### Encoding Presets\nThe `default_preset` configuration can be set to:\n- `ultrafast`: Extremely fast conversion but larger file size\n- `superfast`: Very fast with good quality/size ratio\n- `veryfast`: Fast with good compression\n- `faster`: Optimal balance for most users\n- `fast`: Good compression, moderate time\n- `medium`: FFmpeg default setting\n- `slow`: High quality, slower process\n- `slower`: Very high quality, slow process\n- `veryslow`: Maximum quality, very slow process\n\n#### GPU Acceleration\nWhen `use_gpu` is enabled, supports:\n- NVIDIA: NVENC \n- AMD: AMF\n- Intel: QSV\n\nNote: Requires updated drivers and FFmpeg with hardware acceleration support.\n</details>\n\n<details>\n<summary>\ud83d\udd0d M3U8_PARSER Settings</summary>\n\n```json\n{\n    \"M3U8_PARSER\": {\n        \"force_resolution\": \"Best\"\n    }\n}\n```\n\n#### Resolution Options\n- `force_resolution`: Choose video resolution:\n  * `\"Best\"`: Highest available resolution\n  * `\"Worst\"`: Lowest available resolution\n  * `\"720p\"`: Force 720p resolution\n  * Specific resolutions:\n    - 1080p (1920x1080)\n    - 720p (1280x720)\n    - 480p (640x480)\n    - 360p (640x360)\n    - 320p (480x320)\n    - 240p (426x240)\n    - 240p (320x240)\n    - 144p (256x144)\n\n</details>\n\n# Global Search\n\n<details>\n<summary>\ud83d\udd0d Feature Overview</summary>\n\nYou can now search across multiple streaming sites at once using the Global Search feature. This allows you to find content more efficiently without having to search each site individually.\n</details>\n\n<details>\n<summary>\ud83c\udfaf Search Options</summary>\n\nWhen using Global Search, you have three ways to select which sites to search:\n\n1. **Search all sites** - Searches across all available streaming sites\n2. **Search by category** - Group sites by their categories (movies, series, anime, etc.)\n3. **Select specific sites** - Choose individual sites to include in your search\n</details>\n\n<details>\n<summary>\ud83d\udcdd Navigation and Selection</summary>\n\nAfter performing a search:\n\n1. Results are displayed in a consolidated table showing:\n   - Title\n   - Media type (movie, TV series, etc.)\n   - Source site\n\n2. Select an item by number to view details or download\n\n3. The system will automatically use the appropriate site's API to handle the download\n</details>\n\n<details>\n<summary>\u2328\ufe0f Command Line Arguments</summary>\n\nThe Global Search can be configured from the command line:\n\n- `--global` - Perform a global search across multiple sites.\n- `-s`, `--search` - Specify the search terms.\n</details>\n\n# Examples of terminal usage\n\n```bash\n# Run a specific site by name with a search term\npython test_run.py --site streamingcommunity --search \"interstellar\"\n\n# Run a specific site by numeric index (as shown in -h help)\npython test_run.py --site 0 --search \"interstellar\"\n\n# Auto-download the first result from search (requires --site and --search)\npython test_run.py --site streamingcommunity --search \"interstellar\" --auto-first\n\n# Show help (includes available sites by name and by index)\npython test_run.py -h\n\n# Change video and audio workers\npython test_run.py --default_video_worker 8 --default_audio_worker 8\n\n# Set specific languages\npython test_run.py --specific_list_audio ita,eng --specific_list_subtitles eng,spa\n\n# Keep console open after download\npython test_run.py --not_close true\n\n# Use global search\npython test_run.py --global -s \"cars\"\n\n# Select specific category\npython test_run.py --category 1       # Search in anime category\npython test_run.py --category 2       # Search in movies & series\npython test_run.py --category 3       # Search in series\npython test_run.py --category 4       # Search in torrent category\n\n# If installed via pip, you can also use the entrypoint directly\nstreamingcommunity --site streamingcommunity --search \"interstellar\" --auto-first\n```\n\n# Docker\n\n<details>\n<summary>\ud83d\udc33 Basic Setup</summary>\n\nBuild the image:\n```\ndocker build -t streaming-community-api .\n```\n\nRun the container with Cloudflare DNS for better connectivity:\n```\ndocker run -it --dns 1.1.1.1 -p 8000:8000 streaming-community-api\n```\n</details>\n\n<details>\n<summary>\ud83d\udcbe Custom Storage Location</summary>\n\nBy default the videos will be saved in `/app/Video` inside the container. To save them on your machine:\n\n```\ndocker run -it --dns 9.9.9.9 -p 8000:8000 -v /path/to/download:/app/Video streaming-community-api\n```\n</details>\n\n<details>\n<summary>\ud83d\udee0\ufe0f Quick Setup with Make</summary>\n\nInside the Makefile (install `make`) are already configured two commands to build and run the container:\n\n```\nmake build-container\n\n# set your download directory as ENV variable\nmake LOCAL_DIR=/path/to/download run-container\n```\n\nThe `run-container` command mounts also the `config.json` file, so any change to the configuration file is reflected immediately without having to rebuild the image.\n</details>\n\n# Telegram Usage\n\n<details>\n<summary>\u2699\ufe0f Basic Configuration</summary>\n\nThe bot was created to replace terminal commands and allow interaction via Telegram. Each download runs within a screen session, enabling multiple downloads to run simultaneously.\n\nTo run the bot in the background, simply start it inside a screen session and then press Ctrl + A, followed by D, to detach from the session without stopping the bot.\n\nCommand Functions:\n\n\ud83d\udd39 /start \u2013 Starts a new search for a download. This command performs the same operations as manually running the script in the terminal with test_run.py.\n\n\ud83d\udd39 /list \u2013 Displays the status of active downloads, with options to:\n\nStop an incorrect download using /stop <ID>.\n\nView the real-time output of a download using /screen <ID>.\n\n\u26a0 Warning: If a download is interrupted, incomplete files may remain in the folder specified in config.json. These files must be deleted manually to avoid storage or management issues.\n\n\ud83d\udee0 Configuration: Currently, the bot's settings are stored in the config.json file, which is located in the same directory as the telegram_bot.py script.\n\n## .env Example:\n\nYou need to create an .env file and enter your Telegram token and user ID to authorize only one user to use it\n\n```\nTOKEN_TELEGRAM=IlTuo2131TOKEN$12D3Telegram\nAUTHORIZED_USER_ID=12345678\nDEBUG=False\n```\n</details>\n\n<details>\n<summary>\ud83d\udce5 Dependencies & Launch</summary>\n\nInstall dependencies:\n```bash\npip install -r requirements.txt\n```\n\nStart the bot (from /StreamingCommunity/TelegramHelp):\n```bash\npython3 telegram_bot.py\n```\n</details>\n\n# SITE_LOGIN key  \nTo use some site, you may need a SITE_LOGIN key.  \nSee [guide.md](.github/.site/guide.md) for instructions on how to obtain it.\n\n# Tutorials\n\n- [Windows](https://www.youtube.com/watch?v=mZGqK4wdN-k)\n- [Linux](https://www.youtube.com/watch?v=0qUNXPE_mTg)\n- [Pypy](https://www.youtube.com/watch?v=C6m9ZKOK0p4)\n- [Compiled](https://www.youtube.com/watch?v=pm4lqsxkTVo)\n\n# To Do\n\n- To Finish [website API](https://github.com/Arrowar/StreamingCommunity/tree/test_gui_1)\n- To finish [website API 2](https://github.com/hydrosh/StreamingCommunity/tree/test_gui_1)\n\n## Useful Project\n\n### \ud83c\udfaf [Unit3Dup](https://github.com/31December99/Unit3Dup)\nBot in Python per la generazione e l'upload automatico di torrent su tracker basati su Unit3D.\n\n\n### \ud83c\uddee\ud83c\uddf9 [MammaMia](https://github.com/UrloMythus/MammaMia)\nAddon per Stremio che consente lo streaming HTTPS di film, serie, anime e TV in diretta in lingua italiana.\n\n### \ud83e\udde9 [streamingcommunity-unofficialapi](https://github.com/Blu-Tiger/streamingcommunity-unofficialapi)\nAPI non ufficiale per accedere ai contenuti del sito italiano StreamingCommunity.\n\n# Disclaimer\n\nThis software is provided \"as is\", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.\n\n> **Note:** DASH downloads require a valid L3 CDM (Content Decryption Module) to proceed. This project does not provide, include, or facilitate obtaining any CDM. Users are responsible for ensuring compliance with all applicable laws and requirements regarding DRM and decryption modules.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": null,
    "version": "3.3.0",
    "project_urls": {
        "Bug Reports": "https://github.com/Lovi-0/StreamingCommunity/issues",
        "Homepage": "https://github.com/Lovi-0/StreamingCommunity",
        "Source": "https://github.com/Lovi-0/StreamingCommunity"
    },
    "split_keywords": [
        "streaming",
        "community"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "05e01aed3837baf1af6eea4e7d764576a71e63e4705c99746f6a4fdffc2d1008",
                "md5": "a36875b8b833b3f98d4915e2afbec65d",
                "sha256": "9b9d337d916696491ce89712a692dd27bf8ce64d68e872bd523b63b64e63e272"
            },
            "downloads": -1,
            "filename": "streamingcommunity-3.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a36875b8b833b3f98d4915e2afbec65d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 218749,
            "upload_time": "2025-08-30T07:41:30",
            "upload_time_iso_8601": "2025-08-30T07:41:30.074433Z",
            "url": "https://files.pythonhosted.org/packages/05/e0/1aed3837baf1af6eea4e7d764576a71e63e4705c99746f6a4fdffc2d1008/streamingcommunity-3.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b2c47314692e90d7740e3403f4e8f9ce395a6c364b242f34eef84f921b08a4ef",
                "md5": "3303613646201f556ffc217d58f87643",
                "sha256": "6d1276c760a72fd8fdfb35b5695461e5af7be7baea47504eb3ac6b2756181892"
            },
            "downloads": -1,
            "filename": "streamingcommunity-3.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "3303613646201f556ffc217d58f87643",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 167672,
            "upload_time": "2025-08-30T07:41:31",
            "upload_time_iso_8601": "2025-08-30T07:41:31.458794Z",
            "url": "https://files.pythonhosted.org/packages/b2/c4/7314692e90d7740e3403f4e8f9ce395a6c364b242f34eef84f921b08a4ef/streamingcommunity-3.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-30 07:41:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Lovi-0",
    "github_project": "StreamingCommunity",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "httpx",
            "specs": []
        },
        {
            "name": "bs4",
            "specs": []
        },
        {
            "name": "rich",
            "specs": []
        },
        {
            "name": "tqdm",
            "specs": []
        },
        {
            "name": "m3u8",
            "specs": []
        },
        {
            "name": "certifi",
            "specs": []
        },
        {
            "name": "psutil",
            "specs": []
        },
        {
            "name": "unidecode",
            "specs": []
        },
        {
            "name": "curl_cffi",
            "specs": []
        },
        {
            "name": "jsbeautifier",
            "specs": []
        },
        {
            "name": "pathvalidate",
            "specs": []
        },
        {
            "name": "pycryptodomex",
            "specs": []
        },
        {
            "name": "ua-generator",
            "specs": []
        },
        {
            "name": "qbittorrent-api",
            "specs": []
        },
        {
            "name": "pyTelegramBotAPI",
            "specs": []
        },
        {
            "name": "pywidevine",
            "specs": []
        }
    ],
    "lcname": "streamingcommunity"
}
        
Elapsed time: 4.59244s