Skip to content

Commit 08d6c2a

Browse files
committed
More file types supported
1 parent 4ff4242 commit 08d6c2a

2 files changed

Lines changed: 39 additions & 2 deletions

File tree

source-managers/src/main/java/com/dunctebot/sourcemanagers/pixeldrain/PixelDrainAudioTrack.java

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,56 @@
22

33
import com.dunctebot.sourcemanagers.AbstractDuncteBotHttpSource;
44
import com.dunctebot.sourcemanagers.Mp3Track;
5+
import com.sedmelluq.discord.lavaplayer.container.mp3.Mp3AudioTrack;
6+
import com.sedmelluq.discord.lavaplayer.container.mpeg.MpegAudioTrack;
57
import com.sedmelluq.discord.lavaplayer.container.wav.WavAudioTrack;
8+
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
69
import com.sedmelluq.discord.lavaplayer.tools.io.SeekableInputStream;
710
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
811
import com.sedmelluq.discord.lavaplayer.track.InternalAudioTrack;
912

13+
import java.io.IOException;
14+
1015
public class PixelDrainAudioTrack extends Mp3Track {
1116
public PixelDrainAudioTrack(AudioTrackInfo trackInfo, AbstractDuncteBotHttpSource manager) {
1217
super(trackInfo, manager);
1318
}
1419

20+
private String getAudioType() {
21+
try {
22+
final var document = getSourceManager().loadHtml(this.trackInfo.identifier);
23+
final var title = document.selectFirst("meta[property='og:title']").attr("content");
24+
25+
if (title.endsWith(".mp3")) {
26+
return "audio/x-mp3";
27+
}
28+
29+
return document.selectFirst("meta[property='og:audio:type']").attr("content");
30+
} catch (IOException e) {
31+
throw new FriendlyException("Failed to extract html data", FriendlyException.Severity.SUSPICIOUS, e);
32+
}
33+
}
34+
1535
@Override
1636
protected InternalAudioTrack createAudioTrack(AudioTrackInfo trackInfo, SeekableInputStream stream) {
17-
return new WavAudioTrack(trackInfo, stream);
37+
final var audioType = getAudioType();
38+
39+
switch (audioType) {
40+
case "audio/x-mp3":
41+
return new Mp3AudioTrack(trackInfo, stream);
42+
case "audio/mpeg":
43+
return new MpegAudioTrack(trackInfo, stream);
44+
case "audio/x-m4a":
45+
notSupported();
46+
case "audio/x-wavpack":
47+
notSupported();
48+
default:
49+
return new WavAudioTrack(trackInfo, stream);
50+
}
51+
}
52+
53+
private void notSupported() {
54+
throw new FriendlyException("Audio format is not supported", FriendlyException.Severity.FAULT, null);
1855
}
1956

2057
@Override

source-managers/src/main/java/com/dunctebot/sourcemanagers/pixeldrain/PixeldrainAudioSourceManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ private AudioTrackInfo downloadInfo(String identifier) throws IOException {
8787
);
8888
}
8989

90-
private Document loadHtml(String identifier) throws IOException {
90+
/* package */ Document loadHtml(String identifier) throws IOException {
9191
final var httpGet = new HttpGet(PIXELDRAIN_LOOKUP_BASE + identifier);
9292

9393
try (final CloseableHttpResponse response = getHttpInterface().execute(httpGet)) {

0 commit comments

Comments
 (0)