/PyLav

A Lavalink wrapper library to be used by discord-py bots. Docs at: https://pylav.readthedocs.io/

Primary LanguagePythonGNU Affero General Public License v3.0AGPL-3.0

GitHub license Support Server PyPi Crowdin Documentation Status

Documentation

Installation


Requirements


Supported sources

  • youtube
  • soundcloud
  • bandcamp
  • twitch
  • vimeo
  • http
  • local

With LavaSrc

  • spotify
  • applemusic
  • deezer
  • getyarn.io
  • clypit
  • tts
  • pornhub
  • reddit
  • ocremix
  • tiktok
  • mixcloud
  • soundgasm
  • gcloud-tts
  • 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
  • Lyrics API to retrieve lyrics for tracks provided by Flowery
  • 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

  • Topi for all the work done to Lavalink and implementing direct requests to make PyLav even better.
  • Devoxin - Lavalink.py for the original ideas for implementation.
  • Ryan for the amazing Lyrics API used for lyrics.
  • 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.
  • Lifeismana for the custom Red-DiscordBot docker image which added Python3.11 support until Phasecore's image is updated.