package org.schabi.newpipe.extractor.services.bandcamp.extractors; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.schabi.newpipe.extractor.Page; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.comments.CommentsExtractor; import org.schabi.newpipe.extractor.comments.CommentsInfoItem; import org.schabi.newpipe.extractor.comments.CommentsInfoItemsCollector; import org.schabi.newpipe.extractor.downloader.Downloader; import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler; import javax.annotation.Nonnull; import java.io.IOException; public class BandcampCommentsExtractor extends CommentsExtractor { private Document document; public BandcampCommentsExtractor(final StreamingService service, final ListLinkHandler linkHandler) { super(service, linkHandler); } @Override public void onFetchPage(@Nonnull final Downloader downloader) throws IOException, ExtractionException { document = Jsoup.parse(downloader.get(getLinkHandler().getUrl()).responseBody()); } @Nonnull @Override public InfoItemsPage getInitialPage() throws IOException, ExtractionException { final CommentsInfoItemsCollector collector = new CommentsInfoItemsCollector(getServiceId()); final Elements writings = document.getElementsByClass("writing"); for (final Element writing : writings) { collector.commit(new BandcampCommentsInfoItemExtractor(writing, getUrl())); } return new InfoItemsPage<>(collector, null); } @Override public InfoItemsPage getPage(final Page page) throws IOException, ExtractionException { return null; } }