Skip to content
This repository was archived by the owner on Nov 26, 2023. It is now read-only.

Commit 2045f64

Browse files
committed
Use own, less bloated, abstraction class
1 parent 3bba558 commit 2045f64

12 files changed

+108
-65
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ plugins {
2828
}
2929

3030
project.group = "com.dunctebot"
31-
project.version = "1.2.1"
31+
project.version = "1.2.2"
3232
val archivesBaseName = "sourcemanagers"
3333

3434
repositories {
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright 2020 Duncan "duncte123" Sterken
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.dunctebot.sourcemanagers;
18+
19+
import com.dunctebot.sourcemanagers.pornhub.PornHubAudioSourceManager;
20+
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManager;
21+
import com.sedmelluq.discord.lavaplayer.tools.ExceptionTools;
22+
import com.sedmelluq.discord.lavaplayer.tools.io.HttpClientTools;
23+
import com.sedmelluq.discord.lavaplayer.tools.io.HttpConfigurable;
24+
import com.sedmelluq.discord.lavaplayer.tools.io.HttpInterface;
25+
import com.sedmelluq.discord.lavaplayer.tools.io.HttpInterfaceManager;
26+
import org.apache.http.client.config.RequestConfig;
27+
import org.apache.http.impl.client.HttpClientBuilder;
28+
import java.util.function.Consumer;
29+
import java.util.function.Function;
30+
31+
public abstract class AbstractDuncteBotHttpSource implements AudioSourceManager, HttpConfigurable {
32+
33+
private final HttpInterfaceManager httpInterfaceManager;
34+
35+
public AbstractDuncteBotHttpSource() {
36+
httpInterfaceManager = HttpClientTools.createDefaultThreadLocalManager();
37+
38+
httpInterfaceManager.setHttpContextFilter(new PornHubAudioSourceManager.FuckCookies());
39+
}
40+
41+
public HttpInterface getHttpInterface() {
42+
return httpInterfaceManager.getInterface();
43+
}
44+
45+
@Override
46+
public void shutdown() {
47+
ExceptionTools.closeWithWarnings(httpInterfaceManager);
48+
}
49+
50+
@Override
51+
public void configureRequests(Function<RequestConfig, RequestConfig> configurator) {
52+
httpInterfaceManager.configureRequests(configurator);
53+
}
54+
55+
@Override
56+
public void configureBuilder(Consumer<HttpClientBuilder> configurator) {
57+
httpInterfaceManager.configureBuilder(configurator);
58+
}
59+
}

src/main/java/com/dunctebot/sourcemanagers/Mp3Track.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
package com.dunctebot.sourcemanagers;
1818

1919
import com.sedmelluq.discord.lavaplayer.container.mp3.Mp3AudioTrack;
20-
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManager;
21-
import com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager;
2220
import com.sedmelluq.discord.lavaplayer.tools.io.HttpInterface;
2321
import com.sedmelluq.discord.lavaplayer.tools.io.PersistentHttpStream;
2422
import com.sedmelluq.discord.lavaplayer.tools.io.SeekableInputStream;
@@ -34,11 +32,11 @@
3432
public class Mp3Track extends DelegatedAudioTrack {
3533
protected static final Logger log = LoggerFactory.getLogger(Mp3Track.class);
3634

37-
private final HttpAudioSourceManager manager;
35+
private final AbstractDuncteBotHttpSource manager;
3836

39-
public Mp3Track(AudioTrackInfo trackInfo, AudioSourceManager manager) {
37+
public Mp3Track(AudioTrackInfo trackInfo, AbstractDuncteBotHttpSource manager) {
4038
super(trackInfo);
41-
this.manager = (HttpAudioSourceManager) manager;
39+
this.manager = (AbstractDuncteBotHttpSource) manager;
4240
}
4341

4442
@Override
@@ -66,7 +64,7 @@ protected String getPlaybackUrl() {
6664
}
6765

6866
@Override
69-
public HttpAudioSourceManager getSourceManager() {
67+
public AbstractDuncteBotHttpSource getSourceManager() {
7068
return manager;
7169
}
7270
}

src/main/java/com/dunctebot/sourcemanagers/MpegTrack.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,12 @@
1717
package com.dunctebot.sourcemanagers;
1818

1919
import com.sedmelluq.discord.lavaplayer.container.mpeg.MpegAudioTrack;
20-
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManager;
2120
import com.sedmelluq.discord.lavaplayer.tools.io.SeekableInputStream;
2221
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
2322
import com.sedmelluq.discord.lavaplayer.track.InternalAudioTrack;
2423

2524
public abstract class MpegTrack extends Mp3Track {
26-
public MpegTrack(AudioTrackInfo trackInfo, AudioSourceManager manager) {
25+
public MpegTrack(AudioTrackInfo trackInfo, AbstractDuncteBotHttpSource manager) {
2726
super(trackInfo, manager);
2827
}
2928

src/main/java/com/dunctebot/sourcemanagers/clypit/ClypitAudioSourceManager.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
package com.dunctebot.sourcemanagers.clypit;
1818

19+
import com.dunctebot.sourcemanagers.AbstractDuncteBotHttpSource;
1920
import com.dunctebot.sourcemanagers.IdentifiedAudioReference;
2021
import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager;
21-
import com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager;
2222
import com.sedmelluq.discord.lavaplayer.tools.ExceptionTools;
2323
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
2424
import com.sedmelluq.discord.lavaplayer.tools.JsonBrowser;
@@ -37,7 +37,7 @@
3737
import java.util.regex.Matcher;
3838
import java.util.regex.Pattern;
3939

40-
public class ClypitAudioSourceManager extends HttpAudioSourceManager {
40+
public class ClypitAudioSourceManager extends AbstractDuncteBotHttpSource {
4141

4242
private static final Pattern CLYPIT_REGEX = Pattern.compile("(http://|https://(www\\.)?)?clyp\\.it/(.*)");
4343

@@ -73,11 +73,6 @@ public AudioItem loadItem(DefaultAudioPlayerManager manager, AudioReference refe
7373
}
7474
}
7575

76-
@Override
77-
public void encodeTrack(AudioTrack track, DataOutput output) {
78-
// empty because we don't need them
79-
}
80-
8176
// Switched from WebUtils to lavaplayer's stuff because that is better I guess
8277
private JsonBrowser fetchJson(String itemId) throws IOException {
8378
final HttpGet httpGet = new HttpGet("https://api.clyp.it/" + itemId);
@@ -99,8 +94,18 @@ private JsonBrowser fetchJson(String itemId) throws IOException {
9994
}
10095
}
10196

97+
@Override
98+
public boolean isTrackEncodable(AudioTrack track) {
99+
return true;
100+
}
101+
102102
@Override
103103
public AudioTrack decodeTrack(AudioTrackInfo trackInfo, DataInput input) {
104104
return new ClypitAudioTrack(trackInfo, this);
105105
}
106+
107+
@Override
108+
public void encodeTrack(AudioTrack track, DataOutput output) {
109+
// empty because we don't need them
110+
}
106111
}

src/main/java/com/dunctebot/sourcemanagers/clypit/ClypitAudioTrack.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,19 @@
1616

1717
package com.dunctebot.sourcemanagers.clypit;
1818

19+
import com.dunctebot.sourcemanagers.AbstractDuncteBotHttpSource;
1920
import com.dunctebot.sourcemanagers.Mp3Track;
2021
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
2122
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
2223

2324
public class ClypitAudioTrack extends Mp3Track {
2425

25-
ClypitAudioTrack(AudioTrackInfo trackInfo, ClypitAudioSourceManager manager) {
26+
ClypitAudioTrack(AudioTrackInfo trackInfo, AbstractDuncteBotHttpSource manager) {
2627
super(trackInfo, manager);
2728
}
2829

2930
@Override
30-
public AudioTrack makeClone() {
31-
return new ClypitAudioTrack(trackInfo, (ClypitAudioSourceManager) getSourceManager());
31+
protected AudioTrack makeShallowClone() {
32+
return new ClypitAudioTrack(trackInfo, getSourceManager());
3233
}
3334
}

src/main/java/com/dunctebot/sourcemanagers/getyarn/GetyarnAudioSourceManager.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.dunctebot.sourcemanagers.getyarn;
1818

19+
import com.dunctebot.sourcemanagers.AbstractDuncteBotHttpSource;
1920
import com.dunctebot.sourcemanagers.IdentifiedAudioReference;
2021
import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager;
2122
import com.sedmelluq.discord.lavaplayer.source.http.HttpAudioSourceManager;
@@ -30,7 +31,7 @@
3031
import java.util.regex.Matcher;
3132
import java.util.regex.Pattern;
3233

33-
public class GetyarnAudioSourceManager extends HttpAudioSourceManager {
34+
public class GetyarnAudioSourceManager extends AbstractDuncteBotHttpSource {
3435
private static final Pattern GETYARN_REGEX = Pattern.compile("(?:http://|https://(?:www\\.)?)?getyarn\\.io/yarn-clip/(.*)");
3536

3637
@Override
@@ -60,6 +61,11 @@ public AudioItem loadItem(DefaultAudioPlayerManager manager, AudioReference refe
6061
);
6162
}
6263

64+
@Override
65+
public boolean isTrackEncodable(AudioTrack track) {
66+
return true;
67+
}
68+
6369
@Override
6470
public void encodeTrack(AudioTrack track, DataOutput output) {
6571
// Nothing to encode

src/main/java/com/dunctebot/sourcemanagers/getyarn/GetyarnAudioTrack.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,19 @@
1616

1717
package com.dunctebot.sourcemanagers.getyarn;
1818

19+
import com.dunctebot.sourcemanagers.AbstractDuncteBotHttpSource;
1920
import com.dunctebot.sourcemanagers.MpegTrack;
2021
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManager;
2122
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
2223
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
2324

2425
public class GetyarnAudioTrack extends MpegTrack {
25-
public GetyarnAudioTrack(AudioTrackInfo trackInfo, AudioSourceManager manager) {
26+
public GetyarnAudioTrack(AudioTrackInfo trackInfo, AbstractDuncteBotHttpSource manager) {
2627
super(trackInfo, manager);
2728
}
2829

2930
@Override
30-
public AudioTrack makeClone() {
31+
public AudioTrack makeShallowClone() {
3132
return new GetyarnAudioTrack(trackInfo, getSourceManager());
3233
}
3334

src/main/java/com/dunctebot/sourcemanagers/pornhub/PornHubAudioSourceManager.java

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -16,55 +16,40 @@
1616

1717
package com.dunctebot.sourcemanagers.pornhub;
1818

19+
import com.dunctebot.sourcemanagers.AbstractDuncteBotHttpSource;
1920
import com.dunctebot.sourcemanagers.AudioTrackInfoWithImage;
2021
import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager;
21-
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManager;
2222
import com.sedmelluq.discord.lavaplayer.tools.ExceptionTools;
2323
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
2424
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException.Severity;
2525
import com.sedmelluq.discord.lavaplayer.tools.JsonBrowser;
2626
import com.sedmelluq.discord.lavaplayer.tools.http.HttpContextFilter;
27-
import com.sedmelluq.discord.lavaplayer.tools.io.HttpClientTools;
28-
import com.sedmelluq.discord.lavaplayer.tools.io.HttpConfigurable;
29-
import com.sedmelluq.discord.lavaplayer.tools.io.HttpInterface;
30-
import com.sedmelluq.discord.lavaplayer.tools.io.HttpInterfaceManager;
3127
import com.sedmelluq.discord.lavaplayer.track.AudioItem;
3228
import com.sedmelluq.discord.lavaplayer.track.AudioReference;
3329
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
3430
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
3531
import org.apache.commons.io.IOUtils;
3632
import org.apache.http.HttpResponse;
3733
import org.apache.http.client.CookieStore;
38-
import org.apache.http.client.config.RequestConfig;
3934
import org.apache.http.client.methods.CloseableHttpResponse;
4035
import org.apache.http.client.methods.HttpGet;
4136
import org.apache.http.client.methods.HttpUriRequest;
4237
import org.apache.http.client.protocol.HttpClientContext;
4338
import org.apache.http.impl.client.BasicCookieStore;
44-
import org.apache.http.impl.client.HttpClientBuilder;
4539

4640
import java.io.DataInput;
4741
import java.io.DataOutput;
4842
import java.io.IOException;
4943
import java.nio.charset.StandardCharsets;
50-
import java.util.function.Consumer;
51-
import java.util.function.Function;
5244
import java.util.regex.Matcher;
5345
import java.util.regex.Pattern;
5446

55-
public class PornHubAudioSourceManager implements AudioSourceManager, HttpConfigurable {
47+
public class PornHubAudioSourceManager extends AbstractDuncteBotHttpSource {
5648
private static final String DOMAIN_PATTERN = "https?://([a-z]+\\.)?pornhub\\.(com|net)";
5749
public static final Pattern DOMAIN_REGEX = Pattern.compile(DOMAIN_PATTERN);
5850
private static final Pattern VIDEO_REGEX = Pattern.compile("^" + DOMAIN_PATTERN + "/view_video\\.php\\?viewkey=([a-zA-Z0-9]+)(?:.*)$");
5951
private static final Pattern VIDEO_INFO_REGEX = Pattern.compile("var flashvars_\\d+ = (\\{.+})");
6052
private static final Pattern MODEL_INFO_REGEX = Pattern.compile("var MODEL_PROFILE = (\\{.+})");
61-
private final HttpInterfaceManager httpInterfaceManager;
62-
63-
public PornHubAudioSourceManager() {
64-
httpInterfaceManager = HttpClientTools.createDefaultThreadLocalManager();
65-
66-
httpInterfaceManager.setHttpContextFilter(new FuckCookies());
67-
}
6853

6954
@Override
7055
public String getSourceName() {
@@ -99,25 +84,6 @@ public AudioTrack decodeTrack(AudioTrackInfo trackInfo, DataInput input) {
9984
return new PornHubAudioTrack(trackInfo, this);
10085
}
10186

102-
@Override
103-
public void shutdown() {
104-
ExceptionTools.closeWithWarnings(httpInterfaceManager);
105-
}
106-
107-
@Override
108-
public void configureRequests(Function<RequestConfig, RequestConfig> configurator) {
109-
httpInterfaceManager.configureRequests(configurator);
110-
}
111-
112-
@Override
113-
public void configureBuilder(Consumer<HttpClientBuilder> configurator) {
114-
httpInterfaceManager.configureBuilder(configurator);
115-
}
116-
117-
public HttpInterface getHttpInterface() {
118-
return httpInterfaceManager.getInterface();
119-
}
120-
12187
private AudioItem loadItemOnce(AudioReference reference) throws IOException {
12288
final String html = loadHtml(reference.identifier);
12389

@@ -229,7 +195,7 @@ private void notAvailable() {
229195
throw new FriendlyException("This video is not available", Severity.COMMON, null);
230196
}
231197

232-
private static class FuckCookies implements HttpContextFilter {
198+
public static class FuckCookies implements HttpContextFilter {
233199
@Override
234200
public void onContextOpen(HttpClientContext context) {
235201
CookieStore cookieStore = context.getCookieStore();

src/main/java/com/dunctebot/sourcemanagers/pornhub/PornHubAudioTrack.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616

1717
package com.dunctebot.sourcemanagers.pornhub;
1818

19+
import com.dunctebot.sourcemanagers.AbstractDuncteBotHttpSource;
1920
import com.dunctebot.sourcemanagers.MpegTrack;
2021
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
2122
import com.sedmelluq.discord.lavaplayer.tools.io.HttpInterface;
23+
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
2224
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
2325
import org.apache.commons.io.IOUtils;
2426
import org.apache.http.client.methods.CloseableHttpResponse;
@@ -37,7 +39,7 @@ public class PornHubAudioTrack extends MpegTrack {
3739
private static final Pattern MEDIA_STRING = Pattern.compile("(var\\s+?mediastring.+?)<\\/script>");
3840
private static final Pattern MEDIA_STRING_FILTER = Pattern.compile("\\/\\* \\+ [a-zA-Z0-9_]+ \\+ \\*\\/");
3941

40-
public PornHubAudioTrack(AudioTrackInfo trackInfo, PornHubAudioSourceManager sourceManager) {
42+
public PornHubAudioTrack(AudioTrackInfo trackInfo, AbstractDuncteBotHttpSource sourceManager) {
4143
super(trackInfo, sourceManager);
4244
}
4345

@@ -93,4 +95,9 @@ private static String parseJsValueToUrl(String htmlPage, String js) {
9395

9496
return String.join("", videoParts);
9597
}
98+
99+
@Override
100+
protected AudioTrack makeShallowClone() {
101+
return new PornHubAudioTrack(trackInfo, getSourceManager());
102+
}
96103
}

0 commit comments

Comments
 (0)