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 1ce6ac0d0..8b9cbedcf 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 @@ -6,22 +6,23 @@ import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonParser; import com.grack.nanojson.JsonParserException; import com.grack.nanojson.JsonWriter; - import org.jsoup.Jsoup; import org.jsoup.nodes.Element; import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.exceptions.ReCaptchaException; import org.schabi.newpipe.extractor.localization.DateWrapper; +import org.schabi.newpipe.extractor.utils.Utils; +import javax.annotation.Nullable; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.time.DateTimeException; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; +import java.util.Collections; import java.util.Locale; -import javax.annotation.Nullable; - public final class BandcampExtractorHelper { public static final String BASE_URL = "https://bandcamp.com"; @@ -43,8 +44,8 @@ public final class BandcampExtractorHelper { + "&tralbum_id=" + itemId + "&tralbum_type=" + itemType.charAt(0)) .responseBody(); - return JsonParser.object().from(jsonString) - .getString("bandcamp_url").replace("http://", "https://"); + return Utils.replaceHttpWithHttps(JsonParser.object().from(jsonString) + .getString("bandcamp_url")); } catch (final JsonParserException | ReCaptchaException | IOException e) { throw new ParsingException("Ids could not be translated to URL", e); @@ -60,19 +61,16 @@ public final class BandcampExtractorHelper { */ public static JsonObject getArtistDetails(final String id) throws ParsingException { try { - return - JsonParser.object().from( - NewPipe.getDownloader().post( - BASE_API_URL + "/mobile/22/band_details", - null, - JsonWriter.string() - .object() - .value("band_id", id) - .end() - .done() - .getBytes() - ).responseBody() - ); + return JsonParser.object().from(NewPipe.getDownloader().post( + BASE_API_URL + "/mobile/22/band_details", + Collections.singletonMap("Content-Type", + Collections.singletonList("application/json")), + JsonWriter.string() + .object() + .value("band_id", id) + .end() + .done() + .getBytes(StandardCharsets.UTF_8)).responseBody()); } catch (final IOException | ReCaptchaException | JsonParserException e) { throw new ParsingException("Could not download band details", e); } @@ -123,7 +121,7 @@ public final class BandcampExtractorHelper { /** * Whether the URL points to a radio kiosk. * @param url the URL to check - * @return true if the URL matches https://bandcamp.com/?show=SHOW_ID + * @return true if the URL matches {@code https://bandcamp.com/?show=SHOW_ID} */ public static boolean isRadioUrl(final String url) { return url.toLowerCase().matches("https?://bandcamp\\.com/\\?show=\\d+"); 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 3667f3da6..5cc4b5671 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 @@ -18,6 +18,8 @@ import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemsCollector; import javax.annotation.Nonnull; import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Collections; import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_API_URL; @@ -40,11 +42,12 @@ public class BandcampFeaturedExtractor extends KioskExtractor public void onFetchPage(@Nonnull final Downloader downloader) throws IOException, ExtractionException { try { - json = JsonParser.object().from( - getDownloader().post( - FEATURED_API_URL, null, "{\"platform\":\"\",\"version\":0}".getBytes() - ).responseBody() - ); + json = JsonParser.object().from(getDownloader().post( + FEATURED_API_URL, + Collections.singletonMap("Content-Type", + Collections.singletonList("application/json")), + "{\"platform\":\"\",\"version\":0}".getBytes(StandardCharsets.UTF_8)) + .responseBody()); } catch (final JsonParserException e) { throw new ParsingException("Could not parse Bandcamp featured API response", e); }