From c07db80ef068f885ca10709551e4591bd385cdac Mon Sep 17 00:00:00 2001 From: TobiGr Date: Sun, 21 Feb 2021 12:15:45 +0100 Subject: [PATCH] Add BASE_URL and BASE_API_URL to BandcampExtractorHelper --- .../services/bandcamp/BandcampService.java | 5 +++-- .../extractors/BandcampExtractorHelper.java | 14 +++++++++----- .../extractors/BandcampFeaturedExtractor.java | 4 +++- .../extractors/BandcampRadioExtractor.java | 4 +++- .../extractors/BandcampRadioInfoItemExtractor.java | 3 ++- .../extractors/BandcampRadioStreamExtractor.java | 6 +++--- .../extractors/BandcampSuggestionExtractor.java | 4 +++- .../BandcampSearchQueryHandlerFactory.java | 4 +++- .../BandcampStreamLinkHandlerFactory.java | 4 +++- 9 files changed, 32 insertions(+), 16 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampService.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampService.java index 1d96684b2..145693285 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampService.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampService.java @@ -19,6 +19,7 @@ import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor; import java.util.Collections; import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.AUDIO; +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL; import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampFeaturedExtractor.FEATURED_API_URL; import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampFeaturedExtractor.KIOSK_FEATURED; import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampRadioExtractor.KIOSK_RADIO; @@ -32,7 +33,7 @@ public class BandcampService extends StreamingService { @Override public String getBaseUrl() { - return "https://bandcamp.com"; + return BASE_URL; } @Override @@ -113,7 +114,7 @@ public class BandcampService extends StreamingService { @Override public StreamExtractor getStreamExtractor(final LinkHandler linkHandler) { - if (linkHandler.getUrl().matches("https?://bandcamp\\.com/\\?show=\\d+")) + if (BandcampExtractorHelper.isRadioUrl(linkHandler.getUrl())) return new BandcampRadioStreamExtractor(this, linkHandler); else return new BandcampStreamExtractor(this, linkHandler); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampExtractorHelper.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampExtractorHelper.java index c4011fff6..dad376d58 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampExtractorHelper.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampExtractorHelper.java @@ -20,10 +20,14 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.Locale; public class BandcampExtractorHelper { + public static final String BASE_URL = "https://bandcamp.com"; + public static final String BASE_API_URL = BASE_URL + "/api"; + /** *

Get an attribute of a web page as JSON * @@ -50,11 +54,12 @@ public class BandcampExtractorHelper { try { final String jsonString = NewPipe.getDownloader().get( - "https://bandcamp.com/api/mobile/22/tralbum_details?band_id=" + bandId + BASE_API_URL + "/mobile/22/tralbum_details?band_id=" + bandId + "&tralbum_id=" + itemId + "&tralbum_type=" + itemType.charAt(0)) .responseBody(); - return JsonParser.object().from(jsonString).getString("bandcamp_url").replace("http://", "https://"); + return JsonParser.object().from(jsonString) + .getString("bandcamp_url").replace("http://", "https://"); } catch (final JsonParserException | ReCaptchaException | IOException e) { throw new ParsingException("Ids could not be translated to URL", e); @@ -70,7 +75,7 @@ public class BandcampExtractorHelper { final StringBuilder result = new StringBuilder(); // Remove empty strings - final ArrayList list = new ArrayList<>(Arrays.asList(strings)); + final List list = new ArrayList<>(Arrays.asList(strings)); for (int i = list.size() - 1; i >= 0; i--) { if (Utils.isNullOrEmpty(list.get(i)) || list.get(i).equals("null")) { list.remove(i); @@ -101,7 +106,7 @@ public class BandcampExtractorHelper { return JsonParser.object().from( NewPipe.getDownloader().post( - "https://bandcamp.com/api/mobile/22/band_details", + BASE_API_URL + "/mobile/22/band_details", null, JsonWriter.string() .object() @@ -165,6 +170,5 @@ public class BandcampExtractorHelper { } catch (final DateTimeException e) { throw new ParsingException("Could not parse date '" + textDate + "'", e); } - } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampFeaturedExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampFeaturedExtractor.java index 12214601a..93b1b0297 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampFeaturedExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampFeaturedExtractor.java @@ -19,10 +19,12 @@ import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemsCollector; import javax.annotation.Nonnull; import java.io.IOException; +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_API_URL; + public class BandcampFeaturedExtractor extends KioskExtractor { public static final String KIOSK_FEATURED = "Featured"; - public static final String FEATURED_API_URL = "https://bandcamp.com/api/mobile/24/bootstrap_data"; + public static final String FEATURED_API_URL = BASE_API_URL + "/mobile/24/bootstrap_data"; private JsonObject json; diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioExtractor.java index 8c3a7baf3..da062ab04 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioExtractor.java @@ -19,10 +19,12 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector; import javax.annotation.Nonnull; import java.io.IOException; +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_API_URL; + public class BandcampRadioExtractor extends KioskExtractor { public static final String KIOSK_RADIO = "Radio"; - public static final String RADIO_API_URL = "https://bandcamp.com/api/bcweekly/1/list"; + public static final String RADIO_API_URL = BASE_API_URL + "/bcweekly/1/list"; private JsonObject json = null; diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioInfoItemExtractor.java index a684e7eb8..2331f258c 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioInfoItemExtractor.java @@ -10,6 +10,7 @@ import org.schabi.newpipe.extractor.stream.StreamType; import javax.annotation.Nullable; +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL; import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl; public class BandcampRadioInfoItemExtractor implements StreamInfoItemExtractor { @@ -49,7 +50,7 @@ public class BandcampRadioInfoItemExtractor implements StreamInfoItemExtractor { @Override public String getUrl() { - return "https://bandcamp.com/?show=" + show.getInt("id"); + return BASE_URL + "/?show=" + show.getInt("id"); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioStreamExtractor.java index 01ed5ad5a..7d2543c8a 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioStreamExtractor.java @@ -23,7 +23,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl; +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.*; public class BandcampRadioStreamExtractor extends BandcampStreamExtractor { @@ -36,7 +36,7 @@ public class BandcampRadioStreamExtractor extends BandcampStreamExtractor { static JsonObject query(final int id) throws ParsingException { try { return JsonParser.object().from( - NewPipe.getDownloader().get("https://bandcamp.com/api/bcweekly/1/get?id=" + id).responseBody() + NewPipe.getDownloader().get(BASE_API_URL + "/bcweekly/1/get?id=" + id).responseBody() ); } catch (final IOException | ReCaptchaException | JsonParserException e) { throw new ParsingException("could not get show data", e); @@ -88,7 +88,7 @@ public class BandcampRadioStreamExtractor extends BandcampStreamExtractor { @Nonnull @Override public String getUploaderAvatarUrl() { - return "https://bandcamp.com/img/buttons/bandcamp-button-circle-whitecolor-512.png"; + return BASE_URL + "/img/buttons/bandcamp-button-circle-whitecolor-512.png"; } @Nonnull diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampSuggestionExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampSuggestionExtractor.java index 4eaa830cb..46283345b 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampSuggestionExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampSuggestionExtractor.java @@ -18,9 +18,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_API_URL; + public class BandcampSuggestionExtractor extends SuggestionExtractor { - private static final String AUTOCOMPLETE_URL = "https://bandcamp.com/api/fuzzysearch/1/autocomplete?q="; + private static final String AUTOCOMPLETE_URL = BASE_API_URL + "/fuzzysearch/1/autocomplete?q="; public BandcampSuggestionExtractor(final StreamingService service) { super(service); } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampSearchQueryHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampSearchQueryHandlerFactory.java index 518170b07..9e295d5de 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampSearchQueryHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampSearchQueryHandlerFactory.java @@ -9,6 +9,8 @@ import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.List; +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL; + public class BandcampSearchQueryHandlerFactory extends SearchQueryHandlerFactory { @@ -17,7 +19,7 @@ public class BandcampSearchQueryHandlerFactory extends SearchQueryHandlerFactory throws ParsingException { try { - return "https://bandcamp.com/search?q=" + + return BASE_URL + "/search?q=" + URLEncoder.encode(query, "UTF-8") + "&page=1"; diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampStreamLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampStreamLinkHandlerFactory.java index 37ff29c0c..96b9f9d8e 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampStreamLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampStreamLinkHandlerFactory.java @@ -6,6 +6,8 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory; import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper; +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL; + /** *

Tracks don't have standalone ids, they are always in combination with the band id. * That's why id = url.

@@ -34,7 +36,7 @@ public class BandcampStreamLinkHandlerFactory extends LinkHandlerFactory { @Override public String getUrl(final String input) { if (input.matches("\\d+")) { - return "https://bandcamp.com/?show=" + input; + return BASE_URL + "/?show=" + input; } else { return input; }