Update Bandcamp service to latest interface changes
This commit is contained in:
parent
b78f788017
commit
a1523eb293
|
@ -11,6 +11,7 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
|
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
|
||||||
import org.schabi.newpipe.extractor.linkhandler.LinkHandler;
|
import org.schabi.newpipe.extractor.linkhandler.LinkHandler;
|
||||||
import org.schabi.newpipe.extractor.stream.AudioStream;
|
import org.schabi.newpipe.extractor.stream.AudioStream;
|
||||||
|
import org.schabi.newpipe.extractor.stream.Description;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
@ -91,8 +92,8 @@ public class BandcampRadioStreamExtractor extends BandcampStreamExtractor {
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public Description getDescription() {
|
||||||
return showInfo.getString("desc");
|
return new Description(showInfo.getString("desc"), Description.PLAIN_TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -120,4 +121,22 @@ public class BandcampRadioStreamExtractor extends BandcampStreamExtractor {
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public String getLicence() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public String getCategory() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public List<String> getTags() {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,8 @@ import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.jsoup.Jsoup;
|
import org.jsoup.Jsoup;
|
||||||
import org.jsoup.nodes.Document;
|
import org.jsoup.nodes.Document;
|
||||||
|
import org.jsoup.nodes.Element;
|
||||||
|
import org.jsoup.select.Elements;
|
||||||
import org.schabi.newpipe.extractor.MediaFormat;
|
import org.schabi.newpipe.extractor.MediaFormat;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
import org.schabi.newpipe.extractor.downloader.Downloader;
|
import org.schabi.newpipe.extractor.downloader.Downloader;
|
||||||
|
@ -20,6 +22,7 @@ import javax.annotation.Nullable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampChannelExtractor.getImageUrl;
|
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampChannelExtractor.getImageUrl;
|
||||||
|
|
||||||
|
@ -121,14 +124,15 @@ public class BandcampStreamExtractor extends StreamExtractor {
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public Description getDescription() {
|
||||||
return BandcampExtractorHelper.smartConcatenate(
|
String s = BandcampExtractorHelper.smartConcatenate(
|
||||||
new String[]{
|
new String[]{
|
||||||
getStringOrNull(current, "about"),
|
getStringOrNull(current, "about"),
|
||||||
getStringOrNull(current, "lyrics"),
|
getStringOrNull(current, "lyrics"),
|
||||||
getStringOrNull(current, "credits")
|
getStringOrNull(current, "credits")
|
||||||
}, "\n\n"
|
}, "\n\n"
|
||||||
);
|
);
|
||||||
|
return new Description(s, Description.PLAIN_TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -176,7 +180,7 @@ public class BandcampStreamExtractor extends StreamExtractor {
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getDashMpdUrl() throws ParsingException {
|
public String getDashMpdUrl() throws ParsingException {
|
||||||
return null;
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
|
@ -210,13 +214,13 @@ public class BandcampStreamExtractor extends StreamExtractor {
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public List<SubtitlesStream> getSubtitlesDefault() {
|
public List<SubtitlesStream> getSubtitlesDefault() {
|
||||||
return null;
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public List<SubtitlesStream> getSubtitles(MediaFormat format) {
|
public List<SubtitlesStream> getSubtitles(MediaFormat format) {
|
||||||
return null;
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -238,4 +242,77 @@ public class BandcampStreamExtractor extends StreamExtractor {
|
||||||
public String getErrorMessage() {
|
public String getErrorMessage() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public String getHost() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public String getPrivacy() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public String getCategory() {
|
||||||
|
// Get first tag from html, which is the artist's Genre
|
||||||
|
return document.getElementsByAttributeValue("itemprop", "keywords").first().text();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public String getLicence() {
|
||||||
|
|
||||||
|
int license = current.getInt("license_type");
|
||||||
|
|
||||||
|
// Tests resulted in this mapping of ints to licence: https://cloud.disroot.org/s/ZTWBxbQ9fKRmRWJ/preview
|
||||||
|
|
||||||
|
switch (license) {
|
||||||
|
case 1:
|
||||||
|
return "All rights reserved ©";
|
||||||
|
case 2:
|
||||||
|
return "CC BY-NC-ND 3.0";
|
||||||
|
case 3:
|
||||||
|
return "CC BY-NC-SA 3.0";
|
||||||
|
case 4:
|
||||||
|
return "CC BY-NC 3.0";
|
||||||
|
case 5:
|
||||||
|
return "CC BY-ND 3.0";
|
||||||
|
case 8:
|
||||||
|
return "CC BY-SA 3.0";
|
||||||
|
case 6:
|
||||||
|
return "CC BY 3.0";
|
||||||
|
default:
|
||||||
|
return "Unknown license (internal ID " + license + ")";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public Locale getLanguageInfo() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public List<String> getTags() {
|
||||||
|
Elements tagElements = document.getElementsByAttributeValue("itemprop", "keywords");
|
||||||
|
|
||||||
|
ArrayList<String> tags = new ArrayList<>();
|
||||||
|
|
||||||
|
for (Element e : tagElements) {
|
||||||
|
tags.add(e.text());
|
||||||
|
}
|
||||||
|
|
||||||
|
return tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public String getSupportInfo() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,9 @@ import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampStreamExtractor;
|
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampStreamExtractor;
|
||||||
|
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
@ -52,7 +55,7 @@ public class BandcampStreamExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDescription() {
|
public void testDescription() {
|
||||||
assertEquals(831, extractor.getDescription().length());
|
assertEquals(831, extractor.getDescription().getContent().length());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -77,4 +80,19 @@ public class BandcampStreamExtractorTest {
|
||||||
bandcamp.getStreamExtractor("https://bandcamp.com");
|
bandcamp.getStreamExtractor("https://bandcamp.com");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCategory() throws ExtractionException, IOException {
|
||||||
|
StreamExtractor se = bandcamp.getStreamExtractor("https://npet.bandcamp.com/track/track-1");
|
||||||
|
se.fetchPage();
|
||||||
|
assertEquals("acoustic", se.getCategory());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLicense() throws ExtractionException, IOException {
|
||||||
|
StreamExtractor se = bandcamp.getStreamExtractor("https://npet.bandcamp.com/track/track-1");
|
||||||
|
se.fetchPage();
|
||||||
|
assertEquals("CC BY 3.0", se.getLicence());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue