Skip to content

Commit c07db80

Browse files
committed
Add BASE_URL and BASE_API_URL to BandcampExtractorHelper
1 parent adde433 commit c07db80

9 files changed

Lines changed: 32 additions & 16 deletions

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.Collections;
2020

2121
import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.AUDIO;
22+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL;
2223
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampFeaturedExtractor.FEATURED_API_URL;
2324
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampFeaturedExtractor.KIOSK_FEATURED;
2425
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampRadioExtractor.KIOSK_RADIO;
@@ -32,7 +33,7 @@ public BandcampService(final int id) {
3233

3334
@Override
3435
public String getBaseUrl() {
35-
return "https://bandcamp.com";
36+
return BASE_URL;
3637
}
3738

3839
@Override
@@ -113,7 +114,7 @@ public PlaylistExtractor getPlaylistExtractor(final ListLinkHandler linkHandler)
113114

114115
@Override
115116
public StreamExtractor getStreamExtractor(final LinkHandler linkHandler) {
116-
if (linkHandler.getUrl().matches("https?://bandcamp\\.com/\\?show=\\d+"))
117+
if (BandcampExtractorHelper.isRadioUrl(linkHandler.getUrl()))
117118
return new BandcampRadioStreamExtractor(this, linkHandler);
118119
else
119120
return new BandcampStreamExtractor(this, linkHandler);

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampExtractorHelper.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@
2020
import java.time.format.DateTimeFormatter;
2121
import java.util.ArrayList;
2222
import java.util.Arrays;
23+
import java.util.List;
2324
import java.util.Locale;
2425

2526
public class BandcampExtractorHelper {
2627

28+
public static final String BASE_URL = "https://bandcamp.com";
29+
public static final String BASE_API_URL = BASE_URL + "/api";
30+
2731
/**
2832
* <p>Get an attribute of a web page as JSON
2933
*
@@ -50,11 +54,12 @@ public static String getStreamUrlFromIds(final long bandId, final long itemId, f
5054

5155
try {
5256
final String jsonString = NewPipe.getDownloader().get(
53-
"https://bandcamp.com/api/mobile/22/tralbum_details?band_id=" + bandId
57+
BASE_API_URL + "/mobile/22/tralbum_details?band_id=" + bandId
5458
+ "&tralbum_id=" + itemId + "&tralbum_type=" + itemType.charAt(0))
5559
.responseBody();
5660

57-
return JsonParser.object().from(jsonString).getString("bandcamp_url").replace("http://", "https://");
61+
return JsonParser.object().from(jsonString)
62+
.getString("bandcamp_url").replace("http://", "https://");
5863

5964
} catch (final JsonParserException | ReCaptchaException | IOException e) {
6065
throw new ParsingException("Ids could not be translated to URL", e);
@@ -70,7 +75,7 @@ public static String smartConcatenate(final String[] strings, final String comma
7075
final StringBuilder result = new StringBuilder();
7176

7277
// Remove empty strings
73-
final ArrayList<String> list = new ArrayList<>(Arrays.asList(strings));
78+
final List<String> list = new ArrayList<>(Arrays.asList(strings));
7479
for (int i = list.size() - 1; i >= 0; i--) {
7580
if (Utils.isNullOrEmpty(list.get(i)) || list.get(i).equals("null")) {
7681
list.remove(i);
@@ -101,7 +106,7 @@ public static JsonObject getArtistDetails(String id) throws ParsingException {
101106
return
102107
JsonParser.object().from(
103108
NewPipe.getDownloader().post(
104-
"https://bandcamp.com/api/mobile/22/band_details",
109+
BASE_API_URL + "/mobile/22/band_details",
105110
null,
106111
JsonWriter.string()
107112
.object()
@@ -165,6 +170,5 @@ static DateWrapper parseDate(final String textDate) throws ParsingException {
165170
} catch (final DateTimeException e) {
166171
throw new ParsingException("Could not parse date '" + textDate + "'", e);
167172
}
168-
169173
}
170174
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampFeaturedExtractor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@
1919
import javax.annotation.Nonnull;
2020
import java.io.IOException;
2121

22+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_API_URL;
23+
2224
public class BandcampFeaturedExtractor extends KioskExtractor<PlaylistInfoItem> {
2325

2426
public static final String KIOSK_FEATURED = "Featured";
25-
public static final String FEATURED_API_URL = "https://bandcamp.com/api/mobile/24/bootstrap_data";
27+
public static final String FEATURED_API_URL = BASE_API_URL + "/mobile/24/bootstrap_data";
2628

2729
private JsonObject json;
2830

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioExtractor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@
1919
import javax.annotation.Nonnull;
2020
import java.io.IOException;
2121

22+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_API_URL;
23+
2224
public class BandcampRadioExtractor extends KioskExtractor<StreamInfoItem> {
2325

2426
public static final String KIOSK_RADIO = "Radio";
25-
public static final String RADIO_API_URL = "https://bandcamp.com/api/bcweekly/1/list";
27+
public static final String RADIO_API_URL = BASE_API_URL + "/bcweekly/1/list";
2628

2729
private JsonObject json = null;
2830

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioInfoItemExtractor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import javax.annotation.Nullable;
1212

13+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL;
1314
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl;
1415

1516
public class BandcampRadioInfoItemExtractor implements StreamInfoItemExtractor {
@@ -49,7 +50,7 @@ public String getName() throws ParsingException {
4950

5051
@Override
5152
public String getUrl() {
52-
return "https://bandcamp.com/?show=" + show.getInt("id");
53+
return BASE_URL + "/?show=" + show.getInt("id");
5354
}
5455

5556
@Override

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioStreamExtractor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import java.util.Collections;
2424
import java.util.List;
2525

26-
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl;
26+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.*;
2727

2828
public class BandcampRadioStreamExtractor extends BandcampStreamExtractor {
2929

@@ -36,7 +36,7 @@ public BandcampRadioStreamExtractor(final StreamingService service, final LinkHa
3636
static JsonObject query(final int id) throws ParsingException {
3737
try {
3838
return JsonParser.object().from(
39-
NewPipe.getDownloader().get("https://bandcamp.com/api/bcweekly/1/get?id=" + id).responseBody()
39+
NewPipe.getDownloader().get(BASE_API_URL + "/bcweekly/1/get?id=" + id).responseBody()
4040
);
4141
} catch (final IOException | ReCaptchaException | JsonParserException e) {
4242
throw new ParsingException("could not get show data", e);
@@ -88,7 +88,7 @@ public String getThumbnailUrl() throws ParsingException {
8888
@Nonnull
8989
@Override
9090
public String getUploaderAvatarUrl() {
91-
return "https://bandcamp.com/img/buttons/bandcamp-button-circle-whitecolor-512.png";
91+
return BASE_URL + "/img/buttons/bandcamp-button-circle-whitecolor-512.png";
9292
}
9393

9494
@Nonnull

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampSuggestionExtractor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
import java.util.Collections;
1919
import java.util.List;
2020

21+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_API_URL;
22+
2123
public class BandcampSuggestionExtractor extends SuggestionExtractor {
2224

23-
private static final String AUTOCOMPLETE_URL = "https://bandcamp.com/api/fuzzysearch/1/autocomplete?q=";
25+
private static final String AUTOCOMPLETE_URL = BASE_API_URL + "/fuzzysearch/1/autocomplete?q=";
2426
public BandcampSuggestionExtractor(final StreamingService service) {
2527
super(service);
2628
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampSearchQueryHandlerFactory.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import java.net.URLEncoder;
1010
import java.util.List;
1111

12+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL;
13+
1214
public class BandcampSearchQueryHandlerFactory extends SearchQueryHandlerFactory {
1315

1416

@@ -17,7 +19,7 @@ public String getUrl(final String query, final List<String> contentFilter, final
1719
throws ParsingException {
1820
try {
1921

20-
return "https://bandcamp.com/search?q=" +
22+
return BASE_URL + "/search?q=" +
2123
URLEncoder.encode(query, "UTF-8")
2224
+ "&page=1";
2325

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampStreamLinkHandlerFactory.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory;
77
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper;
88

9+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL;
10+
911
/**
1012
* <p>Tracks don't have standalone ids, they are always in combination with the band id.
1113
* That's why id = url.</p>
@@ -34,7 +36,7 @@ public String getId(final String url) throws ParsingException {
3436
@Override
3537
public String getUrl(final String input) {
3638
if (input.matches("\\d+")) {
37-
return "https://bandcamp.com/?show=" + input;
39+
return BASE_URL + "/?show=" + input;
3840
} else {
3941
return input;
4042
}

0 commit comments

Comments
 (0)