Widevine Utility Website and Remote Widevine Device API.
- Install Python Poetry: https://python-poetry.org/docs/master/#installation
- Install Dependencies:
- For MySQL:
poetry install --with mysql - For MariaDB:
poetry install --with mariadb
- For MySQL:
- Copy
getwvkeys/config.toml.exampletogetwvkeys/config.toml(or the appropriate name for the environment) - Edit
config.toml- For a MySQL Database, use the prefix
mysql+mariadbconnector - For a MariaDB Database, use the prefix
mariadb+mariadbconnector
- For a MySQL Database, use the prefix
- Run database migrations. see Database Migrations
- See Deploy
For local development testing, you will need to disable the HTTPS requirement on the OAuth Callback URLs
with the environment variable OAUTHLIB_INSECURE_TRANSPORT=1 or you will get the error InsecureTransportError.
- For Unix:
export OAUTHLIB_INSECURE_TRANSPORT=1 - Windows (CMD):
set OAUTHLIB_INSECURE_TRANSPORT=1 - Windows (Powershell):
$env:OAUTHLIB_INSECURE_TRANSPORT=1
You should also enable development mode with the DEVELOPMENT environment variable.
- For Unix:
export DEVELOPMENT=1 - Windows (CMD):
set DEVELOPMENT=1 - Windows (Powershell):
$env:DEVELOPMENT=1
For local development, you can use the built-in flask server with poetry run serve.
poetry run setup
OAUTHLIB_INSECURE_TRANSPORT: Disable SSL requirement for OAuth2DEVELOPMENT: Development mode, increased logging and loads configuration fromconfig.dev.tomlSTAGING: Staging mode, loads configuration fromconfig.staging.toml
Gunicorn is the recommended to run the server in production.
Example command to run on port 8081 listening on all interfaces:
poetry run gunicorn -w 1 -b 0.0.0.0:8081 getwvkeys.main:app
never use more than 1 worker, getwvkeys does not currently support that and you will encounter issues with sessions.
- Redis is used as a pub-sub system for communication with the Discord Bot. If you don't plan to use the bot, you don't need to setup redis and can comment it out in the
.envfile:#REDIS_URI=redis://localhost:6379/0 - GetWVKeys uses dynamic injection for scripts, this means that when a user downloads a script and is logged in, the server injects certain values by replacing strings such as their API key. Available placeholders are:
__getwvkeys_api_key__: Authenticated users api key__getwvkeys_api_url__: The instances API URL, this is used for staging and production mainly but can also be used for self hosted instances
- if you get an error when running migrations, note that your database needs to be created with:
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;