Add channels (artists) to search results
This commit is contained in:
parent
794ca5eeae
commit
d05b14ae48
3 changed files with 65 additions and 13 deletions
|
@ -0,0 +1,46 @@
|
||||||
|
package org.schabi.newpipe.extractor.services.bandcamp.extractors;
|
||||||
|
|
||||||
|
import org.schabi.newpipe.extractor.channel.ChannelInfoItemExtractor;
|
||||||
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
|
|
||||||
|
public class BandcampChannelInfoItemExtractor implements ChannelInfoItemExtractor {
|
||||||
|
|
||||||
|
private String name, url, image, location;
|
||||||
|
|
||||||
|
public BandcampChannelInfoItemExtractor(String name, String url, String image, String location) {
|
||||||
|
this.name = name;
|
||||||
|
this.url = url;
|
||||||
|
this.image = image;
|
||||||
|
this.location = location;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() throws ParsingException {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUrl() throws ParsingException {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getThumbnailUrl() throws ParsingException {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDescription() {
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getSubscriberCount() {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getStreamCount() {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
|
@ -69,16 +69,7 @@ public class BandcampSearchExtractor extends SearchExtractor {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "ARTIST":
|
case "ARTIST":
|
||||||
String id = resultInfo.getElementsByClass("itemurl").first()
|
collector.commit(new BandcampChannelInfoItemExtractor(heading, url, image, subhead));
|
||||||
.getElementsByTag("a").first()
|
|
||||||
.attr("href") // the link contains the id
|
|
||||||
.split("search_item_id=")
|
|
||||||
[1] // the number is behind its name
|
|
||||||
.split("&") // there is another attribute behind the name
|
|
||||||
[0]; // get the number
|
|
||||||
|
|
||||||
//searchResults.add(new Artist(heading, Long.parseLong(id), image, subhead));
|
|
||||||
//collector.commit Channel with heading, id, image, subhead
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "ALBUM":
|
case "ALBUM":
|
||||||
|
|
|
@ -5,10 +5,13 @@ package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.schabi.newpipe.DownloaderTestImpl;
|
import org.schabi.newpipe.DownloaderTestImpl;
|
||||||
|
import org.schabi.newpipe.extractor.Extractor;
|
||||||
import org.schabi.newpipe.extractor.InfoItem;
|
import org.schabi.newpipe.extractor.InfoItem;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor;
|
import org.schabi.newpipe.extractor.ListExtractor;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
|
import org.schabi.newpipe.extractor.search.SearchExtractor;
|
||||||
|
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampChannelInfoItemExtractor;
|
||||||
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampSearchExtractor;
|
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampSearchExtractor;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -36,8 +39,7 @@ public class BandcampSearchExtractorTest {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testBestFriendsBasement() throws ExtractionException, IOException {
|
public void testBestFriendsBasement() throws ExtractionException, IOException {
|
||||||
extractor = (BandcampSearchExtractor) bandcamp
|
SearchExtractor extractor = bandcamp.getSearchExtractor("best friend's basement");
|
||||||
.getSearchExtractor("best friend's basement");
|
|
||||||
|
|
||||||
ListExtractor.InfoItemsPage<InfoItem> page = extractor.getInitialPage();
|
ListExtractor.InfoItemsPage<InfoItem> page = extractor.getInitialPage();
|
||||||
InfoItem bestFriendsBasement = page.getItems().get(0);
|
InfoItem bestFriendsBasement = page.getItems().get(0);
|
||||||
|
@ -47,9 +49,22 @@ public class BandcampSearchExtractorTest {
|
||||||
assertTrue(bestFriendsBasement.getThumbnailUrl().endsWith(".jpg"));
|
assertTrue(bestFriendsBasement.getThumbnailUrl().endsWith(".jpg"));
|
||||||
assertTrue(bestFriendsBasement.getThumbnailUrl().contains("f4.bcbits.com/img/"));
|
assertTrue(bestFriendsBasement.getThumbnailUrl().contains("f4.bcbits.com/img/"));
|
||||||
assertEquals(InfoItem.InfoType.STREAM, bestFriendsBasement.getInfoType());
|
assertEquals(InfoItem.InfoType.STREAM, bestFriendsBasement.getInfoType());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests whether searching bandcamp for "C418" returns the artist's profile
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testC418() throws ExtractionException, IOException {
|
||||||
|
SearchExtractor extractor = bandcamp.getSearchExtractor("C418");
|
||||||
|
InfoItem c418 = extractor.getInitialPage()
|
||||||
|
.getItems().get(0);
|
||||||
|
|
||||||
|
// C418's artist profile should be the first result, no?
|
||||||
|
assertEquals("C418", c418.getName());
|
||||||
|
assertTrue(c418.getThumbnailUrl().endsWith(".jpg"));
|
||||||
|
assertTrue(c418.getThumbnailUrl().contains("f4.bcbits.com/img/"));
|
||||||
|
assertEquals("https://c418.bandcamp.com", c418.getUrl());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue