Skip to content

Commit 4aaab63

Browse files
authored
Merge pull request #1199 from TeamNewPipe/bandcamp-update-artist-detection
[Bandcamp] Update artist page detection
2 parents 9a29f9e + de9fb7c commit 4aaab63

7 files changed

Lines changed: 18 additions & 15 deletions

File tree

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

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -155,25 +155,30 @@ public static String getImageUrl(final long id, final boolean isAlbum) {
155155

156156
/**
157157
* @return <code>true</code> if the given URL looks like it comes from a bandcamp custom domain
158-
* or if it comes from <code>bandcamp.com</code> itself
158+
* or a <code>*.bandcamp.com</code> subdomain
159159
*/
160-
public static boolean isSupportedDomain(final String url) throws ParsingException {
160+
public static boolean isArtistDomain(final String url) throws ParsingException {
161161

162162
// Accept all bandcamp.com URLs
163163
if (url.toLowerCase().matches("https?://.+\\.bandcamp\\.com(/.*)?")) {
164164
return true;
165165
}
166166

167+
// Reject non-artist bandcamp.com URLs
168+
if (url.toLowerCase().matches("https?://bandcamp\\.com(/.*)?")) {
169+
return false;
170+
}
171+
167172
try {
168173
// Test other URLs for whether they contain a footer that links to bandcamp
169174
return Jsoup.parse(NewPipe.getDownloader().get(url).responseBody())
170-
.getElementById("pgFt")
171-
.getElementById("pgFt-inner")
172-
.getElementById("footer-logo-wrapper")
173-
.getElementById("footer-logo")
174-
.getElementsByClass("hiddenAccess")
175-
.text().equals("Bandcamp");
176-
} catch (final NullPointerException e) {
175+
.getElementsByClass("cart-wrapper")
176+
.get(0)
177+
.getElementsByTag("a")
178+
.get(0)
179+
.attr("href")
180+
.equals("https://bandcamp.com/cart");
181+
} catch (final NullPointerException | IndexOutOfBoundsException e) {
177182
return false;
178183
} catch (final IOException | ReCaptchaException e) {
179184
throw new ParsingException("Could not determine whether URL is custom domain "

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public boolean onAcceptUrl(final String url) throws ParsingException {
9090
}
9191

9292
// Test whether domain is supported
93-
return BandcampExtractorHelper.isSupportedDomain(lowercaseUrl);
93+
return BandcampExtractorHelper.isArtistDomain(lowercaseUrl);
9494
}
9595
}
9696
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public boolean onAcceptUrl(final String url) throws ParsingException {
3939
}
4040

4141
// Test whether domain is supported
42-
return BandcampExtractorHelper.isSupportedDomain(url);
42+
return BandcampExtractorHelper.isArtistDomain(url);
4343
}
4444

4545
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,6 @@ public boolean onAcceptUrl(final String url) throws ParsingException {
4848
}
4949

5050
// Test whether domain is supported
51-
return BandcampExtractorHelper.isSupportedDomain(url);
51+
return BandcampExtractorHelper.isArtistDomain(url);
5252
}
5353
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,6 @@ public boolean onAcceptUrl(final String url) throws ParsingException {
7171
}
7272

7373
// Test whether domain is supported
74-
return BandcampExtractorHelper.isSupportedDomain(url);
74+
return BandcampExtractorHelper.isArtistDomain(url);
7575
}
7676
}

extractor/src/test/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampCommentsLinkHandlerFactoryTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,5 @@ public void testAcceptUrl() throws ParsingException {
3939
assertTrue(linkHandler.acceptUrl("http://ZachBenson.Bandcamp.COM/Track/U-I-Tonite/"));
4040
assertTrue(linkHandler.acceptUrl("https://interovgm.bandcamp.com/track/title"));
4141
assertTrue(linkHandler.acceptUrl("https://goodgoodblood-tl.bandcamp.com/track/when-it-all-wakes-up"));
42-
assertTrue(linkHandler.acceptUrl("https://lobstertheremin.com/track/unfinished"));
4342
}
4443
}

extractor/src/test/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampStreamLinkHandlerFactoryTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,5 @@ public void testAcceptUrl() throws ParsingException {
4949
assertTrue(linkHandler.acceptUrl("https://interovgm.bandcamp.com/track/title"));
5050
assertTrue(linkHandler.acceptUrl("http://bandcamP.com/?show=38"));
5151
assertTrue(linkHandler.acceptUrl("https://goodgoodblood-tl.bandcamp.com/track/when-it-all-wakes-up"));
52-
assertTrue(linkHandler.acceptUrl("https://lobstertheremin.com/track/unfinished"));
5352
}
5453
}

0 commit comments

Comments
 (0)