149 lines
6.4 KiB
Python
149 lines
6.4 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
|
|
hola-proxy (optional)
|
|
\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
|
|
Login credentials:
|
|
A user profile with credentials can be set for services that require it:
|
|
\b
|
|
freevine.py profile --username "USERNAME" --password "PASSWORD" --service "SERVICE"
|
|
\b
|
|
NOTES:
|
|
Setting a user profile will create a profile.yaml in the service folder
|
|
It will store credentials along with cached auth and refresh tokens
|
|
\b
|
|
Cookies:
|
|
Some services can be used with a cookie file:
|
|
\b
|
|
Use a browser extension to download a standard Netscape file format:
|
|
Firefox: https://addons.mozilla.org/addon/export-cookies-txt
|
|
Chrome: https://chrome.google.com/webstore/detail/gdocmgbfkjnnpapoeobnolbbkoibbcif
|
|
\b
|
|
Name it "cookies.txt" and place it in the service folder
|
|
\b
|
|
Download 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
|
|
freevine.py get --episode S01E01 URL
|
|
freevine.py get --episode "Name of episode" URL
|
|
freevine.py get --season S01 URL
|
|
freevine.py get --episode S01E01-S01E10 URL
|
|
freevine.py get --episode S01E01,S03E07,S10E12 URL
|
|
freevine.py get --season S01,S03,S10 URL
|
|
freevine.py get --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
|
|
If a season is displaying duplicate numbering and/or no numbers at all, you can use -fn to force numbering
|
|
This will add numbers based on its placement on site, making it easier to download
|
|
\b
|
|
freevine.py --titles -fn https://www.example.com/series_url
|
|
\b
|
|
Method 2: (singles)
|
|
Provide URL to episode or movie to download it directly:
|
|
\b
|
|
freevine.py get --episode EPISODE_URL
|
|
freevine.py get --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:
|
|
freevine.py get --titles URL
|
|
Print available quality streams and info about a single title:
|
|
freevine.py get --info --episode URL
|
|
freevine.py get --info --movie URL
|
|
Request video quality to be downloaded: (default: best)
|
|
freevine.py get --select-video res=720 --episode/--season URL
|
|
freevine.py get --select-video res=1080 --movie URL
|
|
Request audio tracks to be downloaded: (default: best)
|
|
freevine.py get --select-audio name=English --episode/--season URL
|
|
freevine.py get --select-audio id=Descriptive --movie URL
|
|
Request only subtitles from title(s):
|
|
freevine.py get --sub-only --episode/--movie URL
|
|
\b
|
|
NOTES:
|
|
See "N_m3u8DL-RE --morehelp select-video/audio/subtitle" for possible selection patterns
|
|
If you request a quality that's not available, the closest match is downloaded instead
|
|
\b
|
|
Searching:
|
|
You can use the search option to search for titles in the command line:
|
|
\b
|
|
freevine.py search all4 "QUERY"
|
|
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
|
|
Proxy:
|
|
You can request or specify a proxy server to be used for API and license requests:
|
|
\b
|
|
freevine.py --proxy US
|
|
freevine.py --proxy "01.234.56.789:10"
|
|
\b
|
|
NOTES:
|
|
Requesting a proxy by country code requires https://github.com/Snawoot/hola-proxy
|
|
Download the exectutable from the releases page and rename it to "hola-proxy"
|
|
Place it in the same location as the other required tools. System PATH is recommended
|
|
\b
|
|
The proxy currently only affects API and license requests, not downloads
|
|
\b
|
|
Final notes:
|
|
\b
|
|
This program is just a hobby project made for fun
|
|
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
|
|
|
|
\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!
|
|
"""
|