ziplayer 0.3.5 → 0.3.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/dist/plugins/index.d.ts +6 -15
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +214 -219
- package/dist/plugins/index.js.map +1 -1
- package/dist/structures/FilterManager.d.ts +2 -0
- package/dist/structures/FilterManager.d.ts.map +1 -1
- package/dist/structures/FilterManager.js +123 -58
- package/dist/structures/FilterManager.js.map +1 -1
- package/dist/structures/Player.d.ts +7 -1
- package/dist/structures/Player.d.ts.map +1 -1
- package/dist/structures/Player.js +172 -80
- package/dist/structures/Player.js.map +1 -1
- package/dist/structures/Queue.d.ts.map +1 -1
- package/dist/structures/Queue.js +4 -0
- package/dist/structures/Queue.js.map +1 -1
- package/dist/structures/StreamManager.d.ts +7 -0
- package/dist/structures/StreamManager.d.ts.map +1 -1
- package/dist/structures/StreamManager.js +23 -0
- package/dist/structures/StreamManager.js.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
- package/src/plugins/index.ts +252 -262
- package/src/structures/FilterManager.ts +139 -62
- package/src/structures/Player.ts +192 -87
- package/src/structures/Queue.ts +5 -0
- package/src/structures/StreamManager.ts +583 -563
- package/src/types/index.ts +2 -0
package/dist/types/index.d.ts
CHANGED
|
@@ -66,6 +66,7 @@ export interface Track {
|
|
|
66
66
|
source: string;
|
|
67
67
|
metadata?: Record<string, any>;
|
|
68
68
|
isLive?: boolean;
|
|
69
|
+
author?: string;
|
|
69
70
|
}
|
|
70
71
|
/**
|
|
71
72
|
* Contains search results from plugins, including tracks and optional playlist information.
|
|
@@ -186,6 +187,7 @@ export interface PlayerOptions {
|
|
|
186
187
|
quality?: "high" | "low";
|
|
187
188
|
selfDeaf?: boolean;
|
|
188
189
|
selfMute?: boolean;
|
|
190
|
+
group?: string;
|
|
189
191
|
/**
|
|
190
192
|
* Timeout in milliseconds for plugin operations (search, streaming, etc.)
|
|
191
193
|
* to prevent long-running tasks from blocking the player.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,oBAAY,YAAY;IACvB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;CACnB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,WAAW,KAAK;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7D,UAAU,EAAE,OAAO,CAAC;CACpB;AACD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,MAAM,CAAC,EAAE;QACR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,sBAAsB,KAAK,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;AAEtH,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,eAAe,GAAG,eAAe,EAAE,GAAG,eAAe,EAAE,CAGvG;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,aAAa;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B;;;;OAIG;IACH,GAAG,CAAC,EAAE;QACL,8DAA8D;QAC9D,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,oDAAoD;QACpD,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,8CAA8C;QAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,qCAAqC;QACrC,UAAU,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;;;OAKG;IACH,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC9B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC;IACnC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE;QACT;;;WAGG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;;WAGG;QACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;KACtC,CAAC;IACF;;OAEG;IACH,SAAS,CAAC,EAAE;QACX;;;WAGG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;;WAGG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB;;;WAGG;QACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;QACtC;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;OAEG;IACH,eAAe,CAAC,EAAE;QACjB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB;;WAEG;QACH,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC;;WAEG;QACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF;;OAEG;IACH,SAAS,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB;;WAEG;QACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B;;WAEG;QACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B;;WAEG;QACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;IACF;;OAEG;IACH,qBAAqB,CAAC,EAAE;QACvB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;WAEG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB;;WAEG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,GAAG,eAAe,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,oBAAoB;IACpC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,GAAG,eAAe,EAAE,CAAC;CACtD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC3B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,aAAa;IACb,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,YAAY,EAAE,KAAK,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACrC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACF;AAED,MAAM,WAAW,WAAW;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;CAEX;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3D,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAChD,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACrE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3D,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IACtE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,2CAA2C;IAC3C,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,2CAA2C;IAC3C,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,2CAA2C;IAC3C,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1D,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;IAEjE,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7E;AACD,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzB,QAAQ,EAAE,EAAE,CAAC;IACb,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3C,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACrD,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzB,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAChC,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5B,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B,UAAU,EAAE,EAAE,CAAC;IACf,aAAa,EAAE,EAAE,CAAC;IAClB,0DAA0D;IAC1D,IAAI,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IACtD,oDAAoD;IACpD,MAAM,EAAE,EAAE,CAAC;IACX,2CAA2C;IAC3C,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,2CAA2C;IAC3C,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,2CAA2C;IAC3C,cAAc,EAAE,EAAE,CAAC;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;IAClC,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;IACjD,yDAAyD;IACzD,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5B,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7D;AAED,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwKA,4DAGC;AApKD,IAAY,YAIX;AAJD,WAAY,YAAY;IACvB,iCAAiB,CAAA;IACjB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;AACpB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB;AA6JD,SAAgB,wBAAwB,CAAC,KAA2C;IACnF,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAscD,4CAA0B;AAC1B,2CAAyB;AACzB,8CAA4B"}
|
package/package.json
CHANGED
package/src/plugins/index.ts
CHANGED
|
@@ -47,9 +47,100 @@ function normalize(str: string): string {
|
|
|
47
47
|
.trim();
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
function getContentQualityScore(track: Track): number {
|
|
51
|
+
const title = normalize(track.title);
|
|
52
|
+
|
|
53
|
+
let score = 0;
|
|
54
|
+
|
|
55
|
+
// ưu tiên nhạc official
|
|
56
|
+
for (const k of OFFICIAL_KEYWORDS) {
|
|
57
|
+
if (title.includes(k)) score += 80;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// nhạc thường
|
|
61
|
+
for (const k of MUSIC_KEYWORDS) {
|
|
62
|
+
if (title.includes(k)) score += 10;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// phạt content rác
|
|
66
|
+
for (const k of BAD_KEYWORDS) {
|
|
67
|
+
if (title.includes(k)) score -= 120;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// youtube verified / artist channel
|
|
71
|
+
const author = normalize(track?.author || track?.metadata?.author || "");
|
|
72
|
+
|
|
73
|
+
if (author.includes("vevo") || author.includes("official") || author.includes("topic")) {
|
|
74
|
+
score += 20;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// phạt video quá dài (podcast/review)
|
|
78
|
+
if (track.duration && track.duration > 15 * 60 * 1000) {
|
|
79
|
+
score -= 20;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return score;
|
|
83
|
+
}
|
|
84
|
+
function dedupeTracks(tracks: Track[]): Track[] {
|
|
85
|
+
const unique = new Map<string, Track>();
|
|
86
|
+
|
|
87
|
+
for (const track of tracks) {
|
|
88
|
+
const key = normalize(`${track.title} ${track?.author || track?.metadata?.author || ""}`);
|
|
89
|
+
|
|
90
|
+
const existing = unique.get(key);
|
|
91
|
+
|
|
92
|
+
if (!existing) {
|
|
93
|
+
unique.set(key, track);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const oldScore = getContentQualityScore(existing);
|
|
98
|
+
const newScore = getContentQualityScore(track);
|
|
99
|
+
|
|
100
|
+
if (newScore > oldScore) {
|
|
101
|
+
unique.set(key, track);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return [...unique.values()];
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// const MUSIC_KEYWORDS = ["official", "mv", "audio", "lyrics", "remix", "cover", "ft", "feat", "prod", "music video"];
|
|
51
109
|
const NON_MUSIC_KEYWORDS = ["reaction", "review", "podcast", "interview", "vlog", "live stream", "news", "tiktok"];
|
|
52
110
|
|
|
111
|
+
const OFFICIAL_KEYWORDS = ["official", "official video", "official audio", "music video", "mv", "audio", "visualizer", "lyrics"];
|
|
112
|
+
|
|
113
|
+
const MUSIC_KEYWORDS = [
|
|
114
|
+
"song",
|
|
115
|
+
"track",
|
|
116
|
+
"remix",
|
|
117
|
+
"cover",
|
|
118
|
+
"instrumental",
|
|
119
|
+
"karaoke",
|
|
120
|
+
"nightcore",
|
|
121
|
+
"sped up",
|
|
122
|
+
"slowed",
|
|
123
|
+
"feat",
|
|
124
|
+
"ft",
|
|
125
|
+
];
|
|
126
|
+
|
|
127
|
+
const BAD_KEYWORDS = [
|
|
128
|
+
"reaction",
|
|
129
|
+
"review",
|
|
130
|
+
"podcast",
|
|
131
|
+
"interview",
|
|
132
|
+
"vlog",
|
|
133
|
+
"livestream",
|
|
134
|
+
"live stream",
|
|
135
|
+
"news",
|
|
136
|
+
"analysis",
|
|
137
|
+
"commentary",
|
|
138
|
+
"tiktok",
|
|
139
|
+
"shorts",
|
|
140
|
+
"funny",
|
|
141
|
+
"meme",
|
|
142
|
+
];
|
|
143
|
+
|
|
53
144
|
function detectContentType(title: string): number {
|
|
54
145
|
const t = title.toLowerCase();
|
|
55
146
|
let score = 0;
|
|
@@ -76,6 +167,99 @@ function scoreTrack(base: Track, candidate: Track): number {
|
|
|
76
167
|
return score;
|
|
77
168
|
}
|
|
78
169
|
|
|
170
|
+
type ExtractedMediaId = {
|
|
171
|
+
platform: "youtube" | "spotify" | "soundcloud" | "unknown";
|
|
172
|
+
id: string;
|
|
173
|
+
url: string;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
export function extractMediaId(input: string): ExtractedMediaId | null {
|
|
177
|
+
try {
|
|
178
|
+
const url = new URL(input);
|
|
179
|
+
|
|
180
|
+
const host = url.hostname.replace(/^www\./, "").toLowerCase();
|
|
181
|
+
|
|
182
|
+
// =====================================================
|
|
183
|
+
// YOUTUBE
|
|
184
|
+
// =====================================================
|
|
185
|
+
if (host === "youtube.com" || host === "m.youtube.com" || host === "music.youtube.com") {
|
|
186
|
+
const videoId = url.searchParams.get("v");
|
|
187
|
+
|
|
188
|
+
if (videoId) {
|
|
189
|
+
return {
|
|
190
|
+
platform: "youtube",
|
|
191
|
+
id: videoId,
|
|
192
|
+
url: `https://www.youtube.com/watch?v=${videoId}`,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (host === "youtu.be") {
|
|
198
|
+
const id = url.pathname.slice(1);
|
|
199
|
+
|
|
200
|
+
if (id) {
|
|
201
|
+
return {
|
|
202
|
+
platform: "youtube",
|
|
203
|
+
id,
|
|
204
|
+
url: `https://www.youtube.com/watch?v=${id}`,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// =====================================================
|
|
210
|
+
// SPOTIFY
|
|
211
|
+
// =====================================================
|
|
212
|
+
if (host === "open.spotify.com") {
|
|
213
|
+
const parts = url.pathname.split("/").filter(Boolean);
|
|
214
|
+
|
|
215
|
+
// track/playlist/album/episode/show
|
|
216
|
+
if (parts.length >= 2) {
|
|
217
|
+
const [, id] = parts;
|
|
218
|
+
|
|
219
|
+
return {
|
|
220
|
+
platform: "spotify",
|
|
221
|
+
id,
|
|
222
|
+
url: `https://open.spotify.com/${parts[0]}/${id}`,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// spotify uri
|
|
228
|
+
if (input.startsWith("spotify:")) {
|
|
229
|
+
const parts = input.split(":");
|
|
230
|
+
|
|
231
|
+
if (parts.length >= 3) {
|
|
232
|
+
return {
|
|
233
|
+
platform: "spotify",
|
|
234
|
+
id: parts[2],
|
|
235
|
+
url: `https://open.spotify.com/${parts[1]}/${parts[2]}`,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// =====================================================
|
|
241
|
+
// SOUNDCLOUD
|
|
242
|
+
// =====================================================
|
|
243
|
+
if (host === "soundcloud.com") {
|
|
244
|
+
const path = url.pathname.split("/").filter(Boolean);
|
|
245
|
+
|
|
246
|
+
if (path.length >= 2) {
|
|
247
|
+
const id = `${path[0]}/${path[1]}`;
|
|
248
|
+
|
|
249
|
+
return {
|
|
250
|
+
platform: "soundcloud",
|
|
251
|
+
id,
|
|
252
|
+
url: `https://soundcloud.com/${id}`,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return null;
|
|
258
|
+
} catch {
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
79
263
|
interface SearchCacheEntry {
|
|
80
264
|
result: SearchResult;
|
|
81
265
|
timestamp: number;
|
|
@@ -219,11 +403,21 @@ export class PluginManager {
|
|
|
219
403
|
exactMatch: true,
|
|
220
404
|
};
|
|
221
405
|
}
|
|
406
|
+
const queryMedia = extractMediaId(query);
|
|
407
|
+
const trackMedia = extractMediaId(track.url || "");
|
|
222
408
|
|
|
409
|
+
if (queryMedia && trackMedia && queryMedia.platform === trackMedia.platform && queryMedia.id === trackMedia.id) {
|
|
410
|
+
return {
|
|
411
|
+
score: 100,
|
|
412
|
+
reason: `${queryMedia.platform} exact ID match`,
|
|
413
|
+
matchedBy: "url",
|
|
414
|
+
exactMatch: true,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
223
417
|
// 2. Evaluate title match exactly - 100%
|
|
224
418
|
if (normalizedTitle === normalizedQuery) {
|
|
225
419
|
return {
|
|
226
|
-
score:
|
|
420
|
+
score: 90 + getContentQualityScore(track),
|
|
227
421
|
reason: "Title matches exactly",
|
|
228
422
|
matchedBy: "title",
|
|
229
423
|
exactMatch: true,
|
|
@@ -232,11 +426,9 @@ export class PluginManager {
|
|
|
232
426
|
|
|
233
427
|
// 3. Evaluate title contains query or vice versa - 70-90%
|
|
234
428
|
if (normalizedTitle.includes(normalizedQuery) && normalizedQuery.length > 5) {
|
|
235
|
-
const ratio = normalizedQuery.length / normalizedTitle.length;
|
|
236
|
-
const score = 70 + Math.min(20, Math.floor(ratio * 20));
|
|
237
429
|
return {
|
|
238
|
-
score,
|
|
239
|
-
reason: `Title contains
|
|
430
|
+
score: 75 + getContentQualityScore(track),
|
|
431
|
+
reason: `Title contains query`,
|
|
240
432
|
matchedBy: "title",
|
|
241
433
|
exactMatch: false,
|
|
242
434
|
};
|
|
@@ -257,10 +449,12 @@ export class PluginManager {
|
|
|
257
449
|
const simScore = similarity(normalizedTitle, normalizedQuery);
|
|
258
450
|
const tokenScore = tokenOverlap(normalizedTitle, normalizedQuery);
|
|
259
451
|
const contentTypeBonus = detectContentType(track.title);
|
|
260
|
-
|
|
452
|
+
const qualityScore = getContentQualityScore(track);
|
|
261
453
|
// Tính điểm tổng hợp: similarity 60%, token overlap 30%, content type 10%
|
|
262
|
-
|
|
263
|
-
finalScore =
|
|
454
|
+
|
|
455
|
+
let finalScore = simScore * 35 + tokenScore * 25 + qualityScore * 1.5;
|
|
456
|
+
|
|
457
|
+
finalScore = Math.max(0, Math.min(100, Math.floor(finalScore)));
|
|
264
458
|
|
|
265
459
|
if (finalScore >= 20) {
|
|
266
460
|
let reason = `Similarity ${Math.floor(simScore * 100)}%`;
|
|
@@ -286,83 +480,6 @@ export class PluginManager {
|
|
|
286
480
|
};
|
|
287
481
|
}
|
|
288
482
|
|
|
289
|
-
/**
|
|
290
|
-
* Evaluate and rank all search results from a plugin
|
|
291
|
-
* @param tracks List of tracks to evaluate
|
|
292
|
-
* @param query Original query
|
|
293
|
-
* @param isPlaylistResult Whether this is a playlist result (skip per-track evaluation)
|
|
294
|
-
* @returns List of tracks with scores, sorted by score
|
|
295
|
-
*/
|
|
296
|
-
private evaluateAndRankResults(
|
|
297
|
-
tracks: Track[],
|
|
298
|
-
query: string,
|
|
299
|
-
isPlaylistResult: boolean = false,
|
|
300
|
-
): { track: Track; score: SearchScore }[] {
|
|
301
|
-
// 🔥 Nếu là playlist result, giữ nguyên tất cả tracks với điểm 100%
|
|
302
|
-
if (isPlaylistResult && tracks.length > 0) {
|
|
303
|
-
this.debug(`[Evaluation] Playlist detected - keeping all ${tracks.length} tracks`);
|
|
304
|
-
|
|
305
|
-
return tracks.map((track) => ({
|
|
306
|
-
track,
|
|
307
|
-
score: {
|
|
308
|
-
score: 100,
|
|
309
|
-
reason: "Part of playlist",
|
|
310
|
-
matchedBy: "playlist",
|
|
311
|
-
exactMatch: false,
|
|
312
|
-
},
|
|
313
|
-
}));
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
const evaluated = tracks.map((track) => ({
|
|
317
|
-
track,
|
|
318
|
-
score: this.evaluateTrackMatch(track, query),
|
|
319
|
-
}));
|
|
320
|
-
|
|
321
|
-
// Sort by score in descending order (cao xuống thấp)
|
|
322
|
-
evaluated.sort((a, b) => b.score.score - a.score.score);
|
|
323
|
-
|
|
324
|
-
// Log evaluation results
|
|
325
|
-
for (const item of evaluated.slice(0, 5)) {
|
|
326
|
-
this.debug(`[Evaluation] "${item.track.title}" -> ${item.score.score}% (${item.score.reason})`);
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
return evaluated;
|
|
330
|
-
}
|
|
331
|
-
/**
|
|
332
|
-
* Select the best result from multiple plugins
|
|
333
|
-
* @param allResults Results from various plugins
|
|
334
|
-
* @param query Original query
|
|
335
|
-
* @returns The best result
|
|
336
|
-
*/
|
|
337
|
-
private selectBestResult(allResults: Map<string, SearchResult>, query: string): SearchResult | null {
|
|
338
|
-
let bestResult: SearchResult | null = null;
|
|
339
|
-
let bestScore = -1;
|
|
340
|
-
|
|
341
|
-
for (const [source, result] of allResults) {
|
|
342
|
-
if (!result.tracks || result.tracks.length === 0) continue;
|
|
343
|
-
|
|
344
|
-
// Evaluate the first (best) track of this result
|
|
345
|
-
const bestTrackScore = this.evaluateTrackMatch(result.tracks[0], query);
|
|
346
|
-
|
|
347
|
-
if (bestTrackScore.score > bestScore) {
|
|
348
|
-
bestScore = bestTrackScore.score;
|
|
349
|
-
bestResult = {
|
|
350
|
-
...result,
|
|
351
|
-
source,
|
|
352
|
-
score: bestTrackScore,
|
|
353
|
-
};
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
this.debug(`[Selection] Plugin ${source} -> best match: ${bestTrackScore.score}%`);
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
if (bestResult && bestResult.score) {
|
|
360
|
-
this.debug(`[Selection] Selected result from ${bestResult.source} with score ${bestResult.score.score}%`);
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
return bestResult;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
483
|
/**
|
|
367
484
|
* Search with deduplication and evaluation of results
|
|
368
485
|
* @param query Search query
|
|
@@ -407,202 +524,69 @@ export class PluginManager {
|
|
|
407
524
|
|
|
408
525
|
private async searchInternal(query: string, requestedBy: string): Promise<SearchResult | null> {
|
|
409
526
|
const timeoutMs = this.options.extractorTimeout ?? 15000;
|
|
410
|
-
const minScore = this.options.searchMinScore ?? 30;
|
|
411
|
-
|
|
412
|
-
// Get all plugins that support search
|
|
413
|
-
const allSearchPlugins = this.getAll()
|
|
414
|
-
.filter((p) => typeof p.search === "function")
|
|
415
|
-
.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
416
|
-
|
|
417
|
-
if (allSearchPlugins.length === 0) {
|
|
418
|
-
this.debug(`[Search] No plugins support search`);
|
|
419
|
-
return null;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
const priorityGroups = new Map<number, BasePlugin[]>();
|
|
423
|
-
for (const plugin of allSearchPlugins) {
|
|
424
|
-
const priority = plugin.priority ?? 0;
|
|
425
|
-
if (!priorityGroups.has(priority)) {
|
|
426
|
-
priorityGroups.set(priority, []);
|
|
427
|
-
}
|
|
428
|
-
priorityGroups.get(priority)!.push(plugin);
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
const sortedPriorities = Array.from(priorityGroups.keys()).sort((a, b) => b - a);
|
|
432
|
-
|
|
433
|
-
this.debug(
|
|
434
|
-
`[Search] Priority groups: ${sortedPriorities.map((p) => `${p} (${priorityGroups.get(p)!.length} plugins)`).join(", ")}`,
|
|
435
|
-
);
|
|
436
|
-
|
|
437
|
-
const allResults = new Map<string, SearchResult>();
|
|
438
|
-
const errors: Array<{ plugin: string; error: Error }> = [];
|
|
439
|
-
|
|
440
|
-
let foundHighQualityResult = false;
|
|
441
|
-
let bestResultOverall: SearchResult | null = null;
|
|
442
|
-
let bestScoreOverall = -1;
|
|
443
527
|
|
|
444
|
-
|
|
445
|
-
for (const priority of sortedPriorities) {
|
|
446
|
-
const groupPlugins = priorityGroups.get(priority)!;
|
|
447
|
-
this.debug(`[Search] Processing priority group ${priority} with ${groupPlugins.length} plugins`);
|
|
528
|
+
const plugins = this.getAll().filter((p) => typeof p.search === "function");
|
|
448
529
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
// Process all plugins in current priority group
|
|
452
|
-
for (const plugin of groupPlugins) {
|
|
453
|
-
// Skip if we already found a high-quality result (>=90%) from previous group
|
|
454
|
-
if (foundHighQualityResult) {
|
|
455
|
-
this.debug(`[Search] Skipping plugin ${plugin.name} (priority ${priority}) - already have high-quality result`);
|
|
456
|
-
break;
|
|
457
|
-
}
|
|
530
|
+
if (!plugins.length) return null;
|
|
458
531
|
|
|
532
|
+
const settled = await Promise.allSettled(
|
|
533
|
+
plugins.map(async (plugin) => {
|
|
459
534
|
try {
|
|
460
|
-
this.debug(`[Search] Trying plugin: ${plugin.name} (priority: ${priority})`);
|
|
461
|
-
|
|
462
|
-
const startTime = Date.now();
|
|
463
535
|
const result = await withTimeout(plugin.search(query, requestedBy), timeoutMs, `Search timeout for ${plugin.name}`);
|
|
464
536
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
if (result && Array.isArray(result.tracks) && result.tracks.length > 0) {
|
|
468
|
-
// 🔥 KIỂM TRA XEM CÓ PLAYLIST HAY KHÔNG
|
|
469
|
-
const hasPlaylist = !!result.playlist;
|
|
470
|
-
const isPlaylistResult = hasPlaylist && result.tracks.length > 1;
|
|
471
|
-
|
|
472
|
-
// Evaluate and rank results from this plugin
|
|
473
|
-
const evaluatedTracks = this.evaluateAndRankResults(result.tracks, query, isPlaylistResult);
|
|
474
|
-
|
|
475
|
-
const bestScore = evaluatedTracks[0]?.score.score || 0;
|
|
476
|
-
|
|
477
|
-
// Filter tracks below minimum score (chỉ áp dụng cho non-playlist)
|
|
478
|
-
let validTracks: Track[];
|
|
479
|
-
|
|
480
|
-
if (isPlaylistResult) {
|
|
481
|
-
// 🔥 PLAYLIST: Giữ nguyên tất cả tracks, không lọc theo score
|
|
482
|
-
validTracks = evaluatedTracks.map((item) => item.track);
|
|
483
|
-
this.debug(`[Search] Plugin ${plugin.name} returned playlist with ${validTracks.length} tracks (keeping all)`);
|
|
484
|
-
} else {
|
|
485
|
-
// Single track search: filter by min score
|
|
486
|
-
validTracks = evaluatedTracks.filter((item) => item.score.score >= minScore).map((item) => item.track);
|
|
487
|
-
this.debug(
|
|
488
|
-
`[Search] Plugin ${plugin.name} returned ${validTracks.length}/${result.tracks.length} valid tracks in ${duration}ms (best: ${bestScore}%)`,
|
|
489
|
-
);
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
if (validTracks.length > 0) {
|
|
493
|
-
const pluginResult: SearchResult = {
|
|
494
|
-
tracks: validTracks,
|
|
495
|
-
playlist: result.playlist,
|
|
496
|
-
query,
|
|
497
|
-
score: evaluatedTracks[0].score,
|
|
498
|
-
source: plugin.name,
|
|
499
|
-
};
|
|
500
|
-
|
|
501
|
-
groupResults.set(plugin.name, pluginResult);
|
|
502
|
-
allResults.set(plugin.name, pluginResult);
|
|
503
|
-
|
|
504
|
-
// 🔥 Nếu là playlist hoặc kết quả chất lượng cao, dừng search
|
|
505
|
-
if (isPlaylistResult || bestScore >= 90) {
|
|
506
|
-
foundHighQualityResult = true;
|
|
507
|
-
bestResultOverall = pluginResult;
|
|
508
|
-
bestScoreOverall = bestScore;
|
|
509
|
-
this.debug(`[Search] ${isPlaylistResult ? "Playlist" : "High-quality result"} found, stopping search`);
|
|
510
|
-
break;
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
// Track best result overall
|
|
514
|
-
if (bestScore > bestScoreOverall) {
|
|
515
|
-
bestScoreOverall = bestScore;
|
|
516
|
-
bestResultOverall = pluginResult;
|
|
517
|
-
}
|
|
518
|
-
} else {
|
|
519
|
-
this.debug(
|
|
520
|
-
`[Search] Plugin ${plugin.name} returned ${result.tracks.length} tracks but none passed min score ${minScore}`,
|
|
521
|
-
);
|
|
522
|
-
}
|
|
523
|
-
} else {
|
|
524
|
-
this.debug(`[Search] Plugin ${plugin.name} returned no tracks in ${duration}ms`);
|
|
537
|
+
if (!result?.tracks?.length) {
|
|
538
|
+
return [];
|
|
525
539
|
}
|
|
526
|
-
} catch (error) {
|
|
527
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
528
|
-
this.debug(`[Search] Plugin ${plugin.name} failed:`, err.message);
|
|
529
|
-
errors.push({ plugin: plugin.name, error: err });
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
// 🔥 AFTER PROCESSING CURRENT GROUP, DECIDE WHETHER TO CONTINUE
|
|
534
|
-
if (foundHighQualityResult) {
|
|
535
|
-
this.debug(`[Search] Found high-quality result (>=90%) in priority group ${priority}, stopping search`);
|
|
536
|
-
break;
|
|
537
|
-
}
|
|
538
540
|
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
541
|
+
return result.tracks.map((track) => ({
|
|
542
|
+
...track,
|
|
543
|
+
source: plugin.name,
|
|
544
|
+
}));
|
|
545
|
+
} catch (e) {
|
|
546
|
+
this.debug(`[Search] ${plugin.name} failed`, e);
|
|
543
547
|
|
|
544
|
-
|
|
545
|
-
if (bestGroupScore >= 70) {
|
|
546
|
-
this.debug(`[Search] Priority group ${priority} has results with score ${bestGroupScore}% (>=70%), stopping search`);
|
|
547
|
-
break;
|
|
548
|
+
return [];
|
|
548
549
|
}
|
|
550
|
+
}),
|
|
551
|
+
);
|
|
549
552
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
} else {
|
|
556
|
-
this.debug(
|
|
557
|
-
`[Search] Priority group ${priority} has low quality results (${bestGroupScore}% <50%), trying lower priority groups`,
|
|
558
|
-
);
|
|
559
|
-
}
|
|
560
|
-
} else {
|
|
561
|
-
this.debug(`[Search] Priority group ${priority} produced no valid results, trying lower priority group`);
|
|
553
|
+
const allTracks: Track[] = [];
|
|
554
|
+
|
|
555
|
+
for (const result of settled) {
|
|
556
|
+
if (result.status === "fulfilled") {
|
|
557
|
+
allTracks.push(...result.value);
|
|
562
558
|
}
|
|
563
559
|
}
|
|
564
560
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
this.setCachedSearch(query, requestedBy, bestResultOverall);
|
|
561
|
+
if (!allTracks.length) {
|
|
562
|
+
return null;
|
|
563
|
+
}
|
|
569
564
|
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
this.debug(
|
|
573
|
-
`[Search] Complete - Best from ${bestResultOverall.source}: ${bestResultOverall.tracks.length} tracks (${bestResultOverall.score?.score || 0}%), Total candidates: ${allTracksCount}`,
|
|
574
|
-
);
|
|
565
|
+
// dedupe
|
|
566
|
+
const deduped = dedupeTracks(allTracks);
|
|
575
567
|
|
|
576
|
-
|
|
577
|
-
|
|
568
|
+
// score + sort
|
|
569
|
+
const ranked = deduped
|
|
570
|
+
.map((track) => ({
|
|
571
|
+
track,
|
|
572
|
+
score: this.evaluateTrackMatch(track, query),
|
|
573
|
+
}))
|
|
574
|
+
.sort((a, b) => b.score.score - a.score.score);
|
|
578
575
|
|
|
579
|
-
|
|
580
|
-
if (allResults.size === 0 && errors.length > 0) {
|
|
581
|
-
// Try to get best result from allResults even if below min score
|
|
582
|
-
let fallbackResult: SearchResult | null = null;
|
|
583
|
-
let fallbackScore = -1;
|
|
584
|
-
|
|
585
|
-
for (const [source, result] of allResults) {
|
|
586
|
-
const score = result.score?.score || 0;
|
|
587
|
-
if (score > fallbackScore) {
|
|
588
|
-
fallbackScore = score;
|
|
589
|
-
fallbackResult = result;
|
|
590
|
-
}
|
|
591
|
-
}
|
|
576
|
+
const tracks = ranked.map((x) => x.track);
|
|
592
577
|
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
578
|
+
const finalResult: SearchResult = {
|
|
579
|
+
query,
|
|
580
|
+
tracks,
|
|
581
|
+
source: "multi-search",
|
|
582
|
+
score: ranked[0]?.score,
|
|
583
|
+
};
|
|
597
584
|
|
|
598
|
-
|
|
599
|
-
const lastError = errors[errors.length - 1]?.error;
|
|
600
|
-
if (lastError) throw lastError;
|
|
601
|
-
}
|
|
585
|
+
this.setCachedSearch(query, requestedBy, finalResult);
|
|
602
586
|
|
|
603
|
-
|
|
587
|
+
this.debug(`[Search] Aggregated ${tracks.length} tracks from ${plugins.length} plugins`);
|
|
588
|
+
return finalResult;
|
|
604
589
|
}
|
|
605
|
-
|
|
606
590
|
/**
|
|
607
591
|
* Get plugin priority groups info for debugging
|
|
608
592
|
*/
|
|
@@ -660,6 +644,12 @@ export class PluginManager {
|
|
|
660
644
|
const cached = this.streamCache.get(key);
|
|
661
645
|
|
|
662
646
|
if (cached && Date.now() < cached.expiresAt) {
|
|
647
|
+
const s = cached.streamInfo?.stream;
|
|
648
|
+
if (!s || s.destroyed || (s as any).readable === false) {
|
|
649
|
+
this.debug(`[StreamCache] Dead stream detected, evicting: ${track.title}`);
|
|
650
|
+
this.streamCache.delete(key);
|
|
651
|
+
return null;
|
|
652
|
+
}
|
|
663
653
|
this.debug(`[StreamCache] Hit for track: ${track.title}`);
|
|
664
654
|
return cached.streamInfo;
|
|
665
655
|
}
|
|
@@ -746,7 +736,7 @@ export class PluginManager {
|
|
|
746
736
|
// =========================================================
|
|
747
737
|
// 1. TRY DIRECT STREAM
|
|
748
738
|
// =========================================================
|
|
749
|
-
if (plugin.
|
|
739
|
+
if (plugin?.getStream && plugin.validate?.(track.url ?? "")) {
|
|
750
740
|
try {
|
|
751
741
|
this.debug(`[Stream] ${plugin.name} trying direct stream`);
|
|
752
742
|
|