Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
9b53c08
fix: handle socket close event on session resume to prevent leaks
1Lucas1apk Dec 21, 2025
28c7963
improve: add source-specific configuration validation
aroradev1010 Dec 22, 2025
581b48c
Merge pull request #137 from aroradev1010/improve-source-config-valid…
1Lucas1apk Dec 22, 2025
a031dd2
fix: define missing helper functions in YouTube source
1Lucas1apk Dec 22, 2025
c64394e
update: streamline YouTube OAuth validation process
1Lucas1apk Dec 22, 2025
8d9be4c
Merge branch 'dev' of https://github.com/PerformanC/NodeLink into dev
1Lucas1apk Dec 22, 2025
95e662d
add: source Telegram integration with video extraction
1Lucas1apk Dec 22, 2025
d2d8dac
update: clear searchTerms in Telegram and search method
1Lucas1apk Dec 22, 2025
7234ca9
fix: improve video stream handling in Telegram source
1Lucas1apk Dec 23, 2025
05b92ef
add: bilibili source support with flv playback and lyrics
1Lucas1apk Dec 23, 2025
c4ac97d
add: genius source support with smart mirror
1Lucas1apk Dec 23, 2025
9cb0fe3
improve: youtube recovery on aborted connections
1Lucas1apk Dec 23, 2025
939fb3e
update: improve vkmusic with native HLS and session refresh
1Lucas1apk Dec 23, 2025
b0fb9c3
add: amazon music as a mirror source
1Lucas1apk Dec 23, 2025
710d739
add: pinterest source
1Lucas1apk Dec 23, 2025
79d5192
add: mixcloud source and fix hls memory leak
1Lucas1apk Dec 24, 2025
3cc5e7f
add: implement getSource method in SourcesManager
1Lucas1apk Dec 24, 2025
b61fae4
improve: optimize audio processing and buffer management
1Lucas1apk Dec 24, 2025
d4b2fd9
improve: optimize memory with buffer pool and split stats interval
1Lucas1apk Dec 24, 2025
679a521
improve: optimize audio processing cpu and memory usage
1Lucas1apk Dec 24, 2025
54008a0
fix: force kill cloudflared process on exit to prevent zombies
1Lucas1apk Dec 24, 2025
dd3e47c
improve: enhance local address handling in HTTP requests
1Lucas1apk Dec 24, 2025
e292398
improve: worker scaling and stability with cost-based load balancing
1Lucas1apk Dec 25, 2025
0788e0a
fix: resolve webm seeking crash and http recursion bug
1Lucas1apk Dec 25, 2025
70ce1b5
update: enable opus dtx by default for saving bandwidth
ToddyTheNoobDud Dec 25, 2025
844b516
improve: implement stability and performance optimizations
1Lucas1apk Dec 26, 2025
006b968
Merge branch 'dev' of https://github.com/PerformanC/NodeLink into dev
1Lucas1apk Dec 26, 2025
d5e369e
improve: exp hibernation configuration
1Lucas1apk Dec 26, 2025
66d0c58
fix: replace process.on with process.once for shutdown
1Lucas1apk Dec 26, 2025
bcdaa91
fix: improve shutdown handling by removing redundant signal listeners
1Lucas1apk Dec 26, 2025
8897f14
fix: streamline worker cleanup and shutdown handling
1Lucas1apk Dec 26, 2025
26cc5b5
fix: enhance shutdown handling in NodelinkServer and WorkerManager
1Lucas1apk Dec 26, 2025
2d7aead
fix: enhance tunnel logging
1Lucas1apk Dec 26, 2025
2b7edf1
improve: implement CredentialManager for secure credential handling
1Lucas1apk Dec 26, 2025
f6f3c34
fix: implement forceSave method in CredentialManager
1Lucas1apk Dec 26, 2025
5c89014
fix: enhance token fetching in PandoraSource with remote
1Lucas1apk Dec 26, 2025
c0739c0
fix: add remote token URL configuration for PandoraSource
1Lucas1apk Dec 26, 2025
1c2fd23
improve: implement unified track matching and optimize mirrors
1Lucas1apk Dec 27, 2025
618db45
fix: add clear() methods to filters to prevent audio artifacts
notinsane-dev Dec 27, 2025
e6dd710
Merge branch 'dev' into feat/reverb-flanger-filters
1Lucas1apk Dec 27, 2025
20392f7
Merge pull request #139 from notinsane-dev/feat/reverb-flanger-filters
1Lucas1apk Dec 27, 2025
c8bb14e
fix: correctly close the session sockets
ToddyTheNoobDud Dec 27, 2025
53820e7
improve: enhance system stability and network robustness
1Lucas1apk Dec 28, 2025
d9936ee
add: endpoint /v4/loadstream for raw PCM audio streaming
1Lucas1apk Dec 28, 2025
9cf6de4
fix: resolve logger reference error and improve stream error handling
1Lucas1apk Dec 28, 2025
14ccb6c
add: specialized search support for playlists and artists on YouTube
1Lucas1apk Dec 28, 2025
bd275e5
fix: use mirrored track info for loadstream and mix layers
1Lucas1apk Dec 29, 2025
9a9861f
add: specialized search support for playlists, albums, users, tracks …
ToddyTheNoobDud Dec 29, 2025
967faec
fix: bun websocket not beign created if useBunServer is false & fix o…
ToddyTheNoobDud Dec 29, 2025
fa5a949
improve: reduce karaoke filter allocations by reusing arrays
ToddyTheNoobDud Jan 1, 2026
a7e58a9
update: replace toddy-mediaplex with @toddynnn/voice-opus
ToddyTheNoobDud Jan 2, 2026
7bb222d
update: replace toddy-mediaplex with @toddynnn/voice-opus
ToddyTheNoobDud Jan 2, 2026
4943406
update: android_vr builds to android 15 & latest meta quest 3 youtube.
ToddyTheNoobDud Jan 3, 2026
ba78a6f
fix: remove unused ,
ToddyTheNoobDud Jan 3, 2026
a317ffa
update: use youtube.com/tv for encryptedHostFlags & use amazon fire t…
ToddyTheNoobDud Jan 3, 2026
92af874
update: web client to the 2026 version
ToddyTheNoobDud Jan 3, 2026
d853b20
update: tvhtml5 version & samsung user agent
ToddyTheNoobDud Jan 3, 2026
e11501a
update: ios version
ToddyTheNoobDud Jan 3, 2026
49781d4
update: android app versions
ToddyTheNoobDud Jan 3, 2026
a8478e3
fix: remove accidental applewebkit on android vr headers
ToddyTheNoobDud Jan 3, 2026
5d3dc22
update: use identity header on android for saving ram
ToddyTheNoobDud Jan 3, 2026
65ab49c
fix: replace ` with '
ToddyTheNoobDud Jan 3, 2026
2be2735
Merge pull request #141 from ToddyTheNoobDud/dev
1Lucas1apk Jan 3, 2026
932309b
update: disable opus dtx by default
ToddyTheNoobDud Jan 3, 2026
40f1928
improve: add external server for Spotify getToken handling
1Lucas1apk Jan 4, 2026
d4e6692
improve: implement Spotify API rate limit handling
1Lucas1apk Jan 4, 2026
89f6a45
fix: correct extract the track author on internal tracks
ToddyTheNoobDud Jan 5, 2026
f1ea03c
add: speak prefix to google-tts by default
ToddyTheNoobDud Jan 5, 2026
793853e
remove: unnecessary files from Dockerfile
1Lucas1apk Jan 5, 2026
57ef297
improve: search spotify to support multiple types
1Lucas1apk Jan 5, 2026
406bb29
improve: enhance comments and organization in docker-compose.yml
1Lucas1apk Jan 5, 2026
5d2464b
update: enable optional channelId on player connection creation request
ToddyTheNoobDud Jan 6, 2026
a8b724b
update: upgrade Node.js version to 25-alpine in Dockerfile
1Lucas1apk Jan 7, 2026
9c3ab61
fix: soundcloud regex for client id retrieval
UnschooledGamer Jan 8, 2026
4ec116d
add: soundcloud clientId to nodelink config
UnschooledGamer Jan 8, 2026
299035f
update: config.default.js for soundcloud clientId
UnschooledGamer Jan 8, 2026
573709d
fix: make socket destroy chain optional
ToddyTheNoobDud Jan 9, 2026
3930a79
fix: playerManager create race condition
ToddyTheNoobDud Jan 9, 2026
ad5b7e0
fix: improve error handling in track encoding and decoding functions
1Lucas1apk Jan 10, 2026
51ad8a3
fix: avoid null padding in track details and add seekable meta tag
1Lucas1apk Jan 10, 2026
5eb74c1
fix: refactor decodeTrack and encodeTrack
1Lucas1apk Jan 10, 2026
f8e3da9
improve: specialized source cluster and per-guild worker queues
1Lucas1apk Jan 12, 2026
1d964bf
fix: enhance source worker management with load tracking and task
1Lucas1apk Jan 12, 2026
c268959
update: log invalid password in unauthorized connection attempts
1Lucas1apk Jan 13, 2026
04f4b0d
improve: improvement to the match sources and searchterm system
1Lucas1apk Jan 13, 2026
fcba805
improve: enhance compatibility table with additional notes for clients
1Lucas1apk Jan 13, 2026
44d58dc
add: endpoint configuration and worker management API
1Lucas1apk Jan 13, 2026
7288adf
fix: load stream functionality with error handling and streaming support
1Lucas1apk Jan 14, 2026
2a20a91
add: implement command socket communication for worker management
1Lucas1apk Jan 14, 2026
84f7590
fix: youtube lives having frequently duplicated audios
ToddyTheNoobDud Jan 14, 2026
dd2630c
add: voice receive
1Lucas1apk Jan 14, 2026
3215510
add: track recommendations from the sources
1Lucas1apk Jan 14, 2026
7907280
add: implement YouTube recommendations and enhance playlist handling
1Lucas1apk Jan 14, 2026
b54d10f
improve: modify the default search source to mirror streams
1Lucas1apk Jan 14, 2026
c68eaeb
update: move voiceReceive
1Lucas1apk Jan 14, 2026
b57263a
update: biome lint
1Lucas1apk Jan 14, 2026
d5478b3
update: biome check write
1Lucas1apk Jan 14, 2026
e72dcf5
fix: make res.on('close') an optional chain
ToddyTheNoobDud Jan 15, 2026
1254298
update: bump version to 3.5.0
1Lucas1apk Jan 15, 2026
03d6f5e
Merge branch 'dev' of https://github.com/PerformanC/NodeLink into dev
1Lucas1apk Jan 15, 2026
66d8e71
update: clients to 2026 versions
ToddyTheNoobDud Jan 15, 2026
00f3745
add: audiomack source support
ToddyTheNoobDud Jan 15, 2026
bf939f2
update: format audiomack with biome
ToddyTheNoobDud Jan 15, 2026
5c98b5c
add: implement Gaana source support
1Lucas1apk Jan 16, 2026
44753b1
update: clarify Gaana API server hosting instructions
1Lucas1apk Jan 16, 2026
c8ef927
update: add credits comment to Gaana source file
1Lucas1apk Jan 16, 2026
d1cea42
add: support for shazam source
ToddyTheNoobDud Jan 16, 2026
610e61a
Update lastfm.js
southctrl Jan 16, 2026
95268a8
Update lastfm.js
southctrl Jan 16, 2026
795379f
Update lastfm.js
southctrl Jan 16, 2026
3cb4ada
Refactor LastFMSource to support API searches
1Lucas1apk Jan 16, 2026
2ca894c
Merge pull request #146 from southctrl/patch-1
1Lucas1apk Jan 16, 2026
0e96327
fix: fix loadlyrics endpoint & improve loadchapters speed
ToddyTheNoobDud Jan 16, 2026
605e59a
fix: bilibili making loadlyrics crash
ToddyTheNoobDud Jan 16, 2026
8943a31
update: extract thumbnail from og:image in shazam
ToddyTheNoobDud Jan 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 3 additions & 7 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Stage 1: Builder - Install dependencies
FROM node:20-alpine AS builder
FROM node:25-alpine AS builder

# Install git (required for npm to install dependencies from GitHub)
RUN apk add --no-cache git
Expand All @@ -9,15 +9,15 @@ WORKDIR /app

# Copy package.json and package-lock.json (if available) to leverage Docker cache
# Use wildcards to ensure both package.json and package-lock.json (or yarn.lock/pnpm-lock.yaml) are copied
COPY package*.json ./
COPY package.json ./

# Install production dependencies
# This command automatically handles package-lock.json if it exists, otherwise it creates one.
# For Bun, you might use 'bun install --production'.
RUN npm install

# Stage 2: Runner - Copy application code and run
FROM node:20-alpine
FROM node:25-alpine

# Set working directory
WORKDIR /app
Expand All @@ -30,10 +30,6 @@ COPY --from=builder /app/node_modules ./node_modules
COPY src/ ./src/
COPY config.default.js ./config.default.js
COPY package.json ./package.json
COPY biome.json ./biome.json
COPY commitlint.config.mjs ./commitlint.config.mjs
COPY LICENSE ./LICENSE
COPY README.md ./README.md

# Expose the port the application listens on (default is 3000 from config.default.js)
EXPOSE 3000
Expand Down
58 changes: 29 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,35 +91,35 @@ docker run -p 2333:2333 nodelink
NodeLink is compatible with most Lavalink clients, as it implements nearly the entire original API.
However, some clients may not work properly, since NodeLink changes certain behaviors and endpoints.

| Client | Platform | v3 supported? | NodeLink Features? | NodeLink major version |
| ------------------------------------------------------------------- | ------------ | ------------- | ------------------ | ---------------------- |
| [Lavalink-Client](https://github.com/lavalink-devs/Lavalink-Client) | JVM | unknown | No | v1 and v2 |
| [Lavalink.kt](https://github.com/DRSchlaubi/Lavalink.kt) | Kotlin | unknown | No | v1 |
| [DisGoLink](https://github.com/disgoorg/disgolink) | Go | unknown | No | v1 and v2 |
| [Lavalink.py](https://github.com/devoxin/lavalink.py) | Python | unknown | No | v1 and v2 |
| [Mafic](https://github.com/ooliver1/mafic) | Python | unknown | No | v1 and v2 |
| [Wavelink](https://github.com/PythonistaGuild/Wavelink) | Python | Yes | No | v1, v2, v3 |
| [Pomice](https://github.com/cloudwithax/pomice) | Python | unknown | No | v1 and v2 |
| [lava-lyra](https://github.com/ParrotXray/lava-lyra) | Python | Yes | No | v3 |
| [Hikari-ongaku](https://github.com/MPlatypus/hikari-ongaku) | Python | unknown | No | v1 and v2 |
| [Moonlink.js](https://github.com/1Lucas1apk/moonlink.js) | TypeScript | Yes | No | v1, v2, v3 |
| [Magmastream](https://github.com/Blackfort-Hosting/magmastream) | TypeScript | unknown | No | v1 |
| [Lavacord](https://github.com/lavacord/Lavacord) | TypeScript | unknown | No | v1 and v2 |
| [Shoukaku](https://github.com/Deivu/Shoukaku) | TypeScript | Yes | No | v1, v2, v3 |
| [Lavalink-Client](https://github.com/tomato6966/Lavalink-Client) | TypeScript | Yes | No | v1 and v3 |
| [Rainlink](https://github.com/RainyXeon/Rainlink) | TypeScript | unknown | No | v1 and v2 |
| [Poru](https://github.com/parasop/Poru) | TypeScript | unknown | No | v1 and v2 |
| [Blue.ts](https://github.com/ftrapture/blue.ts) | TypeScript | unknown | No | v1 and v2 |
| [FastLink](https://github.com/PerformanC/FastLink) | Node.js | Yes | No | v1, v2, v3 |
| [Riffy](https://github.com/riffy-team/riffy) | Node.js | Yes | No | v1, v2, v3 |
| [TsumiLink](https://github.com/Fyphen1223/TsumiLink) | Node.js | unknown | No | v1 and v2 |
| [AquaLink](https://github.com/ToddyTheNoobDud/AquaLink) | JavaScript | Yes | No | v1, v2, v3 |
| [DisCatSharp](https://github.com/Aiko-IT-Systems/DisCatSharp) | .NET | unknown | No | v1 and v2 |
| [Lavalink4NET](https://github.com/angelobreuer/Lavalink4NET) | .NET | unknown | No | v1 and v2 |
| [Nomia](https://github.com/DHCPCD9/Nomia) | .NET | unknown | No | v1 and v2 |
| [CogLink](https://github.com/PerformanC/Coglink) | C | unknown | No | v1 and v2 |
| [Lavalink-rs](https://gitlab.com/vicky5124/lavalink-rs) | Rust, Python | unknown | No | v1 and v2 |
| [nyxx_lavalink](https://github.com/nyxx-discord/nyxx_lavalink) | Dart | unknown | No | v1 |
| Client | Platform | v3 supported? | NodeLink Features? | NodeLink major version | Notes |
| ------------------------------------------------------------------- | ------------ | ------------- | ------------------ | ---------------------- | --------------------------------------------------------------------- |
| [Lavalink-Client](https://github.com/lavalink-devs/Lavalink-Client) | JVM | unknown | No | v1 and v2 | |
| [Lavalink.kt](https://github.com/DRSchlaubi/Lavalink.kt) | Kotlin | unknown | No | v1 | |
| [DisGoLink](https://github.com/disgoorg/disgolink) | Go | unknown | No | v1 and v2 | |
| [Lavalink.py](https://github.com/devoxin/lavalink.py) | Python | unknown | No | v1 and v2 | |
| [Mafic](https://github.com/ooliver1/mafic) | Python | unknown | No | v1 and v2 | |
| [Wavelink](https://github.com/PythonistaGuild/Wavelink) | Python | Yes | No | v1, v2, v3 | |
| [Pomice](https://github.com/cloudwithax/pomice) | Python | unknown | No | v1 and v2 | |
| [lava-lyra](https://github.com/ParrotXray/lava-lyra) | Python | Yes | Yes | v3 | |
| [Hikari-ongaku](https://github.com/MPlatypus/hikari-ongaku) | Python | unknown | No | v1 and v2 | |
| [Moonlink.js](https://github.com/1Lucas1apk/moonlink.js) | TypeScript | Yes | No | v1, v2, v3 | |
| [Magmastream](https://github.com/Blackfort-Hosting/magmastream) | TypeScript | unknown | No | v1 | |
| [Lavacord](https://github.com/lavacord/Lavacord) | TypeScript | unknown | No | v1 and v2 | |
| [Shoukaku](https://github.com/Deivu/Shoukaku) | TypeScript | Yes | No | v1, v2, v3 | |
| [Lavalink-Client](https://github.com/tomato6966/Lavalink-Client) | TypeScript | No | No | v1 | Unstable for some users who have reported this over the months |
| [Rainlink](https://github.com/RainyXeon/Rainlink) | TypeScript | unknown | No | v1 and v2 | |
| [Poru](https://github.com/parasop/Poru) | TypeScript | unknown | No | v1 and v2 | |
| [Blue.ts](https://github.com/ftrapture/blue.ts) | TypeScript | unknown | No | v1 and v2 | |
| [FastLink](https://github.com/PerformanC/FastLink) | Node.js | Yes | No | v1, v2, v3 | |
| [Riffy](https://github.com/riffy-team/riffy) | Node.js | Yes | No | v1, v2, v3 | |
| [TsumiLink](https://github.com/Fyphen1223/TsumiLink) | Node.js | unknown | No | v1 and v2 | |
| [AquaLink](https://github.com/ToddyTheNoobDud/AquaLink) | JavaScript | Yes | Yes | v1, v2, v3 | |
| [DisCatSharp](https://github.com/Aiko-IT-Systems/DisCatSharp) | .NET | unknown | No | v1 and v2 | |
| [Lavalink4NET](https://github.com/angelobreuer/Lavalink4NET) | .NET | unknown | No | v1 and v2 | |
| [Nomia](https://github.com/DHCPCD9/Nomia) | .NET | unknown | No | v1 and v2 | |
| [CogLink](https://github.com/PerformanC/Coglink) | C | unknown | No | v1 and v2 | |
| [Lavalink-rs](https://gitlab.com/vicky5124/lavalink-rs) | Rust, Python | unknown | No | v1 and v2 | |
| [nyxx_lavalink](https://github.com/nyxx-discord/nyxx_lavalink) | Dart | unknown | No | v1 | |

> [!IMPORTANT]
> Lack of explicit NodeLink support *usually* means that the client implements the Lavalink API inconsistently, not following its defined formats and fields. Using such clients may lead to unexpected behavior.
Expand Down
89 changes: 79 additions & 10 deletions config.default.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,36 @@ export default {
enabled: true, // active cluster (or use env CLUSTER_ENABLED)
workers: 0, // 0 => uses os.cpus().length, or specify a number (1 = 2 processes total: master + 1 worker)
minWorkers: 1, // Minimum workers to keep alive (improves availability during bursts)
specializedSourceWorker: {
enabled: true, // If true, source loading (search, lyrics, etc.) is delegated to dedicated workers to prevent voice worker lag
count: 1, // Number of separate process clusters for source operations
microWorkers: 2, // Number of worker threads per process cluster
tasksPerWorker: 32, // Number of parallel tasks each micro-worker can handle before queuing
silentLogs: true // If true, micro-workers will only log warnings and errors
},
commandTimeout: 6000, // Timeout for heavy operations like loadTracks (6s)
fastCommandTimeout: 4000, // Timeout for player commands like play/pause (4s)
maxRetries: 2, // Number of retry attempts on timeout or worker failure
hibernation: {
enabled: true,
timeoutMs: 1200000
},
scaling: {
// New object to group scaling configurations
//scaling configurations
maxPlayersPerWorker: 20, // Reference capacity for utilization calculation
targetUtilization: 0.7, // Target utilization for scaling up/down
scaleUpThreshold: 0.75, // Utilization threshold to scale up
scaleDownThreshold: 0.3, // Utilization threshold to scale down
checkIntervalMs: 5000, // Interval to check for scaling needs
idleWorkerTimeoutMs: 60000, // Time in ms an idle worker should wait before being removed
queueLengthScaleUpFactor: 5 // How many commands in queue per active worker trigger scale up
queueLengthScaleUpFactor: 5, // How many commands in queue per active worker trigger scale up
lagPenaltyLimit: 60, // Event loop lag threshold (ms) to penalize worker cost
cpuPenaltyLimit: 0.85 // CPU usage threshold (85% of a core) to force scale up
},
endpoint: {
patchEnabled: true,
allowExternalPatch: false,
code: 'CAPYBARA'
}
},
logging: {
Expand Down Expand Up @@ -55,10 +73,12 @@ export default {
maxSearchResults: 10,
maxAlbumPlaylistLength: 100,
playerUpdateInterval: 2000,
statsUpdateInterval: 30000,
trackStuckThresholdMs: 10000,
zombieThresholdMs: 60000,
enableHoloTracks: false,
enableTrackStreamEndpoint: false,
enableLoadStreamEndpoint: false,
resolveExternalLinks: false,
fetchChannelInfo: false,
filters: {
Expand All @@ -79,9 +99,23 @@ export default {
timescale: true
}
},
defaultSearchSource: 'youtube',
defaultSearchSource: ['youtube', 'soundcloud'],
unifiedSearchSources: ['youtube', 'soundcloud'],
sources: {
vkmusic: {
enabled: true,
userToken: '', // (optional) get from vk in browser devtools -> reqs POST /?act=web_token HTTP/2 - headers -> response -> access_token
userCookie: '' // (required without userToken) get from vk in browser devtools -> reqs POST /?act=web_token HTTP/2 - headers -> request -> cookie (copy full cookie header)
},
amazonmusic: {
enabled: true
},
mixcloud: {
enabled: true
},
audiomack: {
enabled: true
},
deezer: {
// arl: '',
// decryptionKey: '',
Expand All @@ -91,7 +125,8 @@ export default {
enabled: true
},
soundcloud: {
enabled: true
enabled: true,
// clientId: ""
},
local: {
enabled: true,
Expand All @@ -104,6 +139,23 @@ export default {
// Note: not 100% of the songs are currently working (but most should.), because i need to code a different extractor for every year (2010, 2011, etc. not all are done)
enabled: true,
},
telegram: {
enabled: true
},
shazam: {
enabled: true,
allowExplicit: true
},
bilibili: {
enabled: true,
sessdata: '' // Optional, improves access to some videos (premium and 4k+)
},
genius: {
enabled: true
},
pinterest: {
enabled: true
},
flowery: {
enabled: true,
voice: 'Salli',
Expand All @@ -118,6 +170,14 @@ export default {
artistLoadLimit: 20
// "secretKey": "38346591" // Optional, defaults to standard key
},
gaana: {
enabled: true,
apiUrl: 'https://gaana.1lucas1apk.fun/api', // if you want to host your server https://github.com/notdeltaxd/Gaana-API
streamQuality: 'high',
playlistLoadLimit: 100,
albumLoadLimit: 100,
artistLoadLimit: 100
},
"google-tts": {
enabled: true,
language: 'en-US'
Expand Down Expand Up @@ -157,6 +217,7 @@ export default {
enabled: true,
clientId: '',
clientSecret: '',
externalAuthUrl: 'http://get.1lucas1apk.fun/spotify/gettoken', // URL to external token provider (e.g. http://localhost:8080/api/token - use https://github.com/topi314/spotify-tokener or https://github.com/1Lucas1apk/gettoken)
market: 'US',
playlistLoadLimit: 1, // 0 means no limit (loads all tracks), 1 = 100 tracks, 2 = 100 and so on!
playlistPageLoadConcurrency: 10, // How many pages to load simultaneously
Expand Down Expand Up @@ -185,7 +246,8 @@ export default {
enabled: true,
// Optional, setting this manually can help unblocking countries (since pandora is US only.). May need to be updated periodically.
// fetching manually: use a vpn connected to US, go on pandora.com, open devtools, Network tab, first request to appear and copy the 2nd csrfToken= value.
// csrfToken: ''
// csrfToken: '',
remoteTokenUrl: 'https://get.1lucas1apk.fun/pandora/gettoken' // URL to a remote provider that returns { success: true, authToken: "...", csrfToken: "...", expires_in_seconds: ... } //https://github.com/1Lucas1apk/gettoken
},
nicovideo: {
enabled: true
Expand All @@ -212,6 +274,9 @@ export default {
lrclib: {
enabled: true
},
bilibili: {
enabled: true
},
applemusic: {
enabled: true,
advanceSearch: true // Uses YTMusic to fetch the correct title and artists instead of relying on messy YouTube video titles, improving lyrics accuracy
Expand All @@ -222,6 +287,10 @@ export default {
encryption: 'aead_aes256_gcm_rtpsize',
resamplingQuality: 'best' // best, medium, fastest, zero order holder, linear
},
voiceReceive: {
enabled: false,
format: 'opus' // pcm_s16le, opus
},
routePlanner: {
strategy: 'RotateOnBan', // RotateOnBan, RoundRobin, LoadBalance
bannedIpCooldown: 600000, // 10 minutes
Expand Down Expand Up @@ -282,10 +351,10 @@ export default {
autoCleanup: true
},
plugins: [
/* {
name: 'nodelink-sample-plugin',
source: 'local'
} */
/* {
name: 'nodelink-sample-plugin',
source: 'local'
} */
],
pluginConfig: {}
}
}
Loading
Loading