Bandcamp channel extractor: handel nonexistent images better

This commit is contained in:
Fynn Godau 2019-12-22 01:38:48 +01:00
parent 91c0ec7cea
commit 794ca5eeae
3 changed files with 22 additions and 2 deletions

View file

@ -3,6 +3,7 @@
package org.schabi.newpipe.extractor.services.bandcamp.extractors; package org.schabi.newpipe.extractor.services.bandcamp.extractors;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import org.jsoup.Jsoup; import org.jsoup.Jsoup;
import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.NewPipe;
@ -61,7 +62,12 @@ public class BandcampChannelExtractor extends ChannelExtractor {
@Override @Override
public String getAvatarUrl() { public String getAvatarUrl() {
return getImageUrl(channelInfo.getLong("bio_image_id"), false); try {
return getImageUrl(channelInfo.getLong("bio_image_id"), false);
} catch (JSONException e) {
// In this case, the id is null and no image is available
return "";
}
} }
/** /**
@ -82,6 +88,9 @@ public class BandcampChannelExtractor extends ChannelExtractor {
} catch (IOException | ReCaptchaException e) { } catch (IOException | ReCaptchaException e) {
throw new ParsingException("Could not download artist web site", e); throw new ParsingException("Could not download artist web site", e);
} catch (NullPointerException e) {
// No banner available
return "";
} }
} }

View file

@ -85,7 +85,7 @@ public class BandcampExtractorHelper {
// Remove empty strings // Remove empty strings
ArrayList<String> list = new ArrayList<>(Arrays.asList(strings)); ArrayList<String> list = new ArrayList<>(Arrays.asList(strings));
for (int i = list.size() - 1; i >= 0; i--) { for (int i = list.size() - 1; i >= 0; i--) {
if (list.get(i) == null || list.get(i).isEmpty()) { if (list.get(i) == null || list.get(i).isEmpty() || list.get(i).equals("null")) {
list.remove(i); list.remove(i);
} }
} }

View file

@ -4,6 +4,7 @@ import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.schabi.newpipe.DownloaderTestImpl; import org.schabi.newpipe.DownloaderTestImpl;
import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.NewPipe;
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.BandcampChannelExtractor; import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampChannelExtractor;
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper; import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper;
@ -45,4 +46,14 @@ public class BandcampChannelExtractorTest {
// Why is this picture in png format when all other pictures are jpg? // Why is this picture in png format when all other pictures are jpg?
assertTrue(extractor.getBannerUrl().endsWith(".png")); assertTrue(extractor.getBannerUrl().endsWith(".png"));
} }
@Test
public void testGetNoAvatar() throws ExtractionException {
assertEquals("", bandcamp.getChannelExtractor("https://powertothequeerkids.bandcamp.com/").getAvatarUrl());
}
@Test
public void testGetNoBanner() throws ExtractionException {
assertEquals("", bandcamp.getChannelExtractor("https://powertothequeerkids.bandcamp.com/").getBannerUrl());
}
} }