Download content from streaming platforms
Project description
Version & Status
Available On
⚡ Quick Start: pip install StreamingCommunity-download-stream && streamingcommunity
📖 Table of Contents
- Installation
- Quick Start
- DNS Configuration
- Downloaders
- Configuration
- Usage Examples
- Global Search
- Advanced Features
- Streaming
- TO DO
- Related Projects
Installation
PyPI (Recommended)
pip install StreamingCommunity-download-stream
streamingcommunity
Pre-built Binaries
Download the latest binary for your platform from GitHub Releases:
| Platform | Download |
|---|---|
| Windows | StreamingCommunity_win_x64.exe |
| macOS | StreamingCommunity_macos_x64 |
| Linux | StreamingCommunity_linux_x64 |
On Linux/macOS, make the binary executable:
chmod +x StreamingCommunity_linux_x64
./StreamingCommunity_linux_x64
Manual Clone
git clone https://github.com/Liutprando08/StreamingCommunity-downloader-streamer.git
cd StreamingCommunity
pip install -r requirements.txt
python -m StreamingCommunity
Update
# If using binary, use the built-in updater
streamingcommunity -UP
Quick Start
python -m StreamingCommunity
DNS Configuration
Required for optimal functionality and reliability.
Use one of these DNS providers:
- Cloudflare DNS:
1.1.1.1- Setup guide - Quad9 DNS:
9.9.9.9- Setup guide
Downloaders
| Type | Description | Example |
|---|---|---|
| HLS | HTTP Live Streaming (m3u8) | View example |
| MP4 | Direct MP4 download | View example |
| DASH | MPEG-DASH with DRM bypass* | View example |
| MEGA | MEGA.nz downloads | View example |
| ISM | Microsoft Smooth Streaming (PlayReady DRM) | View example |
*DASH with DRM bypass: Requires a valid L3 CDM (Content Decryption Module). This project does not provide or facilitate obtaining CDMs. Users must ensure compliance with applicable laws.
Configuration
Key configuration parameters in config.json:
Output Directories
{
"OUTPUT": {
"root_path": "Video",
"movie_folder_name": "Movie",
"serie_folder_name": "Serie",
"anime_folder_name": "Anime",
"map_episode_name": "%(episode_name) S%(season)E%(episode)",
"add_siteName": false
}
}
-
root_path: Base directory where videos are saved- Windows:
C:\\MyLibrary\\Folderor\\\\MyServer\\Share - Linux/MacOS:
Desktop/MyLibrary/Folder
- Windows:
-
movie_folder_name: Subfolder name for movies (default:"Movie") -
serie_folder_name: Subfolder name for TV series (default:"Serie") -
anime_folder_name: Subfolder name for anime (default:"Anime") -
map_episode_name: Episode filename template%(tv_name): TV Show name%(season): Season number (zero-padded)%(episode): Episode number (zero-padded)%(episode_name): Episode title- Example:
"%(episode_name) S%(season)E%(episode)"→"Pilot S01E01"
-
add_siteName: Append site name to root path (default:false)
Download Settings
{
"DOWNLOAD": {
"skip_download": false,
"thread_count": 8,
"retry_count": 30,
"concurrent_download": true,
"max_speed": "",
"real_time_decryption": false,
"check_segments_count": true,
"select_video": "best",
"select_audio": "lang='ita|Ita|it':for=best",
"select_subtitle": "lang='ita|eng|Ita|Eng|it|en':for=all",
"cleanup_tmp_folder": true
}
}
Performance Settings
skip_download: Skip the download step and process existing files (default:false)thread_count: Number of parallel download threads (default:8)retry_count: Maximum retry attempts for failed segments (default:30)concurrent_download: Download video and audio simultaneously (default:true)max_speed: Speed limit per stream (e.g.,"30MB","10MB"), empty string for no limitreal_time_decryption: Decrypt segments in real-time during download instead of post-processing (default:false)check_segments_count: Verify segment count matches manifest (default:true)cleanup_tmp_folder: Remove temporary files after download (default:true)
Stream Selection
- select_video
OPTIONS: id=REGEX:lang=REGEX:name=REGEX:codecs=REGEX:res=REGEX:frame=REGEX:
segsMin=number:segsMax=number:ch=REGEX:range=REGEX:url=REGEX:
plistDurMin=hms:plistDurMax=hms:bwMin=int:bwMax=int:role=string:for=FOR
for=FOR: Selection type - best (default), best[number], worst[number], all
"select_video": "for=best" // Select best video
"select_video": "res=3840*:codecs=hvc1:for=best" // Select 4K HEVC video
"select_video": "res=1080:for=best" // Select 1080p video
"select_video": "plistDurMin=1h20m30s:for=best" // Duration > 1h 20m 30s
"select_video": "role=main:for=best" // Main video role
"select_video": "bwMin=800:bwMax=1000:for=best" // Bandwidth 800-1000 Kbps
- select_audio
"select_audio": "for=all" // Select all audio tracks
"select_audio": "lang=en:for=best" // Select best English audio
"select_audio": "lang='ja|en':for=best2" // Best 2 tracks (Japanese or English)
"select_audio": "lang='ita|Ita':for=all" // All Italian audio tracks
"select_audio": "role=main:for=best" // Main audio role
- select_subtitle
"select_subtitle": "for=all" // Select all subtitles
"select_subtitle": "name=English:for=all" // All subtitles containing "English"
"select_subtitle": "lang='ita|eng|Ita|Eng':for=all" // Italian and English subtitles
"select_subtitle": "lang=en:for=best" // Best English subtitle
"select_subtitle": "false" // Disable subtitle download
Processing Settings
{
"PROCESS": {
"generate_nfo": false,
"use_gpu": false,
"param_video": ["-c:v", "libx265", "-crf", "28", "-preset", "medium"],
"param_audio": ["-c:a", "libopus", "-b:a", "128k"],
"param_final": ["-c", "copy"],
"audio_order": [],
"subtitle_order": [],
"merge_audio": true,
"merge_subtitle": true,
"subtitle_disposition": false,
"subtitle_disposition_language": ["forced-ita", "ita-forced"],
"extension": "mkv"
}
}
generate_nfo: Generate .nfo metadata file alongside the video (default:false)use_gpu: Enable hardware acceleration (default:false)param_video: FFmpeg video encoding parameters- Example:
["-c:v", "libx265", "-crf", "28", "-preset", "medium"](H.265/HEVC encoding)
- Example:
param_audio: FFmpeg audio encoding parameters- Example:
["-c:a", "libopus", "-b:a", "128k"](Opus audio at 128kbps)
- Example:
param_final: Final FFmpeg parameters (default:["-c", "copy"]for stream copy)audio_order: List of strings to order audio tracks (e.g.,["ita", "eng"])subtitle_order: List of strings to order subtitle tracks (e.g.,["ita", "eng"])merge_audio: Merge all audio tracks into a single output file (default:true)merge_subtitle: Merge all subtitle tracks into a single output file (default:true)subtitle_disposition: Automatically set default subtitle track (default:false)subtitle_disposition_language: Languages to mark as default/forced- Example:
["forced-ita", "ita-forced"]for Italian forced subtitles
- Example:
extension: Output file format ("mkv"or"mp4")
Request Settings
{
"REQUESTS": {
"verify": true,
"timeout": 30,
"max_retry": 8,
"use_proxy": false,
"proxy": {
"http": "http://localhost:8888",
"https": "http://localhost:8888"
}
}
}
verify: Enable SSL certificate verification (default:true)timeout: Request timeout in seconds (default:30)max_retry: Maximum retry attempts for failed requests (default:8)use_proxy: Enable proxy support for HTTP requests (default:false)proxy: Proxy configuration for HTTP and HTTPS connectionshttp: HTTP proxy URL (e.g.,"http://localhost:8888")https: HTTPS proxy URL (e.g.,"http://localhost:8888")
Default Settings
{
"DEFAULT": {
"close_console": true,
"show_message": true,
"show_device_info": true,
"fetch_domain_online": true
}
}
close_console: Automatically close console after download completion (default:true)show_message: Display debug messages (default:true)show_device_info: Display device information (default:true)fetch_domain_online: Automatically fetch latest domains from GitHub (default:true)
Usage Examples
Basic Commands
# Show help and available sites
python -m StreamingCommunity -h
# Search and download from a specific site
python -m StreamingCommunity --site streamingcommunity --search "interstellar"
# Auto-download first result
python -m StreamingCommunity --site streamingcommunity --search "interstellar" --auto-first
# Use site by index
python -m StreamingCommunity --site 0 --search "interstellar"
Advanced Options
# Keep console open
python -m StreamingCommunity --not_close true
# Override stream selection from CLI
python -m StreamingCommunity -sv "res=3840*:codecs=hvc1:for=best" # 4K HEVC
python -m StreamingCommunity -sa "lang=en:for=best" # Best English audio
python -m StreamingCommunity -ss "lang=en:for=best" # Best English subtitle
# Override output extension
python -m StreamingCommunity --extension mp4
# Enable proxy
python -m StreamingCommunity --use_proxy
# Check for updates (binary only)
python -m StreamingCommunity -UP
# Show version
python -m StreamingCommunity --version
Global Search
Search across multiple streaming sites simultaneously:
# Global search
python -m StreamingCommunity --global -s "cars"
When using --global, you will be prompted to:
- Search all sites
- Search by category (anime, film & series, series)
- Select specific sites to search
Results display title, media type, year, and source site in a consolidated table. You can select any result to download directly.
Advanced Features
Hook System
Execute custom scripts before/after downloads. Configure in config.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'"
}
]
}
}
Hook Configuration Options
name: Descriptive name for the hooktype: Script type -python,bash,sh,bat,cmdpath: Path to script file (alternative tocommand)command: Inline command to execute (alternative topath)args: List of arguments passed to the scriptenv: Additional environment variables as key-value pairscwd: Working directory for script execution (supports~and environment variables)os: Optional OS filter -["windows"],["darwin"](macOS),["linux"], or combinationstimeout: Maximum execution time in seconds (hook fails if exceeded)enabled: Enable/disable the hook without removing configurationcontinue_on_error: Iffalse, stops execution when hook fails
Hook Types
- Python hooks: Run with current Python interpreter
- Bash/sh hooks: Execute via
bash/shon macOS/Linux - Bat/cmd hooks: Execute via
cmd /con Windows - Inline commands: Use
commandinstead ofpathfor simple one-liners
Hooks are automatically executed before (pre_run) and after (post_run) the main execution flow.
Streaming
Stream content in real-time using a local proxy server instead of downloading.
Basic Usage
# Stream with auto-detected player
python -m StreamingCommunity --stream --site streamingcommunity --search "interstellar"
# Stream with a specific player
python -m StreamingCommunity --stream --player mpv --site streamingcommunity --search "interstellar"
# Stream on a specific port
python -m StreamingCommunity --stream --player vlc --stream-port 8080
Supported Players
- mpv (recommended) - High-quality playback with hardware decoding support
- vlc - Network caching for smoother streams
- ffplay - Lightweight fallback from FFmpeg
Related Projects
Disclaimer
This software is provided strictly for educational and research purposes only. The author and contributors:
- DO NOT assume any responsibility for illegal or unauthorized use of this software
- DO NOT encourage, promote, or support the download of copyrighted content without proper authorization
- DO NOT provide, include, or facilitate obtaining any DRM circumvention tools, CDM modules, or decryption keys
- DO NOT endorse piracy or copyright infringement in any form
User Responsibilities
By using this software, you agree that:
- You are solely responsible for ensuring your use complies with all applicable local, national, and international laws and regulations
- You must have legal rights to access and download any content you process with this software
- You will not use this software to circumvent DRM, access unauthorized content, or violate copyright laws
- You understand that downloading copyrighted content without permission is illegal in most jurisdictions
No Warranty
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.
If you do not agree with these terms, do not use this software.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file streamingcommunity_download_stream-1.1.0b2.tar.gz.
File metadata
- Download URL: streamingcommunity_download_stream-1.1.0b2.tar.gz
- Upload date:
- Size: 212.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa439e1c0c40266c0cdd7eabc5d359a3d1a14381c98854e4b7aa6dc4906c0738
|
|
| MD5 |
039140407ebcea9e99b4d9b3c75fe5d8
|
|
| BLAKE2b-256 |
441f9cbb039900f9e9ca3001dbfe5f6cd43e199b5615cb2a1ea89ad5087682a8
|
Provenance
The following attestation bundles were made for streamingcommunity_download_stream-1.1.0b2.tar.gz:
Publisher:
build-and-release.yml on Liutprando08/StreamingCommunity-downloader-streamer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
streamingcommunity_download_stream-1.1.0b2.tar.gz -
Subject digest:
aa439e1c0c40266c0cdd7eabc5d359a3d1a14381c98854e4b7aa6dc4906c0738 - Sigstore transparency entry: 2202031738
- Sigstore integration time:
-
Permalink:
Liutprando08/StreamingCommunity-downloader-streamer@1cb43035512bcd26d1449d586b16cd6ead4508d1 -
Branch / Tag:
refs/tags/v1.1.0-beta.2 - Owner: https://github.com/Liutprando08
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-and-release.yml@1cb43035512bcd26d1449d586b16cd6ead4508d1 -
Trigger Event:
release
-
Statement type:
File details
Details for the file streamingcommunity_download_stream-1.1.0b2-py3-none-any.whl.
File metadata
- Download URL: streamingcommunity_download_stream-1.1.0b2-py3-none-any.whl
- Upload date:
- Size: 310.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96e6182be3a0b8a168a07ec80f5cb746d0d49a070cad1bf983fa743839930800
|
|
| MD5 |
56e69d82dc5771d603adf8dccd0b5712
|
|
| BLAKE2b-256 |
3203f70223815c4a6e953b42261f0cc03cf4396422078915129a9f3403838bec
|
Provenance
The following attestation bundles were made for streamingcommunity_download_stream-1.1.0b2-py3-none-any.whl:
Publisher:
build-and-release.yml on Liutprando08/StreamingCommunity-downloader-streamer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
streamingcommunity_download_stream-1.1.0b2-py3-none-any.whl -
Subject digest:
96e6182be3a0b8a168a07ec80f5cb746d0d49a070cad1bf983fa743839930800 - Sigstore transparency entry: 2202031764
- Sigstore integration time:
-
Permalink:
Liutprando08/StreamingCommunity-downloader-streamer@1cb43035512bcd26d1449d586b16cd6ead4508d1 -
Branch / Tag:
refs/tags/v1.1.0-beta.2 - Owner: https://github.com/Liutprando08
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-and-release.yml@1cb43035512bcd26d1449d586b16cd6ead4508d1 -
Trigger Event:
release
-
Statement type: