136 lines
5.8 KiB
Python
136 lines
5.8 KiB
Python
from utils import __version__
|
|
|
|
main_help = f"""
|
|
\b
|
|
Freevine {__version__}
|
|
Author: stabbedbybrick
|
|
|
|
\b
|
|
Requirements:
|
|
Python 3.9+
|
|
Valid Widevine Device file
|
|
N_m3u8DL-RE
|
|
ffmpeg
|
|
mkvmerge
|
|
mp4decrypt
|
|
shaka-packager
|
|
\b
|
|
Installation:
|
|
1. Install Python (check 'Add to PATH' if on Windows)
|
|
2. Clone or download Freevine repository
|
|
3. Place required tools inside Freevine folder OR add to system PATH(recommended)
|
|
4. Create /utils/wvd/ folder and place either .wvd file or private_key and client blob inside
|
|
5. Install necessary packages: `pip install -r requirements.txt`
|
|
\b
|
|
Settings:
|
|
Open config.yaml in your favorite text editor to configure global settings
|
|
\b
|
|
Copy config.yaml file to a service folder in order to configure that specific service
|
|
This config, if it exists, will override the main config
|
|
\b
|
|
Using config settings in command will override everything else (see options below for examples)
|
|
\b
|
|
Default values for all services:
|
|
Video: Best available
|
|
Audio: Best available
|
|
Subtitles: Cleaned SRT muxed with final output
|
|
\b
|
|
Instructions:
|
|
This program has got two methods of downloading:
|
|
\b
|
|
Method 1: (singles and batch)
|
|
Provide the series main URL and request what to download from it:
|
|
\b
|
|
python freevine.py --episode S01E01 URL
|
|
python freevine.py --episode "Name of episode" URL
|
|
python freevine.py --season S01 URL
|
|
python freevine.py --episode S01E01-S01E10 URL
|
|
python freevine.py --episode S01E01,S03E07,S10E12 URL
|
|
python freevine.py --season S01,S03,S10 URL
|
|
python freevine.py --complete URL
|
|
\b
|
|
NOTES:
|
|
Always use main URL of series for this method, not episode URLs
|
|
Use the S01E01 format, or "episode name", to request episodes
|
|
Use --episode S01E01-S01E10 to request a range of episodes (from the same season)
|
|
Use --episode S01E01,S03E07,S10E12 (no spaces!) to request a mix of episodes
|
|
Use --season S01,S03,S10 (no spaces!) to request a mix of seasons
|
|
\b
|
|
Method 2: (singles)
|
|
Provide URL to episode or movie to download it directly:
|
|
\b
|
|
python freevine.py --episode EPISODE_URL
|
|
python freevine.py --movie MOVIE_URL
|
|
\b
|
|
NOTES:
|
|
If the episode is a standalone, you might have more success by using --movie
|
|
Grabbing the URLs straight from the frontpage often comes with extra
|
|
garbage attached. It's recommended to get the URL from title page
|
|
\b
|
|
Options:
|
|
List all available episodes from a series:
|
|
python freevine.py --titles URL
|
|
Print available quality streams and info about a single title:
|
|
python freevine.py --info --episode URL
|
|
python freevine.py --info --movie URL
|
|
Request video quality to be downloaded: (default: best)
|
|
python freevine.py --select-video res=720 --episode/--season URL
|
|
python freevine.py --select-video res=1080 --movie URL
|
|
Request audio tracks to be downloaded: (default: best)
|
|
python freevine.py --select-audio name=English --episode/--season URL
|
|
python freevine.py --select-audio id=Descriptive --movie URL
|
|
Request only subtitles from title(s):
|
|
python freevine.py --sub-only --episode/--movie URL
|
|
\b
|
|
NOTES:
|
|
See "N_m3u8DL-RE --morehelp select-video/audio/subtitle" for possible selection patterns
|
|
The order of the options isn't super strict, but it's recommended to follow the examples above
|
|
Combinations of options are possible as far as common sense allows
|
|
If you request a quality that's not available, the closest match is downloaded instead
|
|
\b
|
|
Searching (beta):
|
|
You can use the search option to search for titles in the command line:
|
|
\b
|
|
python freevine.py --search all4 "QUERY"
|
|
python freevine.py --search all4,ctv,itv "QUERY"
|
|
\b
|
|
NOTES:
|
|
You can search one or multiple services at the same time
|
|
The results should produce usable URL to series or movie
|
|
Some services have geo block even for searching
|
|
\b
|
|
Service information:
|
|
(Premium content on any service is not supported)
|
|
\b
|
|
ROKU: 1080p, DD5.1
|
|
CTV: 1080p, DD5.1
|
|
CBC GEM: 1080p, DD5.1
|
|
iView: 1080p, AAC2.0
|
|
ALL4: 1080p, AAC2.0 *
|
|
MY5: 1080p, AAC2.0
|
|
iPLAYER: 1080p, AAC2.0
|
|
UKTVPLAY: 1080p, AAC2.0
|
|
STV: 1080p, AAC2.0
|
|
CRACKLE: 1080p, AAC2.0
|
|
CWTV: 1080p, AAC2.0
|
|
ITV: 720p, AAC2.0
|
|
TUBI: 720p, AAC2.0
|
|
PLUTO: 720p, AAC2.0
|
|
\b
|
|
*ALL4 offer different quality streams on different API endpoints
|
|
You can switch between them in /services/channel4/api.yaml by using "android" or "web" as client
|
|
\b
|
|
Final notes:
|
|
\b
|
|
This program is just a hobby project inbetween real-life responsibilities
|
|
Expect bugs and odd behavior, and consider it to be in forever beta
|
|
\b
|
|
Known bugs:
|
|
Programmes without clear season/episode labels might display odd names and numbers
|
|
TubiTV, PlutoTV, CBC does not work with --info at the moment
|
|
|
|
\b
|
|
Free streaming services are free for a reason and usually comes with gaps and odd labels
|
|
It's STRONGLY recommended to use --titles to view episodes before downloading!
|
|
"""
|