package org.schabi.newpipe.extractor.search; import org.schabi.newpipe.extractor.InfoItem; import org.schabi.newpipe.extractor.ListExtractor; import org.schabi.newpipe.extractor.ListInfo; import org.schabi.newpipe.extractor.MetaInfo; import org.schabi.newpipe.extractor.Page; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler; import org.schabi.newpipe.extractor.utils.ExtractorHelper; import java.io.IOException; import java.util.List; import javax.annotation.Nonnull; public class SearchInfo extends ListInfo { private final String searchString; private String searchSuggestion; private boolean isCorrectedSearch; private List metaInfo; public SearchInfo(final int serviceId, final SearchQueryHandler qIHandler, final String searchString) { super(serviceId, qIHandler, "Search"); this.searchString = searchString; } public static SearchInfo getInfo(final StreamingService service, final SearchQueryHandler searchQuery) throws ExtractionException, IOException { final SearchExtractor extractor = service.getSearchExtractor(searchQuery); extractor.fetchPage(); return getInfo(extractor); } public static SearchInfo getInfo(final SearchExtractor extractor) throws ExtractionException, IOException { final SearchInfo info = new SearchInfo( extractor.getServiceId(), extractor.getLinkHandler(), extractor.getSearchString()); try { info.setOriginalUrl(extractor.getOriginalUrl()); } catch (final Exception e) { info.addError(e); } try { info.setSearchSuggestion(extractor.getSearchSuggestion()); } catch (final Exception e) { info.addError(e); } try { info.setIsCorrectedSearch(extractor.isCorrectedSearch()); } catch (final Exception e) { info.addError(e); } try { info.setMetaInfo(extractor.getMetaInfo()); } catch (final Exception e) { info.addError(e); } final ListExtractor.InfoItemsPage page = ExtractorHelper.getItemsPageOrLogError(info, extractor); info.setRelatedItems(page.getItems()); info.setNextPage(page.getNextPage()); return info; } public static ListExtractor.InfoItemsPage getMoreItems(final StreamingService service, final SearchQueryHandler query, final Page page) throws IOException, ExtractionException { return service.getSearchExtractor(query).getPage(page); } // Getter public String getSearchString() { return this.searchString; } public String getSearchSuggestion() { return this.searchSuggestion; } public boolean isCorrectedSearch() { return this.isCorrectedSearch; } public void setIsCorrectedSearch(final boolean isCorrectedSearch) { this.isCorrectedSearch = isCorrectedSearch; } public void setSearchSuggestion(final String searchSuggestion) { this.searchSuggestion = searchSuggestion; } @Nonnull public List getMetaInfo() { return metaInfo; } public void setMetaInfo(@Nonnull final List metaInfo) { this.metaInfo = metaInfo; } }