正在查看: Kreate v1.5.0 应用的 YoutubeSubscriptionExtractor.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Kreate v1.5.0 应用的 YoutubeSubscriptionExtractor.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.schabi.newpipe.extractor.services.youtube.extractors;
import com.grack.nanojson.JsonArray;
import com.grack.nanojson.JsonObject;
import com.grack.nanojson.JsonParser;
import com.grack.nanojson.JsonParserException;
import j$.io.BufferedReaderRetargetClass;
import j$.util.Objects;
import j$.util.function.Function;
import j$.util.function.Predicate;
import j$.util.stream.Collectors;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UncheckedIOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import javax.annotation.Nonnull;
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.extractor.services.youtube.YoutubeService;
import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor;
import org.schabi.newpipe.extractor.subscription.SubscriptionItem;
import org.schabi.newpipe.extractor.utils.Utils;
public class YoutubeSubscriptionExtractor extends SubscriptionExtractor {
private static final String BASE_CHANNEL_URL = "https://www.youtube.com/channel/";
public YoutubeSubscriptionExtractor(YoutubeService youtubeService) {
super(youtubeService, Collections.singletonList(SubscriptionExtractor.ContentSource.INPUT_STREAM));
}
@Override
public String getRelatedUrl() {
return "https://takeout.google.com/takeout/custom/youtube";
}
@Override
public List<SubscriptionItem> fromInputStream(@Nonnull InputStream inputStream) throws ExtractionException {
return fromJsonInputStream(inputStream);
}
@Override
public List<SubscriptionItem> fromInputStream(@Nonnull InputStream inputStream, @Nonnull String str) throws ExtractionException {
str.hashCode();
switch (str) {
case "text/comma-separated-values":
case "text/csv":
case "csv":
return fromCsvInputStream(inputStream);
case "application/zip":
case "zip":
return fromZipInputStream(inputStream);
case "application/json":
case "json":
return fromJsonInputStream(inputStream);
default:
throw new SubscriptionExtractor.InvalidSourceException("Unsupported content type: " + str);
}
}
public List<SubscriptionItem> fromJsonInputStream(@Nonnull InputStream inputStream) throws ExtractionException {
try {
JsonArray jsonArray = (JsonArray) JsonParser.array().from(inputStream);
ArrayList arrayList = new ArrayList();
Iterator it = jsonArray.iterator();
boolean z = false;
while (it.hasNext()) {
Object next = it.next();
if (next instanceof JsonObject) {
JsonObject object = ((JsonObject) next).getObject("snippet");
String string = object.getObject("resourceId").getString("channelId", "");
if (string.length() == 24) {
arrayList.add(new SubscriptionItem(this.service.getServiceId(), BASE_CHANNEL_URL + string, object.getString("title", "")));
}
}
z = true;
}
if (z && arrayList.isEmpty()) {
throw new SubscriptionExtractor.InvalidSourceException("Found only invalid channel ids");
}
return arrayList;
} catch (JsonParserException e) {
throw new SubscriptionExtractor.InvalidSourceException("Invalid json input stream", e);
}
}
public List<SubscriptionItem> fromZipInputStream(@Nonnull InputStream inputStream) throws ExtractionException {
try {
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
while (true) {
try {
ZipEntry nextEntry = zipInputStream.getNextEntry();
if (nextEntry != null) {
if (nextEntry.getName().toLowerCase().endsWith(".csv")) {
try {
List<SubscriptionItem> fromCsvInputStream = fromCsvInputStream(zipInputStream);
if (!fromCsvInputStream.isEmpty()) {
zipInputStream.close();
return fromCsvInputStream;
}
} catch (ExtractionException unused) {
continue;
}
}
} else {
zipInputStream.close();
throw new SubscriptionExtractor.InvalidSourceException("Unable to find a valid subscriptions.csv file (try extracting and selecting the csv file)");
}
} finally {
}
}
} catch (IOException e) {
throw new SubscriptionExtractor.InvalidSourceException("Error reading contents of zip file", e);
}
}
public List<SubscriptionItem> fromCsvInputStream(@Nonnull InputStream inputStream) throws ExtractionException {
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
try {
List<SubscriptionItem> list = (List) BufferedReaderRetargetClass.lines(bufferedReader).skip(1L).map(new Function() {
@Override
public Function andThen(Function function) {
return Function.-CC.$default$andThen(this, function);
}
@Override
public final Object apply(Object obj) {
String[] split;
split = ((String) obj).split(",");
return split;
}
@Override
public java.util.function.Function compose(java.util.function.Function function) {
return Function.-CC.$default$compose(this, function);
}
}).filter(new Predicate() {
@Override
public Predicate and(Predicate predicate) {
return Predicate.-CC.$default$and(this, predicate);
}
@Override
public java.util.function.Predicate negate() {
return Predicate.-CC.$default$negate(this);
}
@Override
public java.util.function.Predicate or(java.util.function.Predicate predicate) {
return Predicate.-CC.$default$or(this, predicate);
}
@Override
public final boolean test(Object obj) {
return YoutubeSubscriptionExtractor.lambda$fromCsvInputStream$1((String[]) obj);
}
}).map(new java.util.function.Function() {
@Override
public java.util.function.Function andThen(java.util.function.Function function) {
return Function.-CC.$default$andThen(this, function);
}
@Override
public final Object apply(Object obj) {
return YoutubeSubscriptionExtractor.this.m853x2cc59c7a((String[]) obj);
}
@Override
public java.util.function.Function compose(java.util.function.Function function) {
return Function.-CC.$default$compose(this, function);
}
}).filter(new java.util.function.Predicate() {
@Override
public java.util.function.Predicate and(java.util.function.Predicate predicate) {
return Predicate.-CC.$default$and(this, predicate);
}
@Override
public java.util.function.Predicate negate() {
return Predicate.-CC.$default$negate(this);
}
@Override
public java.util.function.Predicate or(java.util.function.Predicate predicate) {
return Predicate.-CC.$default$or(this, predicate);
}
@Override
public final boolean test(Object obj) {
return Objects.nonNull((SubscriptionItem) obj);
}
}).collect(Collectors.toUnmodifiableList());
bufferedReader.close();
return list;
} catch (Throwable th) {
try {
bufferedReader.close();
} catch (Throwable th2) {
th.addSuppressed(th2);
}
throw th;
}
} catch (IOException | UncheckedIOException e) {
throw new SubscriptionExtractor.InvalidSourceException("Error reading CSV file", e);
}
}
static boolean lambda$fromCsvInputStream$1(String[] strArr) {
return strArr.length >= 3;
}
SubscriptionItem m853x2cc59c7a(String[] strArr) {
String replace = strArr[1].replace(Utils.HTTP, Utils.HTTPS);
if (replace.startsWith(BASE_CHANNEL_URL)) {
return new SubscriptionItem(this.service.getServiceId(), replace, strArr[2]);
}
return null;
}
}