Honor explicit search prefixes in SourceFinder
Updated `SourceFinder` to respect explicit `ytsearch:`, `ytmsearch:`, and `scsearch:` prefixes regardless of the configured search engine. Added unit tests to ensure correct behavior and consistent identifier resolution when explicit prefixes are provided.
This commit is contained in:
1 parent
d53cbbecd4
commit
0e68886eb2
2 files changed
+36
-3
No files matched your search
@@ -77,6 +77,18 @@ public class SourceFinder {
|
||||
return AudioSourceType.DirectLinkMp3;
|
||||
}
|
||||
|
||||
if (url.startsWith("ytsearch:")) {
|
||||
return AudioSourceType.YTSearch;
|
||||
}
|
||||
|
||||
if (url.startsWith("ytmsearch:")) {
|
||||
return AudioSourceType.YTMSearch;
|
||||
}
|
||||
|
||||
if (url.startsWith("scsearch:")) {
|
||||
return AudioSourceType.SCSearch;
|
||||
}
|
||||
|
||||
if (!(url.startsWith("http://") || url.startsWith("https://"))) {
|
||||
return switch (searchEngine) {
|
||||
case YTMUSIC -> AudioSourceType.YTMSearch;
|
||||
@@ -102,9 +114,9 @@ public class SourceFinder {
|
||||
|
||||
identifier = switch (getSource(url, searchEngine)) {
|
||||
case Youtube, YTMusic, Soundcloud, DirectLinkMp3 -> url;
|
||||
case YTSearch -> "ytsearch:" + url;
|
||||
case YTMSearch -> "ytmsearch:" + url;
|
||||
case SCSearch -> "scsearch:" + url;
|
||||
case YTSearch -> url.startsWith("ytsearch:") ? url : "ytsearch:" + url;
|
||||
case YTMSearch -> url.startsWith("ytmsearch:") ? url : "ytmsearch:" + url;
|
||||
case SCSearch -> url.startsWith("scsearch:") ? url : "scsearch:" + url;
|
||||
// Udio is not resolvable by the Lavalink node until the source is ported to a
|
||||
// server-side plugin, see docs/reference/udio-lavalink-plugin.
|
||||
default -> null;
|
||||
|
||||
@@ -48,4 +48,25 @@ public class SourceFinderTest {
|
||||
assertEquals(SourceFinder.AudioSourceType.Soundcloud, SourceFinder.getSource(url, SourceFinder.SearchEngine.YTMUSIC));
|
||||
assertEquals(url, SourceFinder.getIdentifier(url, SourceFinder.SearchEngine.YTMUSIC));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void explicitScsearchPrefixIsHonoredRegardlessOfSearchEngine() {
|
||||
String query = "scsearch:never gonna give you up";
|
||||
assertEquals(SourceFinder.AudioSourceType.SCSearch, SourceFinder.getSource(query, SourceFinder.SearchEngine.YOUTUBE));
|
||||
assertEquals(query, SourceFinder.getIdentifier(query, SourceFinder.SearchEngine.YOUTUBE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void explicitYtsearchPrefixIsHonoredRegardlessOfSearchEngine() {
|
||||
String query = "ytsearch:never gonna give you up";
|
||||
assertEquals(SourceFinder.AudioSourceType.YTSearch, SourceFinder.getSource(query, SourceFinder.SearchEngine.SOUNDCLOUD));
|
||||
assertEquals(query, SourceFinder.getIdentifier(query, SourceFinder.SearchEngine.SOUNDCLOUD));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void explicitYtmsearchPrefixIsHonoredRegardlessOfSearchEngine() {
|
||||
String query = "ytmsearch:never gonna give you up";
|
||||
assertEquals(SourceFinder.AudioSourceType.YTMSearch, SourceFinder.getSource(query, SourceFinder.SearchEngine.SOUNDCLOUD));
|
||||
assertEquals(query, SourceFinder.getIdentifier(query, SourceFinder.SearchEngine.SOUNDCLOUD));
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user