merge: dev → v3 with Vimeo support, plugin system, YouTube/OAuth improvements, config validation, and multiple fixes#136
Merged
Merged
Conversation
This commit fixes the extraction for the youtube source (that happended even with Oauth + STS !), now every song that fails will correctly fallback to the TV client with sts. (obs: youtube din't even roll out this update globally and we already fixed it :d) Signed-off-by: toddynnn <86982643+ToddyTheNoobDud@users.noreply.github.com>
This fixes many songs not finding any "stream" by default because of the quality / itag selections. order is: 251 (medium opus quality) -> 250 (low opus quality) -> 140 (medium quality mp4) -> 18 (low quality mp4) these formats appears frenquently on most of the songs i tested on, so they were selected. Signed-off-by: toddynnn <86982643+ToddyTheNoobDud@users.noreply.github.com>
this commit fixes formatNumber division (1m beign divided by 1 billion for example) refactored extractMetadataFromResponse (it was reading an whole json, making it slow for real time, so i converted it to use fast paths instead, and if it faills, oembed will be used.) refactored checkURLType (it was creating new regexs every time, for every url, so i made them pre-compiled for re-use, improving the speed) refactored parsePublishedAt (mostly changes are the same from checkURLType & extractMetadataFromResponse , just avoids more calculations) Added encryptedHostFlags extraction for embedded clients (this makes clients like tvEmbedded work again.) Signed-off-by: toddynnn <86982643+ToddyTheNoobDud@users.noreply.github.com>
this commit improves all the cleanups, correctly cleaning-up the segments, activeStreams, etc, which fixes memory leaks for long-runtime. Adds .unref() for most timers, this fixes some tiny leaks. Fixes youtube's livestream fetching/regexs, also optimized its high memory usage caused by it (by limiting its reciving segments & reading the duration) Separated the music handling into sub-methods for easier understanding for easier debugging if needed on the future. this commit main focus is more for long-runtime process. Signed-off-by: toddynnn <86982643+ToddyTheNoobDud@users.noreply.github.com>
Fetch available voices from the API and map names to UUIDs to ensure compatibility with the new /v1/tts endpoint which now requires voice_id.
add: basic STS caching system
This commit fixes non STS based clients not beign able to find the stream urls for example: youtube-ANDROID_VR > Failed to resolve format URL for itag 140: Cannot read properties of null (reading 'url') this commit fixes this issue ^^. Signed-off-by: toddynnn <86982643+ToddyTheNoobDud@users.noreply.github.com>
Note: some songs may not work, because vimeo is making new extractions for every single year (2010, 2011, etc). Signed-off-by: toddynnn <86982643+ToddyTheNoobDud@users.noreply.github.com>
Signed-off-by: toddynnn <86982643+ToddyTheNoobDud@users.noreply.github.com>
Deleted most caching (CACHE_TTL, CACHE_MAX_SIZE, this._cache, _getCached(), _setCache()), this was caching the whole playlistData (meaning all segments cached), causing a big performance issue. replaced it with a tiny handoff cache, which is needed for the getTrackUrl and loadStream ^^ Reworked the segments handling, it was allocating a full buffer. Now it writes the chunks to the output as they arrive, improving the memory usage. Removed StreamingRequest, moved to helper functions. Fixed the stream not waiting for the drain/close, fixing a potential memory leak Added http agents for reusing the connections (for segments, since they do a lot of requests, its better maintaing a keep alive connection instead of a new http request for every segment.) Signed-off-by: toddynnn <86982643+ToddyTheNoobDud@users.noreply.github.com>
- Exposed available audio tracks in pluginInfo for both Holo and Vanilla tracks - Implemented audio track selection via audioTrackId in play request - Added fallback mechanism to default audio if requested language is unavailable - Sanitized caption data in pluginInfo to prevent payload bloat - Fixed lyrics loading for captions requiring fmt=json3 and added safety checks
this commit renames the album to playlist, fixes playback issues when loading albums (eg: bandcamp albums were not working.)
This commit should fix issues with the getTrackUrl for youtube music and its searching.
should fix the ytmusic's getTrackUrl issues.
This commit adds an way to extract the tidal token without an account, based off the current applemusic implementation with caching for it. Note: this is currently experimental, may be changed soon :)
improve: add explicit validation errors for config values
Signed-off-by: toddynnn <86982643+ToddyTheNoobDud@users.noreply.github.com>
Signed-off-by: toddynnn <86982643+ToddyTheNoobDud@users.noreply.github.com>
add: system plugins
This commit fixes memory leaks, improves the performance of the stream processor, and improves the resampling speed for symphoniadecoder class and createSeekableAudioResource. Also fixed/improved the createPCMStream function in streamProcessor.js. Updated config.default.js to remove loading from the sample plugin by default. Updated package.json dependencies. For @toddynnn/symphoniadecoder: - Improved resampling speed - Removed unused imports - Added better error handling for reduced break/panic risk - Improved internal cleanup process
Removed comments that explain code behavior. Signed-off-by: Lucas Morais Rodrigues <76886832+1Lucas1apk@users.noreply.github.com>
…oherence improve: add range, enum, and cross-field config validation
i fixed the installation issue, should be working again Signed-off-by: toddynnn <86982643+ToddyTheNoobDud@users.noreply.github.com>
add: implement binary build process and registry generation
Signed-off-by: Lucas Morais Rodrigues <76886832+1Lucas1apk@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
Merge changes from
devintov3, including:Why
This merge is required to consolidate recent development improvements, ensuring the
v3branch contains all the latest features and fixes, making it more stable and compatible with LavaLink clients.Checkmarks
Additional information
This merge also includes dependency updates, such as symphonia-decoder, and audio pipeline improvements. All plugins and features have been tested to ensure compatibility with current LavaLink client versions.