Skip to content

Commit 48abb60

Browse files
committed
Add MWeb client.
1 parent 8ac9073 commit 48abb60

File tree

4 files changed

+75
-0
lines changed

4 files changed

+75
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package dev.lavalink.youtube.clients;
2+
3+
import com.sedmelluq.discord.lavaplayer.tools.JsonBrowser;
4+
import com.sedmelluq.discord.lavaplayer.tools.io.HttpInterface;
5+
import org.jetbrains.annotations.NotNull;
6+
7+
public class MWeb extends Web {
8+
public static ClientConfig BASE_CONFIG = new ClientConfig()
9+
.withApiKey("AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8")
10+
.withClientName("MWEB")
11+
.withClientField("clientVersion", "2.20240726.11.00");
12+
13+
public MWeb(@NotNull ClientOptions options) {
14+
super(options);
15+
}
16+
17+
@Override
18+
@NotNull
19+
public ClientConfig getBaseClientConfig(@NotNull HttpInterface httpInterface) {
20+
return BASE_CONFIG.copy();
21+
}
22+
23+
@Override
24+
@NotNull
25+
protected JsonBrowser extractMixPlaylistData(@NotNull JsonBrowser json) {
26+
return json.get("contents")
27+
.get("singleColumnWatchNextResults")
28+
.get("playlist")
29+
.get("playlist");
30+
}
31+
32+
@Override
33+
protected String extractPlaylistName(@NotNull JsonBrowser json) {
34+
return json.get("header")
35+
.get("pageHeaderRenderer")
36+
.get("pageTitle")
37+
.text();
38+
}
39+
40+
@Override
41+
@NotNull
42+
protected JsonBrowser extractPlaylistVideoList(@NotNull JsonBrowser json) {
43+
return json.get("contents")
44+
.get("singleColumnBrowseResultsRenderer")
45+
.get("tabs")
46+
.index(0)
47+
.get("tabRenderer")
48+
.get("content")
49+
.get("sectionListRenderer")
50+
.get("contents")
51+
.index(0)
52+
.get("itemSectionRenderer")
53+
.get("contents")
54+
.index(0)
55+
.get("playlistVideoListRenderer");
56+
}
57+
58+
@Override
59+
@NotNull
60+
public String getIdentifier() {
61+
return BASE_CONFIG.getName();
62+
}
63+
}

plugin/src/main/java/dev/lavalink/youtube/plugin/ClientProviderV3.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ private enum ClientMapping implements ClientReference {
2020
TVHTML5EMBEDDED(TvHtml5Embedded::new),
2121
WEB(Web::new),
2222
WEBEMBEDDED(WebEmbedded::new),
23+
MWEB(MWeb::new),
2324
MEDIA_CONNECT(MediaConnect::new);
2425

2526
private final ClientWithOptions<Client> clientFactory;

plugin/src/main/java/dev/lavalink/youtube/plugin/ClientProviderV4.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ private enum ClientMapping implements ClientReference {
2121
TVHTML5EMBEDDED(TvHtml5EmbeddedWithThumbnail::new),
2222
WEB(WebWithThumbnail::new),
2323
WEBEMBEDDED(WebEmbeddedWithThumbnail::new),
24+
MWEB(MWebWithThumbnail::new),
2425
MEDIA_CONNECT(MediaConnectWithThumbnail::new);
2526

2627
private final ClientWithOptions<Client> clientFactory;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package dev.lavalink.youtube.clients;
2+
3+
import dev.lavalink.youtube.clients.skeleton.NonMusicClientWithThumbnail;
4+
import org.jetbrains.annotations.NotNull;
5+
6+
public class MWebWithThumbnail extends MWeb implements NonMusicClientWithThumbnail {
7+
public MWebWithThumbnail(@NotNull ClientOptions options) {
8+
super(options);
9+
}
10+
}

0 commit comments

Comments
 (0)