Skip to content

Releases: PythonistaGuild/Wavelink

v2.6.1

24 Jul 19:57
Compare
Choose a tag to compare

Version: 2.6.1

  • Player.is_playing() was always returning True, this has now been corrected.

  • auto_queue was causing an error for certain songs when using YouTube

    • This was due to not every YouTube video having recommended playlists and returned a single track.

v2.6.0

24 Jul 11:39
Compare
Choose a tag to compare

Version: 2.6.0

  • The ability to add YouTubePlaylist directly to the queue with .put or .put_wait

    • The asynchronous part of .put_wait also had to be changed to accompany this.
  • The autoplay feature now supports YouTube. Simply search for a YouTubeTrack as per usual and set populate=True on .play() while player.autoplay = True. This will now gather recommended songs from YouTube; the behaviour is nearly identical to how the Spotify autoplay feature currently works.

    • Spotify and YouTube autoplay features work in tandem.
    • The auto_queue threshold was increased from 20 to 100. This internal increase allows a larger variety of tracks to be populated.
    • The auto_queue is shuffled each time it is populated. There are multiple reasons this behaviour was implemented. The main 2 are that 1: Searching tracks produces different recommendations and previously would mean a batch of those recommendations would be put at the end of the queue, so searching a metal song followed by a pop song would mean all metal recommended songs would play before any pop songs and 2: If the auto_queue becomes empty and needs to forcefully populate, the last queued batch of recommendations would always be the default search type, this no longer happens and allows for greater variance. It if possible in the future we could implement flags to change the behaviour of this, but in this release I want to focus on the core functionality actually working.
  • __hash__ was added to Playable

  • decode_url was implemented within SpotifyTrack.search() internally, which now automatically determines the type and id of the track before searching.

    • You can no longer provide the type argument to SpotifyTrack.search().
    • If the type is unable to be determined or is unusable, SpotifyTrack.search() will return an empty list.
    • Though the SpotifyTrack.iterator will error when a playlist or album URL is not provided, with TypeError
  • loop_all has been added to autoplay

  • Added spotify.SpotifyTrack to Player.play track argument annotations

  • force keyword argument to Player.stop. If this is set to True, the player will stop and "skip" the song even when loop is set to True. If this is False and loop is set to True this will stop the song, but continue looping it. Defaults to True

  • Logging throughout most of the library has been updated and is now more uniform and detailed. This will allow for better debugging in the future.

  • Version checks when connecting to a Node have been changed to allow Wavelink to continue running and connecting when a version mismatch happens. If a version is unknown, wavelink will currently always assume a Major Lavalink version of 3. You will receive a logged warning when this happens.

  • Player cleanup logic has been adjusted and changed to be better controlled. This is something that does need a close eye on to monitor whether there are any unwanted side effects of the new behaviour. When a Player is disconnected you will NOT receive track end events for the currently playing track. Instead if you need to, you should handle custom clean-up logic in on_wavelink_websocket_closed.

v2.5.1

16 Jun 13:24
Compare
Choose a tag to compare

Version: 2.5.1

  • Fixed a bug in Spotify Ext where access tokens were not being refreshed in fulfill when autoplay was set. This would eventually result in a 401 Error unless a Spotify Track had been searched for within the last hour.
  • Fixed a bug in Spotify Ext due to changes to search with the removal of return_first. This would only ocassionally happen when an ISRC was not able to be found on YouTube or YouTube Music.

Documentation: https://wavelink.dev

v2.5.0

15 Jun 02:34
Compare
Choose a tag to compare

Version 2.5.0:

  • Player.disconnect() now invalidates the player and discord.py voice client caches as soon as it is called.
  • Added Queue.shuffle(). This shuffles the queue in-place. E.g. player.queue.shuffle()
  • Removed return_first keyword argument from all tracks including SpotifyTrack. Keeping this around has been a poor design choice for wavelink. Previously this resulted in Exceptions being raised if no tracks were found. Now an empty list or a list populated with tracks is always returned. Example of handling tracks:
tracks = await wavelink.YouTubeTrack.search(query)
if not tracks:
    # No tracks were found, handle that here...
    ...

track = tracks[0]
  • Fixed __eq__ on SpotifyTrack.
  • Added __str__ and __repr__ to SpotifyTrack
  • Changed: wavelink.YouTubeTrack/YouTubeMusicTrack now set the default thumbnail URL to the fetched thumbnail if .fetch_thumbnail() is used.
  • Changed: If a URL is passed to any Playable.search() it is treated as a raw search without the search prefix. This helps make searching services like SoundCloud more precise.

Documentation: https://wavelink.dev

v2.4.0

09 Jun 03:02
Compare
Choose a tag to compare
Fix broken user_limit logic.

V2.0.1

10 Mar 00:05
Compare
Choose a tag to compare

This is the first release of Wavelink 2.0 for public use.

Please report any bugs via GitHub or in the Help/Development channels on Discord.

GitHub: https://github.com/PythonistaGuild/Wavelink
Documentation: https://wavelink.readthedocs.io/en/latest/index.html
Small Examples: https://github.com/PythonistaGuild/Wavelink/tree/main/examples

  • Better Spotify support, with more metadata and AutoPlay recommendations (See below)
  • AutoPlay feature with Auto-filling queue. Please see examples on how to add a simple auto play command with Spotify.
  • Supports Lavalink 3.7+. Does not support anything lower. Please upgrade Lavalink to 3.7+ to use Wavelink 2.
  • For bots with more than one Node, players have the ability to seamlessly switch Nodes during playback in case of downtime. Examples to come.
  • Looping now built into wavelink.Queue. You can loop one or all songs continuously.
  • YouTube tracks can now fetch a thumbnail via a request for guaranteed thumbnails.
  • Plus more, with more to come in later releases.

This release includes a small bugfix to websocket.

V1.3.5

05 Feb 16:40
Compare
Choose a tag to compare

Fix a bug when moving the bot across channels.

V1.3.4

22 Dec 16:04
6490ad4
Compare
Choose a tag to compare

Fix player._source returning None after being replaced.

v1.3.3

04 Oct 22:43
Compare
Choose a tag to compare

Revert volume away from filters.

v1.3.2

10 Jul 12:25
Compare
Choose a tag to compare

Added a __main__.py which allows executing wavelink to download Lavalink.jar and optionally Java17.