ziplayer 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AI-Guide.md +956 -0
- package/README.md +197 -134
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +97 -61
- package/dist/plugins/index.js.map +1 -1
- package/dist/structures/Player.d.ts.map +1 -1
- package/dist/structures/Player.js +3 -0
- package/dist/structures/Player.js.map +1 -1
- package/package.json +1 -1
- package/src/plugins/index.ts +125 -73
- package/src/structures/Player.ts +1693 -1689
package/README.md
CHANGED
|
@@ -1,196 +1,259 @@
|
|
|
1
1
|
<img width="1175" height="305" alt="logo" src="https://raw.githubusercontent.com/ZiProject/ZiPlayer/refs/heads/main/publish/logo.png" />
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# ZiPlayer
|
|
4
4
|
|
|
5
|
-
A
|
|
5
|
+
A powerful, extensible Discord music engine built on top of `@discordjs/voice`, designed for scalability, flexibility, and
|
|
6
|
+
developer experience.
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
ZiPlayer is not just a player — it's a **full ecosystem** with plugins, extensions, and a modular architecture that lets you build
|
|
9
|
+
advanced music bots quickly.
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
- 🎶 **Multiple source support** - YouTube, SoundCloud, Spotify (with fallback)
|
|
11
|
-
- 🔊 **Queue management** - Add, remove, shuffle, clear
|
|
12
|
-
- 🎚️ **Volume control** - 0-200% volume range
|
|
13
|
-
- ⏯️ **Playback control** - Play, pause, resume, stop, skip
|
|
14
|
-
- 🔁 **Auto play** - Automatically replay the queue when it ends
|
|
15
|
-
- 🔂 **Loop control** - Repeat a single track or the entire queue
|
|
16
|
-
- 📊 **Progress bar** - Display playback progress with customizable icons
|
|
17
|
-
- 🔔 **Event-driven** - Rich event system for all player actions
|
|
18
|
-
- 🎭 **Multi-guild support** - Manage players across multiple Discord servers
|
|
19
|
-
- 🗃️ **User data** - Attach custom data to each player for later use
|
|
20
|
-
- 🔌 **Lavalink** - Support manage an external Lavalink JVM node
|
|
21
|
-
- 🎛️ **Audio Filters** - Apply real-time audio effects using FFmpeg (bassboost, nightcore, etc.)
|
|
11
|
+
---
|
|
22
12
|
|
|
23
|
-
##
|
|
13
|
+
## ✨ Highlights
|
|
14
|
+
|
|
15
|
+
- 🔌 **Plugin-driven architecture** — Easily support new audio sources
|
|
16
|
+
- 🌐 **Multi-source playback** — YouTube, SoundCloud, Spotify (with fallback), TTS, and more
|
|
17
|
+
- 🧠 **Smart fallback system** — Automatically resolves streams across plugins
|
|
18
|
+
- 🎛️ **Advanced audio filters** — Real-time FFmpeg effects (bassboost, nightcore, etc.)
|
|
19
|
+
- 🔁 **Autoplay & looping** — Seamless listening experience
|
|
20
|
+
- 🧩 **Extension system** — Add STT, lyrics, Lavalink, and custom logic
|
|
21
|
+
- 🗂️ **Per-guild player system** — Scales across multiple Discord servers
|
|
22
|
+
- 📡 **Event-driven core** — Full lifecycle hooks for customization
|
|
23
|
+
- 💾 **Custom userdata** — Attach context to each player
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 📦 Installation
|
|
24
28
|
|
|
25
29
|
```bash
|
|
26
|
-
npm install ziplayer @ziplayer/plugin @ziplayer/extension @discordjs/voice discord.js
|
|
30
|
+
npm install ziplayer @ziplayer/plugin @ziplayer/extension @ziplayer/infinity @discordjs/voice discord.js opusscript
|
|
27
31
|
```
|
|
28
32
|
|
|
29
|
-
|
|
33
|
+
---
|
|
30
34
|
|
|
31
|
-
|
|
35
|
+
## 🚀 Quick Start
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
import { Client, GatewayIntentBits } from "discord.js";
|
|
32
39
|
import { PlayerManager } from "ziplayer";
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
40
|
+
import { YouTubePlugin, SoundCloudPlugin, SpotifyPlugin } from "@ziplayer/plugin";
|
|
41
|
+
import { InfinityPlugin } from "@ziplayer/infinity";
|
|
42
|
+
|
|
43
|
+
const client = new Client({
|
|
44
|
+
intents: [
|
|
45
|
+
GatewayIntentBits.Guilds,
|
|
46
|
+
GatewayIntentBits.GuildVoiceStates,
|
|
47
|
+
GatewayIntentBits.GuildMessages,
|
|
48
|
+
GatewayIntentBits.MessageContent,
|
|
49
|
+
],
|
|
50
|
+
});
|
|
35
51
|
|
|
36
52
|
const manager = new PlayerManager({
|
|
37
|
-
plugins: [new
|
|
38
|
-
extensions: [new voiceExt()],
|
|
53
|
+
plugins: [new YouTubePlugin(), new SoundCloudPlugin(), new SpotifyPlugin(), new InfinityPlugin()],
|
|
39
54
|
});
|
|
40
55
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
56
|
+
client.on("messageCreate", async (msg) => {
|
|
57
|
+
if (!msg.content.startsWith("!play ") || !msg.guildId) return;
|
|
58
|
+
|
|
59
|
+
const voiceChannel = msg.member?.voice?.channel;
|
|
60
|
+
if (!voiceChannel) return msg.reply("Join a voice channel first!");
|
|
61
|
+
|
|
62
|
+
const player = await manager.create(msg.guildId, {
|
|
63
|
+
leaveOnEnd: true,
|
|
64
|
+
userdata: { channel: msg.channel },
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
if (!player.connection) await player.connect(voiceChannel);
|
|
68
|
+
await player.play(msg.content.slice(6), msg.author.id);
|
|
50
69
|
});
|
|
51
70
|
|
|
52
|
-
|
|
53
|
-
|
|
71
|
+
client.login(process.env.DISCORD_TOKEN);
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 🧱 Architecture Overview
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
PlayerManager (global)
|
|
80
|
+
└── Player (per guild)
|
|
81
|
+
├── Queue
|
|
82
|
+
├── PluginManager
|
|
83
|
+
├── ExtensionManager
|
|
84
|
+
└── FilterManager
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Flow
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
create → connect → play → stream → events → destroy
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 🎵 Core Usage
|
|
96
|
+
|
|
97
|
+
### Play music
|
|
98
|
+
|
|
99
|
+
```ts
|
|
54
100
|
await player.play("Never Gonna Give You Up", userId);
|
|
101
|
+
await player.play("https://youtube.com/watch?v=...", userId);
|
|
102
|
+
await player.play("tts: Hello world", userId);
|
|
103
|
+
```
|
|
55
104
|
|
|
56
|
-
|
|
57
|
-
await player.play("https://www.youtube.com/playlist?list=PL123", userId);
|
|
105
|
+
### Controls
|
|
58
106
|
|
|
59
|
-
|
|
60
|
-
player.
|
|
107
|
+
```ts
|
|
108
|
+
player.pause();
|
|
109
|
+
player.resume();
|
|
110
|
+
player.skip();
|
|
111
|
+
player.stop();
|
|
112
|
+
player.setVolume(100);
|
|
113
|
+
player.loop("track");
|
|
114
|
+
player.shuffle();
|
|
115
|
+
```
|
|
61
116
|
|
|
62
|
-
|
|
63
|
-
await player.play("https://soundcloud.com/artist/sets/playlist", userId);
|
|
117
|
+
### Queue
|
|
64
118
|
|
|
65
|
-
|
|
66
|
-
player.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
player.
|
|
70
|
-
|
|
71
|
-
player.userdata?.channel?.send(`Now playing: ${track.title}`);
|
|
72
|
-
});
|
|
119
|
+
```ts
|
|
120
|
+
player.queue.add(track);
|
|
121
|
+
player.queue.remove(0);
|
|
122
|
+
player.queue.shuffle();
|
|
123
|
+
player.queue.clear();
|
|
124
|
+
```
|
|
73
125
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
// Apply custom filter
|
|
81
|
-
player.filter.applyFilter({
|
|
82
|
-
name: "custom",
|
|
83
|
-
ffmpegFilter: "volume=1.5,treble=g=5",
|
|
84
|
-
description: "Volume boost + treble boost",
|
|
85
|
-
});
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 🔌 Plugins
|
|
129
|
+
|
|
130
|
+
Install via `@ziplayer/plugin`:
|
|
86
131
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
132
|
+
- **YouTubePlugin** — YouTube + search
|
|
133
|
+
- **SoundCloudPlugin** — SoundCloud streaming
|
|
134
|
+
- **SpotifyPlugin** — Metadata (uses fallback)
|
|
135
|
+
- **TTSPlugin** — Text-to-speech
|
|
136
|
+
- **AttachmentsPlugin** — Local/URL audio files
|
|
137
|
+
|
|
138
|
+
### Example
|
|
139
|
+
|
|
140
|
+
```ts
|
|
141
|
+
import { TTSPlugin } from "@ziplayer/plugin";
|
|
142
|
+
|
|
143
|
+
new PlayerManager({
|
|
144
|
+
plugins: [new TTSPlugin({ defaultLang: "en" })],
|
|
90
145
|
});
|
|
91
146
|
```
|
|
92
147
|
|
|
93
|
-
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 🧩 Extensions
|
|
94
151
|
|
|
95
|
-
|
|
96
|
-
then resumes.
|
|
152
|
+
Enhance player behavior:
|
|
97
153
|
|
|
98
|
-
-
|
|
154
|
+
- 🎤 `voiceExt` — Speech-to-text commands
|
|
155
|
+
- 🎤 `lyricsExt` — Auto lyrics (synced support)
|
|
156
|
+
- ⚡ `lavalinkExt` — External Lavalink node
|
|
157
|
+
|
|
158
|
+
### Example
|
|
99
159
|
|
|
100
160
|
```ts
|
|
101
|
-
import {
|
|
102
|
-
import { TTSPlugin, YouTubePlugin, SoundCloudPlugin, SpotifyPlugin } from "@ziplayer/plugin";
|
|
161
|
+
import { voiceExt, lyricsExt } from "@ziplayer/extension";
|
|
103
162
|
|
|
104
163
|
const manager = new PlayerManager({
|
|
105
|
-
|
|
164
|
+
extensions: [new voiceExt(null, { lang: "en-US" }), new lyricsExt(null, { provider: "lrclib" })],
|
|
106
165
|
});
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 🎛️ Audio Filters
|
|
171
|
+
|
|
172
|
+
Apply FFmpeg filters in real-time:
|
|
173
|
+
|
|
174
|
+
```ts
|
|
175
|
+
await player.filter.applyFilter("bassboost");
|
|
176
|
+
await player.filter.applyFilter("nightcore");
|
|
177
|
+
await player.filter.clearAll();
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Available filters
|
|
181
|
+
|
|
182
|
+
- bassboost, trebleboost
|
|
183
|
+
- nightcore, lofi, vaporwave
|
|
184
|
+
- echo, reverb, chorus
|
|
185
|
+
- karaoke
|
|
186
|
+
- normalize, compressor, limiter
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## 🔊 TTS (Interrupt Mode)
|
|
107
191
|
|
|
108
|
-
|
|
192
|
+
```ts
|
|
109
193
|
const player = await manager.create(guildId, {
|
|
110
194
|
tts: {
|
|
111
|
-
createPlayer: true,
|
|
112
|
-
interrupt: true,
|
|
113
|
-
volume: 1, // 1 => 100%
|
|
195
|
+
createPlayer: true,
|
|
196
|
+
interrupt: true,
|
|
114
197
|
},
|
|
115
198
|
});
|
|
116
199
|
|
|
117
|
-
await player.
|
|
200
|
+
await player.play("tts: Hello everyone", userId);
|
|
201
|
+
```
|
|
118
202
|
|
|
119
|
-
|
|
120
|
-
await player.play("tts: xin chào mọi người", userId);
|
|
203
|
+
---
|
|
121
204
|
|
|
122
|
-
|
|
123
|
-
manager.on("ttsStart", (plr, { track }) => console.log("TTS start", track?.title));
|
|
124
|
-
manager.on("ttsEnd", (plr) => console.log("TTS end"));
|
|
125
|
-
```
|
|
205
|
+
## 📡 Events
|
|
126
206
|
|
|
127
|
-
|
|
207
|
+
Listen globally via manager:
|
|
128
208
|
|
|
129
|
-
|
|
130
|
-
|
|
209
|
+
```ts
|
|
210
|
+
manager.on("trackStart", (player, track) => {});
|
|
211
|
+
manager.on("queueEnd", (player) => {});
|
|
212
|
+
manager.on("playerError", (player, error) => {});
|
|
213
|
+
```
|
|
131
214
|
|
|
132
|
-
|
|
215
|
+
---
|
|
133
216
|
|
|
134
|
-
|
|
135
|
-
|
|
217
|
+
## 🧠 Advanced Features
|
|
218
|
+
|
|
219
|
+
### Autoplay
|
|
136
220
|
|
|
137
221
|
```ts
|
|
138
|
-
|
|
139
|
-
|
|
222
|
+
player.queue.autoPlay(true);
|
|
223
|
+
```
|
|
140
224
|
|
|
141
|
-
|
|
142
|
-
extensions: [
|
|
143
|
-
new lavalinkExt(null, {
|
|
144
|
-
nodes: [
|
|
145
|
-
{
|
|
146
|
-
identifier: "locallavalink",
|
|
147
|
-
password: "youshallnotpass",
|
|
148
|
-
host: "localhost",
|
|
149
|
-
port: 2333,
|
|
150
|
-
secure: false,
|
|
151
|
-
},
|
|
152
|
-
],
|
|
153
|
-
client: client,
|
|
154
|
-
searchPrefix: "scsearch",
|
|
155
|
-
}),
|
|
156
|
-
new voiceExt(null, { lang: "en-US" }),
|
|
157
|
-
new lyricsExt(null, { provider: "lrclib" }),
|
|
158
|
-
],
|
|
159
|
-
//etc...
|
|
160
|
-
});
|
|
225
|
+
### Insert next track
|
|
161
226
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
//etc... userdata,
|
|
166
|
-
});
|
|
227
|
+
```ts
|
|
228
|
+
await player.insert("song", 0);
|
|
229
|
+
```
|
|
167
230
|
|
|
168
|
-
|
|
169
|
-
if (!player.connection) await player.connect(interaction?.member?.voice?.channel);
|
|
231
|
+
### Save stream
|
|
170
232
|
|
|
171
|
-
|
|
172
|
-
await player.
|
|
233
|
+
```ts
|
|
234
|
+
const stream = await player.save(track);
|
|
235
|
+
stream.pipe(fs.createWriteStream("song.mp3"));
|
|
173
236
|
```
|
|
174
237
|
|
|
175
|
-
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## ⚠️ Best Practices
|
|
241
|
+
|
|
242
|
+
- Use **one PlayerManager** per bot
|
|
243
|
+
- Always `await player.connect()` before playing
|
|
244
|
+
- Handle `playerError` events
|
|
245
|
+
- Do not reuse a destroyed player
|
|
176
246
|
|
|
177
|
-
|
|
247
|
+
---
|
|
178
248
|
|
|
179
|
-
|
|
180
|
-
- `willPlay` - Before a track begins playing
|
|
181
|
-
- `trackEnd` - When a track finishes
|
|
182
|
-
- `queueEnd` - When the queue is empty
|
|
183
|
-
- `playerError` - When an error occurs
|
|
184
|
-
- `queueAdd` - When a track is added
|
|
185
|
-
- `volumeChange` - When volume changes
|
|
186
|
-
- And more...
|
|
249
|
+
## 📚 Resources
|
|
187
250
|
|
|
188
|
-
|
|
251
|
+
- Examples: [https://github.com/ZiProject/ZiPlayer/tree/main/examples](https://github.com/ZiProject/ZiPlayer/tree/main/examples)
|
|
252
|
+
- GitHub: [https://github.com/ZiProject/ZiPlayer](https://github.com/ZiProject/ZiPlayer)
|
|
253
|
+
- npm: [https://www.npmjs.com/package/ziplayer](https://www.npmjs.com/package/ziplayer)
|
|
189
254
|
|
|
190
|
-
|
|
191
|
-
[Package](https://www.npmjs.com/package/ziplayer) | [Plugin](https://www.npmjs.com/package/@ziplayer/plugin) |
|
|
192
|
-
[Extension](https://www.npmjs.com/package/@ziplayer/extension)
|
|
255
|
+
---
|
|
193
256
|
|
|
194
|
-
## License
|
|
257
|
+
## 📄 License
|
|
195
258
|
|
|
196
259
|
MIT License
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,KAAK,oBAAoB,GAAG;IAC3B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,KAAK,oBAAoB,GAAG;IAC3B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAwF1C,qBAAa,aAAa;IACzB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAsC;gBAEzC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB;IAMjF,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAMpD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIlC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIzC,MAAM,IAAI,UAAU,EAAE;IAItB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD,KAAK,IAAI,IAAI;IAIP,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAqFzD;;;;;;;OAOG;IACG,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;CAsDtD"}
|
package/dist/plugins/index.js
CHANGED
|
@@ -4,6 +4,73 @@ exports.PluginManager = exports.BasePlugin = void 0;
|
|
|
4
4
|
const timeout_1 = require("../utils/timeout");
|
|
5
5
|
var BasePlugin_1 = require("./BasePlugin");
|
|
6
6
|
Object.defineProperty(exports, "BasePlugin", { enumerable: true, get: function () { return BasePlugin_1.BasePlugin; } });
|
|
7
|
+
function levenshtein(a, b) {
|
|
8
|
+
const matrix = Array.from({ length: a.length + 1 }, () => new Array(b.length + 1).fill(0));
|
|
9
|
+
for (let i = 0; i <= a.length; i++)
|
|
10
|
+
matrix[i][0] = i;
|
|
11
|
+
for (let j = 0; j <= b.length; j++)
|
|
12
|
+
matrix[0][j] = j;
|
|
13
|
+
for (let i = 1; i <= a.length; i++) {
|
|
14
|
+
for (let j = 1; j <= b.length; j++) {
|
|
15
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
16
|
+
matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return matrix[a.length][b.length];
|
|
20
|
+
}
|
|
21
|
+
function similarity(a, b) {
|
|
22
|
+
if (!a || !b)
|
|
23
|
+
return 0;
|
|
24
|
+
const dist = levenshtein(a, b);
|
|
25
|
+
const maxLen = Math.max(a.length, b.length);
|
|
26
|
+
return 1 - dist / maxLen; // 0 → 1
|
|
27
|
+
}
|
|
28
|
+
function normalize(str) {
|
|
29
|
+
return str
|
|
30
|
+
.toLowerCase()
|
|
31
|
+
.replace(/\(.*?\)|\[.*?\]/g, "") // remove (remix), [lyrics]
|
|
32
|
+
.replace(/[^a-z0-9\s]/g, "")
|
|
33
|
+
.replace(/\s+/g, " ")
|
|
34
|
+
.trim();
|
|
35
|
+
}
|
|
36
|
+
const MUSIC_KEYWORDS = ["official", "mv", "audio", "lyrics", "remix", "cover", "ft", "feat", "prod", "music video"];
|
|
37
|
+
const NON_MUSIC_KEYWORDS = ["reaction", "review", "podcast", "interview", "vlog", "live stream", "news", "tiktok"];
|
|
38
|
+
function detectContentType(title) {
|
|
39
|
+
const t = title.toLowerCase();
|
|
40
|
+
let score = 0;
|
|
41
|
+
for (const k of MUSIC_KEYWORDS) {
|
|
42
|
+
if (t.includes(k))
|
|
43
|
+
score += 2;
|
|
44
|
+
}
|
|
45
|
+
for (const k of NON_MUSIC_KEYWORDS) {
|
|
46
|
+
if (t.includes(k))
|
|
47
|
+
score -= 3;
|
|
48
|
+
}
|
|
49
|
+
return score;
|
|
50
|
+
}
|
|
51
|
+
function tokenOverlap(a, b) {
|
|
52
|
+
const setA = new Set(a.split(" "));
|
|
53
|
+
const setB = new Set(b.split(" "));
|
|
54
|
+
let match = 0;
|
|
55
|
+
for (const word of setA) {
|
|
56
|
+
if (setB.has(word))
|
|
57
|
+
match++;
|
|
58
|
+
}
|
|
59
|
+
return match / Math.max(setA.size, setB.size);
|
|
60
|
+
}
|
|
61
|
+
function scoreTrack(base, candidate) {
|
|
62
|
+
const titleA = normalize(base.title);
|
|
63
|
+
const titleB = normalize(candidate.title);
|
|
64
|
+
let score = 0;
|
|
65
|
+
// ===== FUZZY =====
|
|
66
|
+
const sim = similarity(titleA, titleB); // 0 → 1
|
|
67
|
+
score += sim * 50;
|
|
68
|
+
// ===== TOKEN MATCH =====
|
|
69
|
+
score += tokenOverlap(titleA, titleB) * 30;
|
|
70
|
+
// ===== CONTENT TYPE =====
|
|
71
|
+
score += detectContentType(candidate.title);
|
|
72
|
+
return score;
|
|
73
|
+
}
|
|
7
74
|
// Plugin factory
|
|
8
75
|
class PluginManager {
|
|
9
76
|
constructor(player, manager, options) {
|
|
@@ -131,75 +198,44 @@ class PluginManager {
|
|
|
131
198
|
if (!track)
|
|
132
199
|
return [];
|
|
133
200
|
const timeoutMs = this.options.extractorTimeout ?? 15000;
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
201
|
+
const limit = 20;
|
|
202
|
+
const allPlugins = this.getAll()
|
|
203
|
+
.filter((p) => typeof p.getRelatedTracks === "function")
|
|
204
|
+
.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));
|
|
205
|
+
const history = this.player.queue.previousTracks;
|
|
206
|
+
const results = [];
|
|
207
|
+
// ===== TRY ALL PLUGINS (NOT JUST FIRST SUCCESS) =====
|
|
208
|
+
await Promise.allSettled(allPlugins.map(async (p) => {
|
|
137
209
|
try {
|
|
138
|
-
this.debug(`[RelatedTracks]
|
|
139
|
-
const related = await (0, timeout_1.withTimeout)(
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}), timeoutMs, `getRelatedTracks timed out for ${preferred.name}`);
|
|
143
|
-
if (Array.isArray(related) && related.length > 0) {
|
|
144
|
-
return related;
|
|
210
|
+
this.debug(`[RelatedTracks] Querying ${p.name}`);
|
|
211
|
+
const related = await (0, timeout_1.withTimeout)(p.getRelatedTracks(track, { limit, history }), timeoutMs, `Timeout ${p.name}`);
|
|
212
|
+
if (Array.isArray(related)) {
|
|
213
|
+
results.push(...related);
|
|
145
214
|
}
|
|
146
|
-
this.debug(`[RelatedTracks] ${preferred.name} returned no results → fallback race`);
|
|
147
215
|
}
|
|
148
216
|
catch (err) {
|
|
149
|
-
this.debug(`[RelatedTracks] ${
|
|
217
|
+
this.debug(`[RelatedTracks] ${p.name} failed`, err);
|
|
150
218
|
}
|
|
219
|
+
}));
|
|
220
|
+
if (results.length === 0) {
|
|
221
|
+
this.debug(`[RelatedTracks] No results`);
|
|
222
|
+
return [];
|
|
151
223
|
}
|
|
152
|
-
// =====
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
.
|
|
156
|
-
|
|
157
|
-
return p;
|
|
158
|
-
})
|
|
159
|
-
.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));
|
|
160
|
-
// group by priority
|
|
161
|
-
const groups = new Map();
|
|
162
|
-
for (const p of plugins) {
|
|
163
|
-
const key = p.priority ?? 0;
|
|
164
|
-
if (!groups.has(key))
|
|
165
|
-
groups.set(key, []);
|
|
166
|
-
groups.get(key).push(p);
|
|
167
|
-
}
|
|
168
|
-
for (const [priority, group] of groups) {
|
|
169
|
-
this.debug(`[RelatedTracks] Racing priority=${priority} (${group.map((p) => p.name).join(", ")})`);
|
|
170
|
-
const controller = new AbortController();
|
|
171
|
-
try {
|
|
172
|
-
const promises = group.map((p) => (async () => {
|
|
173
|
-
try {
|
|
174
|
-
const related = await (0, timeout_1.withTimeout)(p.getRelatedTracks(track, {
|
|
175
|
-
limit: 10,
|
|
176
|
-
history: this.player.queue.previousTracks,
|
|
177
|
-
}), timeoutMs, `getRelatedTracks timed out for ${p.name}`);
|
|
178
|
-
if (Array.isArray(related) && related.length > 0) {
|
|
179
|
-
this.debug(`[RelatedTracks] Success via ${p.name}`);
|
|
180
|
-
controller.abort();
|
|
181
|
-
return related;
|
|
182
|
-
}
|
|
183
|
-
throw new Error(`${p.name} returned no results`);
|
|
184
|
-
}
|
|
185
|
-
catch (err) {
|
|
186
|
-
if (controller.signal.aborted)
|
|
187
|
-
throw new Error("Aborted");
|
|
188
|
-
this.debug(`[RelatedTracks] ${p.name} failed`, err);
|
|
189
|
-
throw err;
|
|
190
|
-
}
|
|
191
|
-
})());
|
|
192
|
-
const result = await Promise.any(promises);
|
|
193
|
-
if (result)
|
|
194
|
-
return result;
|
|
195
|
-
}
|
|
196
|
-
catch {
|
|
197
|
-
this.debug(`[RelatedTracks] Priority group ${priority} all failed`);
|
|
198
|
-
controller.abort();
|
|
224
|
+
// ===== DEDUPE =====
|
|
225
|
+
const unique = new Map();
|
|
226
|
+
for (const t of results) {
|
|
227
|
+
if (!unique.has(t.url)) {
|
|
228
|
+
unique.set(t.url, t);
|
|
199
229
|
}
|
|
200
230
|
}
|
|
201
|
-
|
|
202
|
-
|
|
231
|
+
// ===== SCORE + SORT =====
|
|
232
|
+
const ranked = Array.from(unique.values())
|
|
233
|
+
.map((t) => ({ track: t, score: scoreTrack(track, t) }))
|
|
234
|
+
.sort((a, b) => b.score - a.score)
|
|
235
|
+
.slice(0, limit)
|
|
236
|
+
.map((x) => x.track);
|
|
237
|
+
this.debug(`[RelatedTracks] Final ${ranked.length} tracks`);
|
|
238
|
+
return ranked;
|
|
203
239
|
}
|
|
204
240
|
}
|
|
205
241
|
exports.PluginManager = PluginManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"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"}
|