A Lavalink WebSocket & API wrapper for discord.py
Project description
Documentation
Installation
Requirements
- PostgresSQL 14 server
- MacOS: PostgresSQL
- Windows: PostgresSQL
- Linux: PostgresSQL
- Python 3.10+ (On initial release - during pre-alpha phase 3.9+)
- Discord.py 2.0.0+ bot
Environment Variables
Note - All environment variables except PYLAV__LOGGER_PREFIX
can be configured from the pylav.yaml
file which should reside in the home directory of the user running the bot.
An example of the file can be found at pylav.example.yaml, if you don't create the file yourself pylav will do so on the first run, and once the file exists it will be preferred over the Environment Variable set.
Required
- Env Vars to connect the lib to the PostgresSQL server
All Envvars default to AsyncPG defaults
- PYLAV__POSTGRES_PORT
- PYLAV__POSTGRES_PASSWORD
- PYLAV__POSTGRES_USER
- PYLAV__POSTGRES_DB
- PYLAV__POSTGRES_HOST
- Unix Socket env var.
PYLAV__POSTGRES_SOCKET
If this is providedPYLAV__POSTGRES_HOST
andPYLAV__POSTGRES_PORT
will be ignored.
Optional
- Env Vars to connect the lib cache to Redis, note if these are missing the library will default to PostgresSQL, therefore they are not necessary.
- This will be used by the aiohttp cached client session for storing cached responses for 1 day, this reduces stress on some of the requests the lib makes such as to RadioBrowser.
- PYLAV__REDIS_FULL_ADDRESS_RESPONSE_CACHE
- e.g. redis://[[username]:[password]]@localhost:6379/0
- e.g. unix://[[username]:[password]]@/path/to/socket.sock?db=0
- PYLAV__REDIS_FULL_ADDRESS_RESPONSE_CACHE
- This will be used by the aiohttp cached client session for storing cached responses for 1 day, this reduces stress on some of the requests the lib makes such as to RadioBrowser.
- Misc
- PYLAV__LOGGER_PREFIX - Sets the logger prefix, defaults to None, or "red." if redbot is installed.
- PYLAV__JAVA_EXECUTABLE - Sets the Java executable to be used by PyLav for the managed Lavalink node
- PYLAV__USE_BUNDLED_EXTERNAL_PYLAV_NODE - Enabled the bundled PyLav external nodes, this is enabled by default as it is not recommended to disable this option.
- PYLAV__USE_BUNDLED_EXTERNAL_LAVA_LINK_NODE - Enabled the bundled lava.link node, this is disabled by default as it is not recommended to enable this option.
- Unmanaged External Node - If both PYLAV__EXTERNAL_UNMANAGED_HOST and PYLAV__EXTERNAL_UNMANAGED_PASSWORD are set then the managed node is not started up
- PYLAV__EXTERNAL_UNMANAGED_HOST - No Default - Required (Should not contain the protocol i.e "http" or "https", this is determined by PYLAV__EXTERNAL_UNMANAGED_SSL)
- PYLAV__EXTERNAL_UNMANAGED_PASSWORD - No Default - Required
- PYLAV__EXTERNAL_UNMANAGED_PORT - Defaults to 80
- PYLAV__EXTERNAL_UNMANAGED_SSL - Defaults to 0 (i.e False) - Possible values are 0 - 1
- Tasks Timers
- PYLAV__TASK_TIMER_UPDATE_BUNDLED_PLAYLISTS_DAYS: Defaults to 1 # How many days to wait between updates - Minimum 1 Day.
- PYLAV__TASK_TIMER_UPDATE_BUNDLED_EXTERNAL_PLAYLISTS_DAYS: Defaults to 7 # How many days to wait between updates - Minimum 7 Days.
- PYLAV__TASK_TIMER_UPDATE_EXTERNAL_PLAYLISTS_DAYS: Defaults to 7 # How many days to wait between updates - Minimum 7 Days.
Supported sources
Built-in:
- youtube
- soundcloud
- twitch
- bandcamp
- vimeo
- http
- local
With Topis-Source-Managers-Plugin:
- spotify
- applemusic
With DuncteBot-plugin:
- getyarn
- clypit
- tts
- pornhub
- ocremix
- tiktok
- mixcloud
With Google Cloud TTS:
- gcloud-tts
With Sponsorblock-Plugin:
- sponsorblock
Supported Lavalink features
- Supports all features of Lavalink
- Filters
- IP Rotation
- Plug-ins
Features
- Multiple node support
- Node region assignment based on IP
- Track cache for the last 30 days to reduce the number of duplicated queries
- Managed local node with auto-restart and auto update
- Many helper methods and functions
- Support for multiple cogs to access the library at once
- Playlists and EQ saved at a library level to be shared with cogs
- Player state persistence
- Upon library state being shutdown all player states are saved and restored on library startup
- History of played tracks available for players
- RadioBrowser.org API to retrieve radio stations available for players
- M3U, PLS and PYLAV text file parser to convert contents into a playlist (p.s. Lavalink must support the format/coded of files still)
Credits
- Devoxin- Lavalink.py for ideas for implementation.
- globocom/m3u8 for the M3U8 parser which I made asynchronous found in m3u8_parser.
- andreztz/pyradios for the radio parser which I made asynchronous found in radio.
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
Py-Lav-0.6.3.tar.gz
(341.8 kB
view hashes)
Built Distribution
Py_Lav-0.6.3-py3-none-any.whl
(370.7 kB
view hashes)