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;
|
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://"))) {
|
if (!(url.startsWith("http://") || url.startsWith("https://"))) {
|
||||||
return switch (searchEngine) {
|
return switch (searchEngine) {
|
||||||
case YTMUSIC -> AudioSourceType.YTMSearch;
|
case YTMUSIC -> AudioSourceType.YTMSearch;
|
||||||
@@ -102,9 +114,9 @@ public class SourceFinder {
|
|||||||
|
|
||||||
identifier = switch (getSource(url, searchEngine)) {
|
identifier = switch (getSource(url, searchEngine)) {
|
||||||
case Youtube, YTMusic, Soundcloud, DirectLinkMp3 -> url;
|
case Youtube, YTMusic, Soundcloud, DirectLinkMp3 -> url;
|
||||||
case YTSearch -> "ytsearch:" + url;
|
case YTSearch -> url.startsWith("ytsearch:") ? url : "ytsearch:" + url;
|
||||||
case YTMSearch -> "ytmsearch:" + url;
|
case YTMSearch -> url.startsWith("ytmsearch:") ? url : "ytmsearch:" + url;
|
||||||
case SCSearch -> "scsearch:" + url;
|
case SCSearch -> url.startsWith("scsearch:") ? url : "scsearch:" + url;
|
||||||
// Udio is not resolvable by the Lavalink node until the source is ported to a
|
// Udio is not resolvable by the Lavalink node until the source is ported to a
|
||||||
// server-side plugin, see docs/reference/udio-lavalink-plugin.
|
// server-side plugin, see docs/reference/udio-lavalink-plugin.
|
||||||
default -> null;
|
default -> null;
|
||||||
|
|||||||
@@ -48,4 +48,25 @@ public class SourceFinderTest {
|
|||||||
assertEquals(SourceFinder.AudioSourceType.Soundcloud, SourceFinder.getSource(url, SourceFinder.SearchEngine.YTMUSIC));
|
assertEquals(SourceFinder.AudioSourceType.Soundcloud, SourceFinder.getSource(url, SourceFinder.SearchEngine.YTMUSIC));
|
||||||
assertEquals(url, SourceFinder.getIdentifier(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