ziplayer 0.1.0 → 0.1.2
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.
|
@@ -64,6 +64,12 @@ export declare class Player extends EventEmitter {
|
|
|
64
64
|
private skipLoop;
|
|
65
65
|
private extensions;
|
|
66
66
|
private extensionContext;
|
|
67
|
+
private pluginCache;
|
|
68
|
+
private readonly PLUGIN_CACHE_TTL;
|
|
69
|
+
private pluginCacheTimestamps;
|
|
70
|
+
private searchCache;
|
|
71
|
+
private readonly SEARCH_CACHE_TTL;
|
|
72
|
+
private searchCacheTimestamps;
|
|
67
73
|
/**
|
|
68
74
|
* Attach an extension to the player
|
|
69
75
|
*
|
|
@@ -158,6 +164,79 @@ export declare class Player extends EventEmitter {
|
|
|
158
164
|
* await player.playNextTTS();
|
|
159
165
|
*/
|
|
160
166
|
private playNextTTS;
|
|
167
|
+
/**
|
|
168
|
+
* Get cached plugin or find and cache a new one
|
|
169
|
+
* @param track The track to find plugin for
|
|
170
|
+
* @returns The matching plugin or null if not found
|
|
171
|
+
*/
|
|
172
|
+
private getCachedPlugin;
|
|
173
|
+
/**
|
|
174
|
+
* Clear expired cache entries
|
|
175
|
+
*/
|
|
176
|
+
private clearExpiredCache;
|
|
177
|
+
/**
|
|
178
|
+
* Clear all plugin cache entries
|
|
179
|
+
* @example
|
|
180
|
+
* player.clearPluginCache();
|
|
181
|
+
*/
|
|
182
|
+
clearPluginCache(): void;
|
|
183
|
+
/**
|
|
184
|
+
* Get plugin cache statistics
|
|
185
|
+
* @returns Cache statistics
|
|
186
|
+
* @example
|
|
187
|
+
* const stats = player.getPluginCacheStats();
|
|
188
|
+
* console.log(`Cache size: ${stats.size}, Hit rate: ${stats.hitRate}%`);
|
|
189
|
+
*/
|
|
190
|
+
getPluginCacheStats(): {
|
|
191
|
+
size: number;
|
|
192
|
+
hitRate: number;
|
|
193
|
+
expiredEntries: number;
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Get cached search result or null if not found/expired
|
|
197
|
+
* @param query The search query
|
|
198
|
+
* @returns Cached search result or null
|
|
199
|
+
*/
|
|
200
|
+
private getCachedSearchResult;
|
|
201
|
+
/**
|
|
202
|
+
* Cache search result
|
|
203
|
+
* @param query The search query
|
|
204
|
+
* @param result The search result to cache
|
|
205
|
+
*/
|
|
206
|
+
private cacheSearchResult;
|
|
207
|
+
/**
|
|
208
|
+
* Clear expired search cache entries
|
|
209
|
+
*/
|
|
210
|
+
private clearExpiredSearchCache;
|
|
211
|
+
/**
|
|
212
|
+
* Clear all search cache entries
|
|
213
|
+
* @example
|
|
214
|
+
* player.clearSearchCache();
|
|
215
|
+
*/
|
|
216
|
+
clearSearchCache(): void;
|
|
217
|
+
/**
|
|
218
|
+
* Get search cache statistics
|
|
219
|
+
* @returns Search cache statistics
|
|
220
|
+
* @example
|
|
221
|
+
* const stats = player.getSearchCacheStats();
|
|
222
|
+
* console.log(`Search cache size: ${stats.size}, Expired: ${stats.expiredEntries}`);
|
|
223
|
+
*/
|
|
224
|
+
getSearchCacheStats(): {
|
|
225
|
+
size: number;
|
|
226
|
+
expiredEntries: number;
|
|
227
|
+
queries: string[];
|
|
228
|
+
};
|
|
229
|
+
/**
|
|
230
|
+
* Debug method to check for duplicate search calls
|
|
231
|
+
* @param query The search query to check
|
|
232
|
+
* @returns Debug information about the query
|
|
233
|
+
*/
|
|
234
|
+
debugSearchQuery(query: string): {
|
|
235
|
+
isCached: boolean;
|
|
236
|
+
cacheAge?: number;
|
|
237
|
+
pluginCount: number;
|
|
238
|
+
ttsFiltered: boolean;
|
|
239
|
+
};
|
|
161
240
|
/** Build AudioResource for a given track using the plugin pipeline */
|
|
162
241
|
private resourceFromTrack;
|
|
163
242
|
private generateWillNext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAKN,eAAe,EACf,WAAW,IAAI,kBAAkB,EAMjC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACN,KAAK,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EAER,MAAM,UAAU,CAAC;AASlB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,MAAM,CAAC,OAAO,WAAW,MAAM;IAC9B,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/F,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CAChF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,MAAO,SAAQ,YAAY;IACvC,SAAgB,OAAO,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAQ;IAC1C,WAAW,EAAE,kBAAkB,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAO;IACrB,SAAS,EAAE,OAAO,CAAS;IAC3B,QAAQ,EAAE,OAAO,CAAS;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,gBAAgB,CAAoB;
|
|
1
|
+
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"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"}
|
|
@@ -321,6 +321,14 @@ class Player extends events_1.EventEmitter {
|
|
|
321
321
|
this.volumeInterval = null;
|
|
322
322
|
this.skipLoop = false;
|
|
323
323
|
this.extensions = [];
|
|
324
|
+
// Cache for plugin matching to improve performance
|
|
325
|
+
this.pluginCache = new Map();
|
|
326
|
+
this.PLUGIN_CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
327
|
+
this.pluginCacheTimestamps = new Map();
|
|
328
|
+
// Cache for search results to avoid duplicate calls
|
|
329
|
+
this.searchCache = new Map();
|
|
330
|
+
this.SEARCH_CACHE_TTL = 2 * 60 * 1000; // 2 minutes
|
|
331
|
+
this.searchCacheTimestamps = new Map();
|
|
324
332
|
// TTS support
|
|
325
333
|
this.ttsPlayer = null;
|
|
326
334
|
this.ttsQueue = [];
|
|
@@ -494,30 +502,58 @@ class Player extends events_1.EventEmitter {
|
|
|
494
502
|
*/
|
|
495
503
|
async search(query, requestedBy) {
|
|
496
504
|
this.debug(`[Player] Search called with query: ${query}, requestedBy: ${requestedBy}`);
|
|
505
|
+
// Clear expired search cache periodically
|
|
506
|
+
if (Math.random() < 0.1) {
|
|
507
|
+
// 10% chance to clean cache
|
|
508
|
+
this.clearExpiredSearchCache();
|
|
509
|
+
}
|
|
510
|
+
// Check cache first
|
|
511
|
+
const cachedResult = this.getCachedSearchResult(query);
|
|
512
|
+
if (cachedResult) {
|
|
513
|
+
return cachedResult;
|
|
514
|
+
}
|
|
515
|
+
// Try extensions first
|
|
497
516
|
const extensionResult = await this.extensionsProvideSearch(query, requestedBy);
|
|
498
517
|
if (extensionResult && Array.isArray(extensionResult.tracks) && extensionResult.tracks.length > 0) {
|
|
499
518
|
this.debug(`[Player] Extension handled search for query: ${query}`);
|
|
519
|
+
this.cacheSearchResult(query, extensionResult);
|
|
500
520
|
return extensionResult;
|
|
501
521
|
}
|
|
502
|
-
|
|
522
|
+
// Get plugins and filter out TTS for regular searches
|
|
523
|
+
const allPlugins = this.pluginManager.getAll();
|
|
524
|
+
const plugins = allPlugins.filter((p) => {
|
|
525
|
+
// Skip TTS plugin for regular searches (unless query starts with "tts:")
|
|
526
|
+
if (p.name.toLowerCase() === "tts" && !query.toLowerCase().startsWith("tts:")) {
|
|
527
|
+
this.debug(`[Player] Skipping TTS plugin for regular search: ${query}`);
|
|
528
|
+
return false;
|
|
529
|
+
}
|
|
530
|
+
return true;
|
|
531
|
+
});
|
|
532
|
+
this.debug(`[Player] Using ${plugins.length} plugins for search (filtered from ${allPlugins.length})`);
|
|
503
533
|
let lastError = null;
|
|
534
|
+
let searchAttempts = 0;
|
|
504
535
|
for (const p of plugins) {
|
|
536
|
+
searchAttempts++;
|
|
505
537
|
try {
|
|
506
|
-
this.debug(`[Player] Trying plugin for search: ${p.name}`);
|
|
538
|
+
this.debug(`[Player] Trying plugin for search: ${p.name} (attempt ${searchAttempts}/${plugins.length})`);
|
|
539
|
+
const startTime = Date.now();
|
|
507
540
|
const res = await (0, timeout_1.withTimeout)(p.search(query, requestedBy), this.options.extractorTimeout ?? 15000, `Search operation timed out for ${p.name}`);
|
|
541
|
+
const duration = Date.now() - startTime;
|
|
508
542
|
if (res && Array.isArray(res.tracks) && res.tracks.length > 0) {
|
|
509
|
-
this.debug(`[Player] Plugin '${p.name}' returned ${res.tracks.length} tracks`);
|
|
543
|
+
this.debug(`[Player] Plugin '${p.name}' returned ${res.tracks.length} tracks in ${duration}ms`);
|
|
544
|
+
this.cacheSearchResult(query, res);
|
|
510
545
|
return res;
|
|
511
546
|
}
|
|
512
|
-
this.debug(`[Player] Plugin '${p.name}' returned no tracks`);
|
|
547
|
+
this.debug(`[Player] Plugin '${p.name}' returned no tracks in ${duration}ms`);
|
|
513
548
|
}
|
|
514
549
|
catch (error) {
|
|
550
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
551
|
+
this.debug(`[Player] Search via plugin '${p.name}' failed: ${errorMessage}`);
|
|
515
552
|
lastError = error;
|
|
516
|
-
this.debug(`[Player] Search via plugin '${p.name}' failed:`, error);
|
|
517
553
|
// Continue to next plugin
|
|
518
554
|
}
|
|
519
555
|
}
|
|
520
|
-
this.debug(`[Player] No plugins returned results for query: ${query}`);
|
|
556
|
+
this.debug(`[Player] No plugins returned results for query: ${query} (tried ${searchAttempts} plugins)`);
|
|
521
557
|
if (lastError)
|
|
522
558
|
this.emit("playerError", lastError);
|
|
523
559
|
throw new Error(`No plugin found to handle: ${query}`);
|
|
@@ -691,14 +727,8 @@ class Player extends events_1.EventEmitter {
|
|
|
691
727
|
await (0, voice_1.entersState)(ttsPlayer, voice_1.AudioPlayerStatus.Playing, 5000).catch(() => null);
|
|
692
728
|
// Derive timeout from resource/track duration when available, with a sensible cap
|
|
693
729
|
const md = resource?.metadata ?? {};
|
|
694
|
-
const declared = typeof md.duration === "number" ? md.duration
|
|
695
|
-
|
|
696
|
-
: undefined;
|
|
697
|
-
const declaredMs = declared ?
|
|
698
|
-
declared > 1000 ?
|
|
699
|
-
declared
|
|
700
|
-
: declared * 1000
|
|
701
|
-
: undefined;
|
|
730
|
+
const declared = typeof md.duration === "number" ? md.duration : typeof next?.duration === "number" ? next.duration : undefined;
|
|
731
|
+
const declaredMs = declared ? (declared > 1000 ? declared : declared * 1000) : undefined;
|
|
702
732
|
const cap = this.options?.tts?.Max_Time_TTS ?? 60000;
|
|
703
733
|
const idleTimeout = declaredMs ? Math.min(cap, Math.max(1000, declaredMs + 1500)) : cap;
|
|
704
734
|
await (0, voice_1.entersState)(ttsPlayer, voice_1.AudioPlayerStatus.Idle, idleTimeout).catch(() => null);
|
|
@@ -723,33 +753,263 @@ class Player extends events_1.EventEmitter {
|
|
|
723
753
|
}
|
|
724
754
|
}
|
|
725
755
|
}
|
|
756
|
+
/**
|
|
757
|
+
* Get cached plugin or find and cache a new one
|
|
758
|
+
* @param track The track to find plugin for
|
|
759
|
+
* @returns The matching plugin or null if not found
|
|
760
|
+
*/
|
|
761
|
+
getCachedPlugin(track) {
|
|
762
|
+
const cacheKey = `${track.source}:${track.url}`;
|
|
763
|
+
const now = Date.now();
|
|
764
|
+
// Check if cache is still valid
|
|
765
|
+
const cachedTimestamp = this.pluginCacheTimestamps.get(cacheKey);
|
|
766
|
+
if (cachedTimestamp && now - cachedTimestamp < this.PLUGIN_CACHE_TTL) {
|
|
767
|
+
const cachedPlugin = this.pluginCache.get(cacheKey);
|
|
768
|
+
if (cachedPlugin) {
|
|
769
|
+
this.debug(`[PluginCache] Using cached plugin for ${track.source}: ${cachedPlugin.name}`);
|
|
770
|
+
return cachedPlugin;
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
// Find new plugin and cache it
|
|
774
|
+
this.debug(`[PluginCache] Finding plugin for track: ${track.title} (${track.source})`);
|
|
775
|
+
const plugin = this.pluginManager.findPlugin(track.url) || this.pluginManager.get(track.source);
|
|
776
|
+
if (plugin) {
|
|
777
|
+
this.pluginCache.set(cacheKey, plugin);
|
|
778
|
+
this.pluginCacheTimestamps.set(cacheKey, now);
|
|
779
|
+
this.debug(`[PluginCache] Cached plugin: ${plugin.name} for ${track.source}`);
|
|
780
|
+
return plugin;
|
|
781
|
+
}
|
|
782
|
+
return null;
|
|
783
|
+
}
|
|
784
|
+
/**
|
|
785
|
+
* Clear expired cache entries
|
|
786
|
+
*/
|
|
787
|
+
clearExpiredCache() {
|
|
788
|
+
const now = Date.now();
|
|
789
|
+
for (const [key, timestamp] of this.pluginCacheTimestamps.entries()) {
|
|
790
|
+
if (now - timestamp >= this.PLUGIN_CACHE_TTL) {
|
|
791
|
+
this.pluginCache.delete(key);
|
|
792
|
+
this.pluginCacheTimestamps.delete(key);
|
|
793
|
+
this.debug(`[PluginCache] Cleared expired cache entry: ${key}`);
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
/**
|
|
798
|
+
* Clear all plugin cache entries
|
|
799
|
+
* @example
|
|
800
|
+
* player.clearPluginCache();
|
|
801
|
+
*/
|
|
802
|
+
clearPluginCache() {
|
|
803
|
+
const cacheSize = this.pluginCache.size;
|
|
804
|
+
this.pluginCache.clear();
|
|
805
|
+
this.pluginCacheTimestamps.clear();
|
|
806
|
+
this.debug(`[PluginCache] Cleared all ${cacheSize} cache entries`);
|
|
807
|
+
}
|
|
808
|
+
/**
|
|
809
|
+
* Get plugin cache statistics
|
|
810
|
+
* @returns Cache statistics
|
|
811
|
+
* @example
|
|
812
|
+
* const stats = player.getPluginCacheStats();
|
|
813
|
+
* console.log(`Cache size: ${stats.size}, Hit rate: ${stats.hitRate}%`);
|
|
814
|
+
*/
|
|
815
|
+
getPluginCacheStats() {
|
|
816
|
+
const now = Date.now();
|
|
817
|
+
let expiredEntries = 0;
|
|
818
|
+
for (const timestamp of this.pluginCacheTimestamps.values()) {
|
|
819
|
+
if (now - timestamp >= this.PLUGIN_CACHE_TTL) {
|
|
820
|
+
expiredEntries++;
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
return {
|
|
824
|
+
size: this.pluginCache.size,
|
|
825
|
+
hitRate: 0, // Would need to track hits/misses to calculate this
|
|
826
|
+
expiredEntries,
|
|
827
|
+
};
|
|
828
|
+
}
|
|
829
|
+
/**
|
|
830
|
+
* Get cached search result or null if not found/expired
|
|
831
|
+
* @param query The search query
|
|
832
|
+
* @returns Cached search result or null
|
|
833
|
+
*/
|
|
834
|
+
getCachedSearchResult(query) {
|
|
835
|
+
const cacheKey = query.toLowerCase().trim();
|
|
836
|
+
const now = Date.now();
|
|
837
|
+
const cachedTimestamp = this.searchCacheTimestamps.get(cacheKey);
|
|
838
|
+
if (cachedTimestamp && now - cachedTimestamp < this.SEARCH_CACHE_TTL) {
|
|
839
|
+
const cachedResult = this.searchCache.get(cacheKey);
|
|
840
|
+
if (cachedResult) {
|
|
841
|
+
this.debug(`[SearchCache] Using cached search result for: ${query}`);
|
|
842
|
+
return cachedResult;
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
return null;
|
|
846
|
+
}
|
|
847
|
+
/**
|
|
848
|
+
* Cache search result
|
|
849
|
+
* @param query The search query
|
|
850
|
+
* @param result The search result to cache
|
|
851
|
+
*/
|
|
852
|
+
cacheSearchResult(query, result) {
|
|
853
|
+
const cacheKey = query.toLowerCase().trim();
|
|
854
|
+
const now = Date.now();
|
|
855
|
+
this.searchCache.set(cacheKey, result);
|
|
856
|
+
this.searchCacheTimestamps.set(cacheKey, now);
|
|
857
|
+
this.debug(`[SearchCache] Cached search result for: ${query} (${result.tracks.length} tracks)`);
|
|
858
|
+
}
|
|
859
|
+
/**
|
|
860
|
+
* Clear expired search cache entries
|
|
861
|
+
*/
|
|
862
|
+
clearExpiredSearchCache() {
|
|
863
|
+
const now = Date.now();
|
|
864
|
+
for (const [key, timestamp] of this.searchCacheTimestamps.entries()) {
|
|
865
|
+
if (now - timestamp >= this.SEARCH_CACHE_TTL) {
|
|
866
|
+
this.searchCache.delete(key);
|
|
867
|
+
this.searchCacheTimestamps.delete(key);
|
|
868
|
+
this.debug(`[SearchCache] Cleared expired cache entry: ${key}`);
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
/**
|
|
873
|
+
* Clear all search cache entries
|
|
874
|
+
* @example
|
|
875
|
+
* player.clearSearchCache();
|
|
876
|
+
*/
|
|
877
|
+
clearSearchCache() {
|
|
878
|
+
const cacheSize = this.searchCache.size;
|
|
879
|
+
this.searchCache.clear();
|
|
880
|
+
this.searchCacheTimestamps.clear();
|
|
881
|
+
this.debug(`[SearchCache] Cleared all ${cacheSize} search cache entries`);
|
|
882
|
+
}
|
|
883
|
+
/**
|
|
884
|
+
* Get search cache statistics
|
|
885
|
+
* @returns Search cache statistics
|
|
886
|
+
* @example
|
|
887
|
+
* const stats = player.getSearchCacheStats();
|
|
888
|
+
* console.log(`Search cache size: ${stats.size}, Expired: ${stats.expiredEntries}`);
|
|
889
|
+
*/
|
|
890
|
+
getSearchCacheStats() {
|
|
891
|
+
const now = Date.now();
|
|
892
|
+
let expiredEntries = 0;
|
|
893
|
+
const queries = [];
|
|
894
|
+
for (const [key, timestamp] of this.searchCacheTimestamps.entries()) {
|
|
895
|
+
if (now - timestamp >= this.SEARCH_CACHE_TTL) {
|
|
896
|
+
expiredEntries++;
|
|
897
|
+
}
|
|
898
|
+
else {
|
|
899
|
+
queries.push(key);
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
return {
|
|
903
|
+
size: this.searchCache.size,
|
|
904
|
+
expiredEntries,
|
|
905
|
+
queries,
|
|
906
|
+
};
|
|
907
|
+
}
|
|
908
|
+
/**
|
|
909
|
+
* Debug method to check for duplicate search calls
|
|
910
|
+
* @param query The search query to check
|
|
911
|
+
* @returns Debug information about the query
|
|
912
|
+
*/
|
|
913
|
+
debugSearchQuery(query) {
|
|
914
|
+
const cacheKey = query.toLowerCase().trim();
|
|
915
|
+
const now = Date.now();
|
|
916
|
+
const cachedTimestamp = this.searchCacheTimestamps.get(cacheKey);
|
|
917
|
+
const isCached = cachedTimestamp && now - cachedTimestamp < this.SEARCH_CACHE_TTL;
|
|
918
|
+
const allPlugins = this.pluginManager.getAll();
|
|
919
|
+
const plugins = allPlugins.filter((p) => {
|
|
920
|
+
if (p.name.toLowerCase() === "tts" && !query.toLowerCase().startsWith("tts:")) {
|
|
921
|
+
return false;
|
|
922
|
+
}
|
|
923
|
+
return true;
|
|
924
|
+
});
|
|
925
|
+
return {
|
|
926
|
+
isCached: !!isCached,
|
|
927
|
+
cacheAge: cachedTimestamp ? now - cachedTimestamp : undefined,
|
|
928
|
+
pluginCount: plugins.length,
|
|
929
|
+
ttsFiltered: allPlugins.length > plugins.length,
|
|
930
|
+
};
|
|
931
|
+
}
|
|
726
932
|
/** Build AudioResource for a given track using the plugin pipeline */
|
|
727
933
|
async resourceFromTrack(track) {
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
if (
|
|
934
|
+
this.debug(`[ResourceFromTrack] Starting resource creation for track: ${track.title} (${track.source})`);
|
|
935
|
+
// Clear expired cache entries periodically
|
|
936
|
+
if (Math.random() < 0.1) {
|
|
937
|
+
// 10% chance to clean cache
|
|
938
|
+
this.clearExpiredCache();
|
|
939
|
+
}
|
|
940
|
+
// Resolve plugin using cache
|
|
941
|
+
const plugin = this.getCachedPlugin(track);
|
|
942
|
+
if (!plugin) {
|
|
943
|
+
this.debug(`[ResourceFromTrack] No plugin found for track: ${track.title} (${track.source})`);
|
|
731
944
|
throw new Error(`No plugin found for track: ${track.title}`);
|
|
732
|
-
|
|
945
|
+
}
|
|
946
|
+
this.debug(`[ResourceFromTrack] Using plugin: ${plugin.name} for track: ${track.title}`);
|
|
947
|
+
let streamInfo = null;
|
|
948
|
+
const timeoutMs = this.options.extractorTimeout ?? 15000;
|
|
733
949
|
try {
|
|
734
|
-
|
|
950
|
+
this.debug(`[ResourceFromTrack] Attempting getStream with ${plugin.name}, timeout: ${timeoutMs}ms`);
|
|
951
|
+
const startTime = Date.now();
|
|
952
|
+
streamInfo = await (0, timeout_1.withTimeout)(plugin.getStream(track), timeoutMs, "getStream timed out");
|
|
953
|
+
const duration = Date.now() - startTime;
|
|
954
|
+
this.debug(`[ResourceFromTrack] getStream successful with ${plugin.name} in ${duration}ms`);
|
|
955
|
+
if (!streamInfo?.stream) {
|
|
956
|
+
this.debug(`[ResourceFromTrack] getStream returned no stream from ${plugin.name}`);
|
|
957
|
+
throw new Error(`No stream returned from ${plugin.name}`);
|
|
958
|
+
}
|
|
735
959
|
}
|
|
736
960
|
catch (streamError) {
|
|
961
|
+
const errorMessage = streamError instanceof Error ? streamError.message : String(streamError);
|
|
962
|
+
this.debug(`[ResourceFromTrack] getStream failed with ${plugin.name}: ${errorMessage}`);
|
|
963
|
+
// Log more details for debugging
|
|
964
|
+
if (streamError instanceof Error && streamError.stack) {
|
|
965
|
+
this.debug(`[ResourceFromTrack] getStream error stack:`, streamError.stack);
|
|
966
|
+
}
|
|
737
967
|
// try fallbacks
|
|
968
|
+
this.debug(`[ResourceFromTrack] Attempting fallback plugins for track: ${track.title}`);
|
|
738
969
|
const allplugs = this.pluginManager.getAll();
|
|
970
|
+
let fallbackAttempts = 0;
|
|
739
971
|
for (const p of allplugs) {
|
|
740
|
-
if (typeof p.getFallback !== "function")
|
|
972
|
+
if (typeof p.getFallback !== "function" && typeof p.getStream !== "function") {
|
|
973
|
+
this.debug(`[ResourceFromTrack] Skipping plugin ${p.name} - no getFallback or getStream method`);
|
|
741
974
|
continue;
|
|
975
|
+
}
|
|
976
|
+
fallbackAttempts++;
|
|
977
|
+
this.debug(`[ResourceFromTrack] Trying fallback plugin ${p.name} (attempt ${fallbackAttempts})`);
|
|
742
978
|
try {
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
979
|
+
// Try getStream first
|
|
980
|
+
const startTime = Date.now();
|
|
981
|
+
streamInfo = await (0, timeout_1.withTimeout)(p.getStream(track), timeoutMs, "getStream timed out");
|
|
982
|
+
const duration = Date.now() - startTime;
|
|
983
|
+
if (streamInfo?.stream) {
|
|
984
|
+
this.debug(`[ResourceFromTrack] Fallback getStream successful with ${p.name} in ${duration}ms`);
|
|
985
|
+
break;
|
|
986
|
+
}
|
|
987
|
+
// Try getFallback if getStream didn't work
|
|
988
|
+
this.debug(`[ResourceFromTrack] Trying getFallback with ${p.name}`);
|
|
989
|
+
const fallbackStartTime = Date.now();
|
|
990
|
+
streamInfo = await (0, timeout_1.withTimeout)(p.getFallback(track), timeoutMs, `getFallback timed out for plugin ${p.name}`);
|
|
991
|
+
const fallbackDuration = Date.now() - fallbackStartTime;
|
|
992
|
+
if (streamInfo?.stream) {
|
|
993
|
+
this.debug(`[ResourceFromTrack] Fallback getFallback successful with ${p.name} in ${fallbackDuration}ms`);
|
|
994
|
+
break;
|
|
995
|
+
}
|
|
996
|
+
this.debug(`[ResourceFromTrack] Fallback plugin ${p.name} returned no stream`);
|
|
997
|
+
}
|
|
998
|
+
catch (fallbackError) {
|
|
999
|
+
const errorMessage = fallbackError instanceof Error ? fallbackError.message : String(fallbackError);
|
|
1000
|
+
this.debug(`[ResourceFromTrack] Fallback plugin ${p.name} failed: ${errorMessage}`);
|
|
1001
|
+
// Log more details for debugging
|
|
1002
|
+
if (fallbackError instanceof Error && fallbackError.stack) {
|
|
1003
|
+
this.debug(`[ResourceFromTrack] Fallback error stack:`, fallbackError.stack);
|
|
1004
|
+
}
|
|
747
1005
|
}
|
|
748
|
-
catch { }
|
|
749
1006
|
}
|
|
750
|
-
if (!streamInfo?.stream)
|
|
1007
|
+
if (!streamInfo?.stream) {
|
|
1008
|
+
this.debug(`[ResourceFromTrack] All ${fallbackAttempts} fallback attempts failed for track: ${track.title}`);
|
|
751
1009
|
throw new Error(`All getFallback attempts failed for track: ${track.title}`);
|
|
1010
|
+
}
|
|
752
1011
|
}
|
|
1012
|
+
this.debug(`[ResourceFromTrack] Stream obtained, type: ${streamInfo.type}, metadata keys: ${Object.keys(streamInfo.metadata || {}).join(", ")}`);
|
|
753
1013
|
const mapToStreamType = (type) => {
|
|
754
1014
|
switch (type) {
|
|
755
1015
|
case "webm/opus":
|
|
@@ -762,15 +1022,20 @@ class Player extends events_1.EventEmitter {
|
|
|
762
1022
|
}
|
|
763
1023
|
};
|
|
764
1024
|
const inputType = mapToStreamType(streamInfo.type);
|
|
765
|
-
|
|
1025
|
+
this.debug(`[ResourceFromTrack] Creating AudioResource with inputType: ${inputType}`);
|
|
1026
|
+
// Merge metadata safely
|
|
1027
|
+
const mergedMetadata = {
|
|
1028
|
+
...track,
|
|
1029
|
+
...(streamInfo.metadata || {}),
|
|
1030
|
+
};
|
|
1031
|
+
const audioResource = (0, voice_1.createAudioResource)(streamInfo.stream, {
|
|
766
1032
|
// Prefer plugin-provided metadata (e.g., precise duration), fallback to track fields
|
|
767
|
-
metadata:
|
|
768
|
-
...track,
|
|
769
|
-
...(streamInfo?.metadata || {}),
|
|
770
|
-
},
|
|
1033
|
+
metadata: mergedMetadata,
|
|
771
1034
|
inputType,
|
|
772
1035
|
inlineVolume: true,
|
|
773
1036
|
});
|
|
1037
|
+
this.debug(`[ResourceFromTrack] AudioResource created successfully for track: ${track.title}`);
|
|
1038
|
+
return audioResource;
|
|
774
1039
|
}
|
|
775
1040
|
async generateWillNext() {
|
|
776
1041
|
const lastTrack = this.queue.previousTracks[this.queue.previousTracks.length - 1] ?? this.queue.currentTrack;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Player.js","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Player.js","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/structures/Player.ts
CHANGED
|
@@ -98,6 +98,16 @@ export class Player extends EventEmitter {
|
|
|
98
98
|
private extensions: BaseExtension[] = [];
|
|
99
99
|
private extensionContext!: ExtensionContext;
|
|
100
100
|
|
|
101
|
+
// Cache for plugin matching to improve performance
|
|
102
|
+
private pluginCache = new Map<string, SourcePlugin>();
|
|
103
|
+
private readonly PLUGIN_CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
104
|
+
private pluginCacheTimestamps = new Map<string, number>();
|
|
105
|
+
|
|
106
|
+
// Cache for search results to avoid duplicate calls
|
|
107
|
+
private searchCache = new Map<string, SearchResult>();
|
|
108
|
+
private readonly SEARCH_CACHE_TTL = 2 * 60 * 1000; // 2 minutes
|
|
109
|
+
private searchCacheTimestamps = new Map<string, number>();
|
|
110
|
+
|
|
101
111
|
/**
|
|
102
112
|
* Attach an extension to the player
|
|
103
113
|
*
|
|
@@ -554,35 +564,70 @@ export class Player extends EventEmitter {
|
|
|
554
564
|
*/
|
|
555
565
|
async search(query: string, requestedBy: string): Promise<SearchResult> {
|
|
556
566
|
this.debug(`[Player] Search called with query: ${query}, requestedBy: ${requestedBy}`);
|
|
567
|
+
|
|
568
|
+
// Clear expired search cache periodically
|
|
569
|
+
if (Math.random() < 0.1) {
|
|
570
|
+
// 10% chance to clean cache
|
|
571
|
+
this.clearExpiredSearchCache();
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
// Check cache first
|
|
575
|
+
const cachedResult = this.getCachedSearchResult(query);
|
|
576
|
+
if (cachedResult) {
|
|
577
|
+
return cachedResult;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
// Try extensions first
|
|
557
581
|
const extensionResult = await this.extensionsProvideSearch(query, requestedBy);
|
|
558
582
|
if (extensionResult && Array.isArray(extensionResult.tracks) && extensionResult.tracks.length > 0) {
|
|
559
583
|
this.debug(`[Player] Extension handled search for query: ${query}`);
|
|
584
|
+
this.cacheSearchResult(query, extensionResult);
|
|
560
585
|
return extensionResult;
|
|
561
586
|
}
|
|
562
|
-
|
|
587
|
+
|
|
588
|
+
// Get plugins and filter out TTS for regular searches
|
|
589
|
+
const allPlugins = this.pluginManager.getAll();
|
|
590
|
+
const plugins = allPlugins.filter((p) => {
|
|
591
|
+
// Skip TTS plugin for regular searches (unless query starts with "tts:")
|
|
592
|
+
if (p.name.toLowerCase() === "tts" && !query.toLowerCase().startsWith("tts:")) {
|
|
593
|
+
this.debug(`[Player] Skipping TTS plugin for regular search: ${query}`);
|
|
594
|
+
return false;
|
|
595
|
+
}
|
|
596
|
+
return true;
|
|
597
|
+
});
|
|
598
|
+
|
|
599
|
+
this.debug(`[Player] Using ${plugins.length} plugins for search (filtered from ${allPlugins.length})`);
|
|
600
|
+
|
|
563
601
|
let lastError: any = null;
|
|
602
|
+
let searchAttempts = 0;
|
|
564
603
|
|
|
565
604
|
for (const p of plugins) {
|
|
605
|
+
searchAttempts++;
|
|
566
606
|
try {
|
|
567
|
-
this.debug(`[Player] Trying plugin for search: ${p.name}`);
|
|
607
|
+
this.debug(`[Player] Trying plugin for search: ${p.name} (attempt ${searchAttempts}/${plugins.length})`);
|
|
608
|
+
const startTime = Date.now();
|
|
568
609
|
const res = await withTimeout(
|
|
569
610
|
p.search(query, requestedBy),
|
|
570
611
|
this.options.extractorTimeout ?? 15000,
|
|
571
612
|
`Search operation timed out for ${p.name}`,
|
|
572
613
|
);
|
|
614
|
+
const duration = Date.now() - startTime;
|
|
615
|
+
|
|
573
616
|
if (res && Array.isArray(res.tracks) && res.tracks.length > 0) {
|
|
574
|
-
this.debug(`[Player] Plugin '${p.name}' returned ${res.tracks.length} tracks`);
|
|
617
|
+
this.debug(`[Player] Plugin '${p.name}' returned ${res.tracks.length} tracks in ${duration}ms`);
|
|
618
|
+
this.cacheSearchResult(query, res);
|
|
575
619
|
return res;
|
|
576
620
|
}
|
|
577
|
-
this.debug(`[Player] Plugin '${p.name}' returned no tracks`);
|
|
621
|
+
this.debug(`[Player] Plugin '${p.name}' returned no tracks in ${duration}ms`);
|
|
578
622
|
} catch (error) {
|
|
623
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
624
|
+
this.debug(`[Player] Search via plugin '${p.name}' failed: ${errorMessage}`);
|
|
579
625
|
lastError = error;
|
|
580
|
-
this.debug(`[Player] Search via plugin '${p.name}' failed:`, error);
|
|
581
626
|
// Continue to next plugin
|
|
582
627
|
}
|
|
583
628
|
}
|
|
584
629
|
|
|
585
|
-
this.debug(`[Player] No plugins returned results for query: ${query}`);
|
|
630
|
+
this.debug(`[Player] No plugins returned results for query: ${query} (tried ${searchAttempts} plugins)`);
|
|
586
631
|
if (lastError) this.emit("playerError", lastError as Error);
|
|
587
632
|
throw new Error(`No plugin found to handle: ${query}`);
|
|
588
633
|
}
|
|
@@ -772,15 +817,8 @@ export class Player extends EventEmitter {
|
|
|
772
817
|
// Derive timeout from resource/track duration when available, with a sensible cap
|
|
773
818
|
const md: any = (resource as any)?.metadata ?? {};
|
|
774
819
|
const declared =
|
|
775
|
-
typeof md.duration === "number" ? md.duration
|
|
776
|
-
|
|
777
|
-
: undefined;
|
|
778
|
-
const declaredMs =
|
|
779
|
-
declared ?
|
|
780
|
-
declared > 1000 ?
|
|
781
|
-
declared
|
|
782
|
-
: declared * 1000
|
|
783
|
-
: undefined;
|
|
820
|
+
typeof md.duration === "number" ? md.duration : typeof next?.duration === "number" ? next.duration : undefined;
|
|
821
|
+
const declaredMs = declared ? (declared > 1000 ? declared : declared * 1000) : undefined;
|
|
784
822
|
const cap = this.options?.tts?.Max_Time_TTS ?? 60_000;
|
|
785
823
|
const idleTimeout = declaredMs ? Math.min(cap, Math.max(1_000, declaredMs + 1_500)) : cap;
|
|
786
824
|
await entersState(ttsPlayer, AudioPlayerStatus.Idle, idleTimeout).catch(() => null);
|
|
@@ -804,33 +842,315 @@ export class Player extends EventEmitter {
|
|
|
804
842
|
}
|
|
805
843
|
}
|
|
806
844
|
|
|
845
|
+
/**
|
|
846
|
+
* Get cached plugin or find and cache a new one
|
|
847
|
+
* @param track The track to find plugin for
|
|
848
|
+
* @returns The matching plugin or null if not found
|
|
849
|
+
*/
|
|
850
|
+
private getCachedPlugin(track: Track): SourcePlugin | null {
|
|
851
|
+
const cacheKey = `${track.source}:${track.url}`;
|
|
852
|
+
const now = Date.now();
|
|
853
|
+
|
|
854
|
+
// Check if cache is still valid
|
|
855
|
+
const cachedTimestamp = this.pluginCacheTimestamps.get(cacheKey);
|
|
856
|
+
if (cachedTimestamp && now - cachedTimestamp < this.PLUGIN_CACHE_TTL) {
|
|
857
|
+
const cachedPlugin = this.pluginCache.get(cacheKey);
|
|
858
|
+
if (cachedPlugin) {
|
|
859
|
+
this.debug(`[PluginCache] Using cached plugin for ${track.source}: ${cachedPlugin.name}`);
|
|
860
|
+
return cachedPlugin;
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
// Find new plugin and cache it
|
|
865
|
+
this.debug(`[PluginCache] Finding plugin for track: ${track.title} (${track.source})`);
|
|
866
|
+
const plugin = this.pluginManager.findPlugin(track.url) || this.pluginManager.get(track.source);
|
|
867
|
+
|
|
868
|
+
if (plugin) {
|
|
869
|
+
this.pluginCache.set(cacheKey, plugin);
|
|
870
|
+
this.pluginCacheTimestamps.set(cacheKey, now);
|
|
871
|
+
this.debug(`[PluginCache] Cached plugin: ${plugin.name} for ${track.source}`);
|
|
872
|
+
return plugin;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
return null;
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
/**
|
|
879
|
+
* Clear expired cache entries
|
|
880
|
+
*/
|
|
881
|
+
private clearExpiredCache(): void {
|
|
882
|
+
const now = Date.now();
|
|
883
|
+
for (const [key, timestamp] of this.pluginCacheTimestamps.entries()) {
|
|
884
|
+
if (now - timestamp >= this.PLUGIN_CACHE_TTL) {
|
|
885
|
+
this.pluginCache.delete(key);
|
|
886
|
+
this.pluginCacheTimestamps.delete(key);
|
|
887
|
+
this.debug(`[PluginCache] Cleared expired cache entry: ${key}`);
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
/**
|
|
893
|
+
* Clear all plugin cache entries
|
|
894
|
+
* @example
|
|
895
|
+
* player.clearPluginCache();
|
|
896
|
+
*/
|
|
897
|
+
public clearPluginCache(): void {
|
|
898
|
+
const cacheSize = this.pluginCache.size;
|
|
899
|
+
this.pluginCache.clear();
|
|
900
|
+
this.pluginCacheTimestamps.clear();
|
|
901
|
+
this.debug(`[PluginCache] Cleared all ${cacheSize} cache entries`);
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
/**
|
|
905
|
+
* Get plugin cache statistics
|
|
906
|
+
* @returns Cache statistics
|
|
907
|
+
* @example
|
|
908
|
+
* const stats = player.getPluginCacheStats();
|
|
909
|
+
* console.log(`Cache size: ${stats.size}, Hit rate: ${stats.hitRate}%`);
|
|
910
|
+
*/
|
|
911
|
+
public getPluginCacheStats(): { size: number; hitRate: number; expiredEntries: number } {
|
|
912
|
+
const now = Date.now();
|
|
913
|
+
let expiredEntries = 0;
|
|
914
|
+
|
|
915
|
+
for (const timestamp of this.pluginCacheTimestamps.values()) {
|
|
916
|
+
if (now - timestamp >= this.PLUGIN_CACHE_TTL) {
|
|
917
|
+
expiredEntries++;
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
return {
|
|
922
|
+
size: this.pluginCache.size,
|
|
923
|
+
hitRate: 0, // Would need to track hits/misses to calculate this
|
|
924
|
+
expiredEntries,
|
|
925
|
+
};
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
/**
|
|
929
|
+
* Get cached search result or null if not found/expired
|
|
930
|
+
* @param query The search query
|
|
931
|
+
* @returns Cached search result or null
|
|
932
|
+
*/
|
|
933
|
+
private getCachedSearchResult(query: string): SearchResult | null {
|
|
934
|
+
const cacheKey = query.toLowerCase().trim();
|
|
935
|
+
const now = Date.now();
|
|
936
|
+
|
|
937
|
+
const cachedTimestamp = this.searchCacheTimestamps.get(cacheKey);
|
|
938
|
+
if (cachedTimestamp && now - cachedTimestamp < this.SEARCH_CACHE_TTL) {
|
|
939
|
+
const cachedResult = this.searchCache.get(cacheKey);
|
|
940
|
+
if (cachedResult) {
|
|
941
|
+
this.debug(`[SearchCache] Using cached search result for: ${query}`);
|
|
942
|
+
return cachedResult;
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
return null;
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
/**
|
|
950
|
+
* Cache search result
|
|
951
|
+
* @param query The search query
|
|
952
|
+
* @param result The search result to cache
|
|
953
|
+
*/
|
|
954
|
+
private cacheSearchResult(query: string, result: SearchResult): void {
|
|
955
|
+
const cacheKey = query.toLowerCase().trim();
|
|
956
|
+
const now = Date.now();
|
|
957
|
+
|
|
958
|
+
this.searchCache.set(cacheKey, result);
|
|
959
|
+
this.searchCacheTimestamps.set(cacheKey, now);
|
|
960
|
+
this.debug(`[SearchCache] Cached search result for: ${query} (${result.tracks.length} tracks)`);
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
/**
|
|
964
|
+
* Clear expired search cache entries
|
|
965
|
+
*/
|
|
966
|
+
private clearExpiredSearchCache(): void {
|
|
967
|
+
const now = Date.now();
|
|
968
|
+
for (const [key, timestamp] of this.searchCacheTimestamps.entries()) {
|
|
969
|
+
if (now - timestamp >= this.SEARCH_CACHE_TTL) {
|
|
970
|
+
this.searchCache.delete(key);
|
|
971
|
+
this.searchCacheTimestamps.delete(key);
|
|
972
|
+
this.debug(`[SearchCache] Cleared expired cache entry: ${key}`);
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
/**
|
|
978
|
+
* Clear all search cache entries
|
|
979
|
+
* @example
|
|
980
|
+
* player.clearSearchCache();
|
|
981
|
+
*/
|
|
982
|
+
public clearSearchCache(): void {
|
|
983
|
+
const cacheSize = this.searchCache.size;
|
|
984
|
+
this.searchCache.clear();
|
|
985
|
+
this.searchCacheTimestamps.clear();
|
|
986
|
+
this.debug(`[SearchCache] Cleared all ${cacheSize} search cache entries`);
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
/**
|
|
990
|
+
* Get search cache statistics
|
|
991
|
+
* @returns Search cache statistics
|
|
992
|
+
* @example
|
|
993
|
+
* const stats = player.getSearchCacheStats();
|
|
994
|
+
* console.log(`Search cache size: ${stats.size}, Expired: ${stats.expiredEntries}`);
|
|
995
|
+
*/
|
|
996
|
+
public getSearchCacheStats(): { size: number; expiredEntries: number; queries: string[] } {
|
|
997
|
+
const now = Date.now();
|
|
998
|
+
let expiredEntries = 0;
|
|
999
|
+
const queries: string[] = [];
|
|
1000
|
+
|
|
1001
|
+
for (const [key, timestamp] of this.searchCacheTimestamps.entries()) {
|
|
1002
|
+
if (now - timestamp >= this.SEARCH_CACHE_TTL) {
|
|
1003
|
+
expiredEntries++;
|
|
1004
|
+
} else {
|
|
1005
|
+
queries.push(key);
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
return {
|
|
1010
|
+
size: this.searchCache.size,
|
|
1011
|
+
expiredEntries,
|
|
1012
|
+
queries,
|
|
1013
|
+
};
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
/**
|
|
1017
|
+
* Debug method to check for duplicate search calls
|
|
1018
|
+
* @param query The search query to check
|
|
1019
|
+
* @returns Debug information about the query
|
|
1020
|
+
*/
|
|
1021
|
+
public debugSearchQuery(query: string): {
|
|
1022
|
+
isCached: boolean;
|
|
1023
|
+
cacheAge?: number;
|
|
1024
|
+
pluginCount: number;
|
|
1025
|
+
ttsFiltered: boolean;
|
|
1026
|
+
} {
|
|
1027
|
+
const cacheKey = query.toLowerCase().trim();
|
|
1028
|
+
const now = Date.now();
|
|
1029
|
+
const cachedTimestamp = this.searchCacheTimestamps.get(cacheKey);
|
|
1030
|
+
const isCached = cachedTimestamp && now - cachedTimestamp < this.SEARCH_CACHE_TTL;
|
|
1031
|
+
|
|
1032
|
+
const allPlugins = this.pluginManager.getAll();
|
|
1033
|
+
const plugins = allPlugins.filter((p) => {
|
|
1034
|
+
if (p.name.toLowerCase() === "tts" && !query.toLowerCase().startsWith("tts:")) {
|
|
1035
|
+
return false;
|
|
1036
|
+
}
|
|
1037
|
+
return true;
|
|
1038
|
+
});
|
|
1039
|
+
|
|
1040
|
+
return {
|
|
1041
|
+
isCached: !!isCached,
|
|
1042
|
+
cacheAge: cachedTimestamp ? now - cachedTimestamp : undefined,
|
|
1043
|
+
pluginCount: plugins.length,
|
|
1044
|
+
ttsFiltered: allPlugins.length > plugins.length,
|
|
1045
|
+
};
|
|
1046
|
+
}
|
|
1047
|
+
|
|
807
1048
|
/** Build AudioResource for a given track using the plugin pipeline */
|
|
808
1049
|
private async resourceFromTrack(track: Track): Promise<AudioResource> {
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
1050
|
+
this.debug(`[ResourceFromTrack] Starting resource creation for track: ${track.title} (${track.source})`);
|
|
1051
|
+
|
|
1052
|
+
// Clear expired cache entries periodically
|
|
1053
|
+
if (Math.random() < 0.1) {
|
|
1054
|
+
// 10% chance to clean cache
|
|
1055
|
+
this.clearExpiredCache();
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
// Resolve plugin using cache
|
|
1059
|
+
const plugin = this.getCachedPlugin(track);
|
|
1060
|
+
if (!plugin) {
|
|
1061
|
+
this.debug(`[ResourceFromTrack] No plugin found for track: ${track.title} (${track.source})`);
|
|
1062
|
+
throw new Error(`No plugin found for track: ${track.title}`);
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
this.debug(`[ResourceFromTrack] Using plugin: ${plugin.name} for track: ${track.title}`);
|
|
1066
|
+
|
|
1067
|
+
let streamInfo: StreamInfo | null = null;
|
|
1068
|
+
const timeoutMs = this.options.extractorTimeout ?? 15000;
|
|
812
1069
|
|
|
813
|
-
let streamInfo: any;
|
|
814
1070
|
try {
|
|
815
|
-
|
|
1071
|
+
this.debug(`[ResourceFromTrack] Attempting getStream with ${plugin.name}, timeout: ${timeoutMs}ms`);
|
|
1072
|
+
const startTime = Date.now();
|
|
1073
|
+
streamInfo = await withTimeout(plugin.getStream(track), timeoutMs, "getStream timed out");
|
|
1074
|
+
const duration = Date.now() - startTime;
|
|
1075
|
+
this.debug(`[ResourceFromTrack] getStream successful with ${plugin.name} in ${duration}ms`);
|
|
1076
|
+
|
|
1077
|
+
if (!streamInfo?.stream) {
|
|
1078
|
+
this.debug(`[ResourceFromTrack] getStream returned no stream from ${plugin.name}`);
|
|
1079
|
+
throw new Error(`No stream returned from ${plugin.name}`);
|
|
1080
|
+
}
|
|
816
1081
|
} catch (streamError) {
|
|
1082
|
+
const errorMessage = streamError instanceof Error ? streamError.message : String(streamError);
|
|
1083
|
+
this.debug(`[ResourceFromTrack] getStream failed with ${plugin.name}: ${errorMessage}`);
|
|
1084
|
+
|
|
1085
|
+
// Log more details for debugging
|
|
1086
|
+
if (streamError instanceof Error && streamError.stack) {
|
|
1087
|
+
this.debug(`[ResourceFromTrack] getStream error stack:`, streamError.stack);
|
|
1088
|
+
}
|
|
1089
|
+
|
|
817
1090
|
// try fallbacks
|
|
1091
|
+
this.debug(`[ResourceFromTrack] Attempting fallback plugins for track: ${track.title}`);
|
|
818
1092
|
const allplugs = this.pluginManager.getAll();
|
|
1093
|
+
let fallbackAttempts = 0;
|
|
1094
|
+
|
|
819
1095
|
for (const p of allplugs) {
|
|
820
|
-
if (typeof (p as any).getFallback !== "function")
|
|
1096
|
+
if (typeof (p as any).getFallback !== "function" && typeof (p as any).getStream !== "function") {
|
|
1097
|
+
this.debug(`[ResourceFromTrack] Skipping plugin ${(p as any).name} - no getFallback or getStream method`);
|
|
1098
|
+
continue;
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
fallbackAttempts++;
|
|
1102
|
+
this.debug(`[ResourceFromTrack] Trying fallback plugin ${(p as any).name} (attempt ${fallbackAttempts})`);
|
|
1103
|
+
|
|
821
1104
|
try {
|
|
1105
|
+
// Try getStream first
|
|
1106
|
+
const startTime = Date.now();
|
|
1107
|
+
streamInfo = await withTimeout(p.getStream(track), timeoutMs, "getStream timed out");
|
|
1108
|
+
const duration = Date.now() - startTime;
|
|
1109
|
+
|
|
1110
|
+
if (streamInfo?.stream) {
|
|
1111
|
+
this.debug(`[ResourceFromTrack] Fallback getStream successful with ${(p as any).name} in ${duration}ms`);
|
|
1112
|
+
break;
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
// Try getFallback if getStream didn't work
|
|
1116
|
+
this.debug(`[ResourceFromTrack] Trying getFallback with ${(p as any).name}`);
|
|
1117
|
+
const fallbackStartTime = Date.now();
|
|
822
1118
|
streamInfo = await withTimeout(
|
|
823
1119
|
(p as any).getFallback(track),
|
|
824
|
-
|
|
1120
|
+
timeoutMs,
|
|
825
1121
|
`getFallback timed out for plugin ${(p as any).name}`,
|
|
826
1122
|
);
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
1123
|
+
const fallbackDuration = Date.now() - fallbackStartTime;
|
|
1124
|
+
|
|
1125
|
+
if (streamInfo?.stream) {
|
|
1126
|
+
this.debug(`[ResourceFromTrack] Fallback getFallback successful with ${(p as any).name} in ${fallbackDuration}ms`);
|
|
1127
|
+
break;
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
this.debug(`[ResourceFromTrack] Fallback plugin ${(p as any).name} returned no stream`);
|
|
1131
|
+
} catch (fallbackError) {
|
|
1132
|
+
const errorMessage = fallbackError instanceof Error ? fallbackError.message : String(fallbackError);
|
|
1133
|
+
this.debug(`[ResourceFromTrack] Fallback plugin ${(p as any).name} failed: ${errorMessage}`);
|
|
1134
|
+
|
|
1135
|
+
// Log more details for debugging
|
|
1136
|
+
if (fallbackError instanceof Error && fallbackError.stack) {
|
|
1137
|
+
this.debug(`[ResourceFromTrack] Fallback error stack:`, fallbackError.stack);
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
if (!streamInfo?.stream) {
|
|
1143
|
+
this.debug(`[ResourceFromTrack] All ${fallbackAttempts} fallback attempts failed for track: ${track.title}`);
|
|
1144
|
+
throw new Error(`All getFallback attempts failed for track: ${track.title}`);
|
|
830
1145
|
}
|
|
831
|
-
if (!streamInfo?.stream) throw new Error(`All getFallback attempts failed for track: ${track.title}`);
|
|
832
1146
|
}
|
|
833
1147
|
|
|
1148
|
+
this.debug(
|
|
1149
|
+
`[ResourceFromTrack] Stream obtained, type: ${streamInfo.type}, metadata keys: ${Object.keys(
|
|
1150
|
+
streamInfo.metadata || {},
|
|
1151
|
+
).join(", ")}`,
|
|
1152
|
+
);
|
|
1153
|
+
|
|
834
1154
|
const mapToStreamType = (type: string): StreamType => {
|
|
835
1155
|
switch (type) {
|
|
836
1156
|
case "webm/opus":
|
|
@@ -844,15 +1164,23 @@ export class Player extends EventEmitter {
|
|
|
844
1164
|
};
|
|
845
1165
|
|
|
846
1166
|
const inputType = mapToStreamType(streamInfo.type);
|
|
847
|
-
|
|
1167
|
+
this.debug(`[ResourceFromTrack] Creating AudioResource with inputType: ${inputType}`);
|
|
1168
|
+
|
|
1169
|
+
// Merge metadata safely
|
|
1170
|
+
const mergedMetadata = {
|
|
1171
|
+
...track,
|
|
1172
|
+
...(streamInfo.metadata || {}),
|
|
1173
|
+
};
|
|
1174
|
+
|
|
1175
|
+
const audioResource = createAudioResource(streamInfo.stream, {
|
|
848
1176
|
// Prefer plugin-provided metadata (e.g., precise duration), fallback to track fields
|
|
849
|
-
metadata:
|
|
850
|
-
...(track as any),
|
|
851
|
-
...((streamInfo as any)?.metadata || {}),
|
|
852
|
-
},
|
|
1177
|
+
metadata: mergedMetadata,
|
|
853
1178
|
inputType,
|
|
854
1179
|
inlineVolume: true,
|
|
855
1180
|
});
|
|
1181
|
+
|
|
1182
|
+
this.debug(`[ResourceFromTrack] AudioResource created successfully for track: ${track.title}`);
|
|
1183
|
+
return audioResource;
|
|
856
1184
|
}
|
|
857
1185
|
|
|
858
1186
|
private async generateWillNext(): Promise<void> {
|