正在查看: Kreate v1.5.0 应用的 BandcampCommentsExtractor.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Kreate v1.5.0 应用的 BandcampCommentsExtractor.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.schabi.newpipe.extractor.services.bandcamp.extractors;
import androidx.core.graphics.TypefaceCompat$;
import com.grack.nanojson.JsonArray;
import com.grack.nanojson.JsonObject;
import com.grack.nanojson.JsonWriter;
import j$.util.Collection;
import j$.util.function.BiFunction;
import j$.util.function.Function;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.function.BiFunction;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.Supplier;
import javax.annotation.Nonnull;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.schabi.newpipe.extractor.ListExtractor;
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.CommentsInfoItemExtractor;
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.exceptions.ParsingException;
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
import org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper;
import org.schabi.newpipe.extractor.utils.JsonUtils;
public class BandcampCommentsExtractor extends CommentsExtractor {
private static final String REVIEWS_API_URL = "https://bandcamp.com/api/tralbumcollectors/2/reviews";
private Document document;
static String lambda$getNextPageToken$1(String str, String str2) {
return str2;
}
public BandcampCommentsExtractor(StreamingService streamingService, ListLinkHandler listLinkHandler) {
super(streamingService, listLinkHandler);
}
@Override
public void onFetchPage(@Nonnull Downloader downloader) throws IOException, ExtractionException {
this.document = Jsoup.parse(downloader.get(getLinkHandler().getUrl()).responseBody());
}
@Override
@Nonnull
public ListExtractor.InfoItemsPage<CommentsInfoItem> getInitialPage() throws IOException, ExtractionException {
CommentsInfoItemsCollector commentsInfoItemsCollector = new CommentsInfoItemsCollector(getServiceId());
JsonObject jsonObject = JsonUtils.toJsonObject(this.document.getElementById("collectors-data").attr("data-blob"));
JsonArray array = jsonObject.getArray("reviews");
Iterator it = array.iterator();
while (it.hasNext()) {
commentsInfoItemsCollector.commit((CommentsInfoItemExtractor) new BandcampCommentsInfoItemExtractor((JsonObject) it.next(), getUrl()));
}
if (!jsonObject.getBoolean("more_reviews_available")) {
return new ListExtractor.InfoItemsPage<>(commentsInfoItemsCollector, null);
}
return new ListExtractor.InfoItemsPage<>(commentsInfoItemsCollector, new Page((List<String>) TypefaceCompat$.ExternalSyntheticBackport0.m(getTrackId(), getNextPageToken(array))));
}
@Override
public ListExtractor.InfoItemsPage<CommentsInfoItem> getPage(Page page) throws IOException, ExtractionException {
CommentsInfoItemsCollector commentsInfoItemsCollector = new CommentsInfoItemsCollector(getServiceId());
List<String> ids = page.getIds();
String str = ids.get(0);
JsonObject fetchReviewsData = fetchReviewsData(str, ids.get(1));
JsonArray array = fetchReviewsData.getArray("results");
Iterator it = array.iterator();
while (it.hasNext()) {
commentsInfoItemsCollector.commit((CommentsInfoItemExtractor) new BandcampCommentsInfoItemExtractor((JsonObject) it.next(), getUrl()));
}
if (!fetchReviewsData.getBoolean("more_available")) {
return new ListExtractor.InfoItemsPage<>(commentsInfoItemsCollector, null);
}
return new ListExtractor.InfoItemsPage<>(commentsInfoItemsCollector, new Page((List<String>) TypefaceCompat$.ExternalSyntheticBackport0.m(str, getNextPageToken(array))));
}
private JsonObject fetchReviewsData(String str, String str2) throws ParsingException {
try {
return JsonUtils.toJsonObject(getDownloader().postWithContentTypeJson(REVIEWS_API_URL, Collections.EMPTY_MAP, JsonWriter.string().object().value("tralbum_type", "t").value("tralbum_id", str).value("token", str2).value(PeertubeParsingHelper.COUNT_KEY, 7).array("exclude_fan_ids").end().end().done().getBytes(StandardCharsets.UTF_8)).responseBody());
} catch (IOException | ReCaptchaException e) {
throw new ParsingException("Could not fetch reviews", e);
}
}
private String getNextPageToken(JsonArray jsonArray) throws ParsingException {
return (String) Collection.-EL.stream(jsonArray).filter(new BandcampCommentsExtractor$$ExternalSyntheticLambda0(JsonObject.class)).map(new BandcampCommentsExtractor$$ExternalSyntheticLambda1(JsonObject.class)).map(new Function() {
@Override
public Function andThen(Function function) {
return Function.-CC.$default$andThen(this, function);
}
@Override
public final Object apply(Object obj) {
String string;
string = ((JsonObject) obj).getString("token");
return string;
}
@Override
public java.util.function.Function compose(java.util.function.Function function) {
return Function.-CC.$default$compose(this, function);
}
}).reduce(new BinaryOperator() {
@Override
public BiFunction andThen(java.util.function.Function function) {
return BiFunction.-CC.$default$andThen(this, function);
}
@Override
public final Object apply(Object obj, Object obj2) {
return BandcampCommentsExtractor.lambda$getNextPageToken$1((String) obj, (String) obj2);
}
}).orElseThrow(new Supplier() {
@Override
public final Object get() {
return BandcampCommentsExtractor.lambda$getNextPageToken$2();
}
});
}
static ParsingException lambda$getNextPageToken$2() {
return new ParsingException("Could not get token");
}
private String getTrackId() throws ParsingException {
return Long.toString(JsonUtils.toJsonObject(this.document.selectFirst("meta[name=bc-page-properties]").attr("content")).getLong("item_id"));
}
@Override
public boolean isCommentsDisabled() throws ExtractionException {
return BandcampExtractorHelper.isRadioUrl(getUrl());
}
}