diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampChannelExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampChannelExtractor.java index 04bd774a1..54c25cd29 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampChannelExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampChannelExtractor.java @@ -18,6 +18,7 @@ import org.schabi.newpipe.extractor.exceptions.ReCaptchaException; import org.schabi.newpipe.extractor.linkhandler.ChannelTabs; import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler; import org.schabi.newpipe.extractor.linkhandler.ReadyChannelTabListLinkHandler; +import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampChannelTabLinkHandlerFactory; import java.io.IOException; import java.util.ArrayList; @@ -116,14 +117,16 @@ public class BandcampChannelExtractor extends ChannelExtractor { if (discography.stream().anyMatch(o -> ( (JsonObject) o).getString("item_type").equals("track"))) { - tabs.add(new ReadyChannelTabListLinkHandler(getUrl(), getId(), - ChannelTabs.TRACKS, builder)); + tabs.add(new ReadyChannelTabListLinkHandler(getUrl() + + BandcampChannelTabLinkHandlerFactory.getUrlSuffix(ChannelTabs.TRACKS), + getId(), ChannelTabs.TRACKS, builder)); } if (discography.stream().anyMatch(o -> ( (JsonObject) o).getString("item_type").equals("album"))) { - tabs.add(new ReadyChannelTabListLinkHandler(getUrl(), getId(), - ChannelTabs.ALBUMS, builder)); + tabs.add(new ReadyChannelTabListLinkHandler(getUrl() + + BandcampChannelTabLinkHandlerFactory.getUrlSuffix(ChannelTabs.ALBUMS), + getId(), ChannelTabs.ALBUMS, builder)); } return tabs; diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampChannelTabLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampChannelTabLinkHandlerFactory.java index 5ccc4f141..24f9a8fbc 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampChannelTabLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampChannelTabLinkHandlerFactory.java @@ -10,10 +10,6 @@ public final class BandcampChannelTabLinkHandlerFactory extends ListLinkHandlerF private static final BandcampChannelTabLinkHandlerFactory INSTANCE = new BandcampChannelTabLinkHandlerFactory(); - // This is not an actual page on the Bandcamp website, but it auto-redirects - // to the main page and we need a unique URL for the album tab - public static final String URL_SUFFIX = "/album"; - private BandcampChannelTabLinkHandlerFactory() { } @@ -21,6 +17,27 @@ public final class BandcampChannelTabLinkHandlerFactory extends ListLinkHandlerF return INSTANCE; } + /** + * Get the tab's URL suffix + *
+ * These URLs dont actually exist on the Bandcamp website as both albums and tracks
+ * are listed on the main page, but they redirect to the main page and we need a
+ * unique URL for each tab.
+ *
+ * @param tab Tab value
+ * @return URL suffix
+ * @throws ParsingException if the tab is not supported
+ */
+ public static String getUrlSuffix(final String tab) throws ParsingException {
+ switch (tab) {
+ case ChannelTabs.TRACKS:
+ return "/track";
+ case ChannelTabs.ALBUMS:
+ return "/album";
+ }
+ throw new ParsingException("tab " + tab + " not supported");
+ }
+
@Override
public String getId(final String url) throws ParsingException {
return BandcampChannelLinkHandlerFactory.getInstance().getId(url);
@@ -29,12 +46,8 @@ public final class BandcampChannelTabLinkHandlerFactory extends ListLinkHandlerF
@Override
public String getUrl(final String id, final List