Skip to content

Commit c70bb83

Browse files
committed
[Bandcamp] Implement PlaylistExtractor.getDescsription()
1 parent ca0ce00 commit c70bb83

2 files changed

Lines changed: 36 additions & 1 deletion

File tree

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

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
import org.jsoup.Jsoup;
1313
import org.jsoup.nodes.Document;
14+
import org.jsoup.nodes.Element;
15+
import org.jsoup.select.Elements;
1416
import org.schabi.newpipe.extractor.Page;
1517
import org.schabi.newpipe.extractor.StreamingService;
1618
import org.schabi.newpipe.extractor.downloader.Downloader;
@@ -25,6 +27,7 @@
2527
import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector;
2628

2729
import java.io.IOException;
30+
import java.util.Objects;
2831

2932
import javax.annotation.Nonnull;
3033

@@ -112,7 +115,27 @@ public long getStreamCount() {
112115
@Nonnull
113116
@Override
114117
public Description getDescription() throws ParsingException {
115-
return Description.EMPTY_DESCRIPTION;
118+
final Element tInfo = document.getElementById("trackInfo");
119+
if (tInfo == null) {
120+
throw new ParsingException("Could not find trackInfo in document");
121+
}
122+
final Elements about = tInfo.getElementsByClass("tralbum-about");
123+
final Elements credits = tInfo.getElementsByClass("tralbum-credits");
124+
final Element license = document.getElementById("license");
125+
if (about.isEmpty() && credits.isEmpty() && license == null) {
126+
return Description.EMPTY_DESCRIPTION;
127+
}
128+
final StringBuilder sb = new StringBuilder();
129+
if (!about.isEmpty()) {
130+
sb.append(Objects.requireNonNull(about.first()).html());
131+
}
132+
if (!credits.isEmpty()) {
133+
sb.append(Objects.requireNonNull(credits.first()).html());
134+
}
135+
if (license != null) {
136+
sb.append(license.html());
137+
}
138+
return new Description(sb.toString(), Description.HTML);
116139
}
117140

118141
@Nonnull

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@
1313
import org.schabi.newpipe.extractor.playlist.PlaylistExtractor;
1414
import org.schabi.newpipe.extractor.services.BasePlaylistExtractorTest;
1515
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampPlaylistExtractor;
16+
import org.schabi.newpipe.extractor.stream.Description;
1617
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
1718

1819
import java.io.IOException;
1920
import java.util.List;
2021

2122
import static org.junit.jupiter.api.Assertions.*;
23+
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertContains;
2224
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
2325

2426
/**
@@ -135,6 +137,16 @@ public void testStreamCount() throws ParsingException {
135137
assertEquals(5, extractor.getStreamCount());
136138
}
137139

140+
@Test
141+
public void testDescription() throws ParsingException {
142+
final Description description = extractor.getDescription();
143+
assertNotEquals(Description.EMPTY_DESCRIPTION, description);
144+
assertContains("Artwork by Shona Radcliffe", description.getContent()); // about
145+
assertContains("All tracks written, produced and recorded by Mac Benson",
146+
description.getContent()); // credits
147+
assertContains("all rights reserved", description.getContent()); // license
148+
}
149+
138150
@Override
139151
public void testUploaderVerified() throws Exception {
140152
assertFalse(extractor.isUploaderVerified());

0 commit comments

Comments
 (0)