Skip to main content

A Lavalink WebSocket & API wrapper for discord.py

Project description

pre-commit.ci status GitHub license Support Server PyPi Documentation Status Crowdin

Documentation

Installation


Requirements

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 provided PYLAV__POSTGRES_HOST and PYLAV__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
  • 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 LavaSrc

  • spotify
  • applemusic
  • deezer

With DuncteBot-plugin:

  • getyarn
  • clypit
  • tts
  • pornhub
  • reddit
  • ocremix
  • tiktok
  • mixcloud

With Google Cloud TTS:

  • gcloud-tts

With Sponsorblock-Plugin:

  • sponsorblock

With Topis-Source-Managers-Plugin - Deprecated, use LavaSrc instead:

  • spotify
  • applemusic

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

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.11.16.1.tar.gz (355.0 kB view hashes)

Uploaded Source

Built Distribution

Py_Lav-0.11.16.1-py3-none-any.whl (391.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page