Add type 1 support - part 1

pull/5/head
FongMi 4 years ago
parent 860c24a01e
commit 31164a31f2
  1. 5
      app/src/main/java/com/fongmi/bear/ApiConfig.java
  2. 2
      app/src/main/java/com/fongmi/bear/bean/Result.java
  3. 82
      app/src/main/java/com/fongmi/bear/model/SiteViewModel.java
  4. 14
      app/src/main/java/com/fongmi/bear/net/OKHttp.java

@ -29,7 +29,6 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import okhttp3.Request;
import okhttp3.Response;
public class ApiConfig {
@ -91,7 +90,7 @@ public class ApiConfig {
private void getWebConfig(String url, Callback callback) {
try {
Response response = OKHttp.get().client().newCall(new Request.Builder().url(url).build()).execute();
Response response = OKHttp.newCall(url).execute();
parseConfig(new Gson().fromJson(response.body().string(), JsonObject.class), callback);
} catch (IOException e) {
handler.post(() -> callback.error(R.string.error_config_get));
@ -134,7 +133,7 @@ public class ApiConfig {
if (spider.startsWith("file://")) {
loader.load(FileUtil.getLocal(spider));
} else if (Patterns.WEB_URL.matcher(spider).matches()) {
Response response = OKHttp.get().client().newCall(new Request.Builder().url(spider).build()).execute();
Response response = OKHttp.newCall(spider).execute();
FileUtil.write(FileUtil.getJar(), response.body().bytes());
loader.load(FileUtil.getJar());
}

@ -72,7 +72,7 @@ public class Result {
@Override
public LinkedHashMap<String, List<Filter>> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
LinkedHashMap<String, List<Filter>> filterMap = new LinkedHashMap<>();
JsonObject filters = (JsonObject) json.getAsJsonObject();
JsonObject filters = json.getAsJsonObject();
if (filters == null) return filterMap;
for (String key : filters.keySet()) {
List<Filter> items = new ArrayList<>();

@ -7,6 +7,7 @@ import com.fongmi.bear.ApiConfig;
import com.fongmi.bear.bean.Result;
import com.fongmi.bear.bean.Site;
import com.fongmi.bear.bean.Vod;
import com.fongmi.bear.net.OKHttp;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderDebug;
import com.google.gson.JsonObject;
@ -20,6 +21,9 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import okhttp3.HttpUrl;
import okhttp3.Response;
public class SiteViewModel extends ViewModel {
public MutableLiveData<JsonObject> player;
@ -38,39 +42,75 @@ public class SiteViewModel extends ViewModel {
public void homeContent() {
Site home = ApiConfig.get().getHome();
postResult(() -> {
Spider spider = ApiConfig.get().getCSP(home);
String homeContent = spider.homeContent(false);
SpiderDebug.json(homeContent);
Result result = Result.objectFrom(homeContent);
if (result.getList().size() > 0) return result;
String homeVideoContent = spider.homeVideoContent();
SpiderDebug.json(homeVideoContent);
result.setList(Result.objectFrom(homeVideoContent).getList());
return result;
if (home.getType() == 3) {
Spider spider = ApiConfig.get().getCSP(home);
String homeContent = spider.homeContent(false);
SpiderDebug.json(homeContent);
Result result = Result.objectFrom(homeContent);
if (result.getList().size() > 0) return result;
String homeVideoContent = spider.homeVideoContent();
SpiderDebug.json(homeVideoContent);
result.setList(Result.objectFrom(homeVideoContent).getList());
return result;
} else {
Response response = OKHttp.newCall(home.getApi()).execute();
if (home.getType() == 1) {
String homeContent = response.body().string();
SpiderDebug.json(homeContent);
return Result.objectFrom(homeContent);
}
return new Result();
}
});
}
public void categoryContent(String tid, String page, boolean filter, HashMap<String, String> extend) {
Site home = ApiConfig.get().getHome();
postResult(() -> {
Spider spider = ApiConfig.get().getCSP(home);
String categoryContent = spider.categoryContent(tid, page, filter, extend);
SpiderDebug.json(categoryContent);
return Result.objectFrom(categoryContent);
if (home.getType() == 3) {
Spider spider = ApiConfig.get().getCSP(home);
String categoryContent = spider.categoryContent(tid, page, filter, extend);
SpiderDebug.json(categoryContent);
return Result.objectFrom(categoryContent);
} else {
HttpUrl url = HttpUrl.parse(home.getApi()).newBuilder().addQueryParameter("ac", home.getType() == 0 ? "videolist" : "detail").addQueryParameter("t", tid).addQueryParameter("pg", page).build();
Response response = OKHttp.newCall(url).execute();
if (home.getType() == 1) {
String categoryContent = response.body().string();
SpiderDebug.json(categoryContent);
return Result.objectFrom(categoryContent);
}
return new Result();
}
});
}
public void detailContent(String id) {
Site home = ApiConfig.get().getHome();
postResult(() -> {
Spider spider = ApiConfig.get().getCSP(home);
String detailContent = spider.detailContent(List.of(id));
SpiderDebug.json(detailContent);
Result result = Result.objectFrom(detailContent);
if (result.getList().isEmpty()) return result;
Vod vod = result.getList().get(0);
vod.setVodFlags(getVodFlags(vod));
return result;
if (home.getType() == 3) {
Spider spider = ApiConfig.get().getCSP(home);
String detailContent = spider.detailContent(List.of(id));
SpiderDebug.json(detailContent);
Result result = Result.objectFrom(detailContent);
if (result.getList().isEmpty()) return result;
Vod vod = result.getList().get(0);
vod.setVodFlags(getVodFlags(vod));
return result;
} else {
HttpUrl url = HttpUrl.parse(home.getApi()).newBuilder().addQueryParameter("ac", home.getType() == 0 ? "videolist" : "detail").addQueryParameter("ids", id).build();
Response response = OKHttp.newCall(url).execute();
if (home.getType() == 1) {
String detailContent = response.body().string();
SpiderDebug.json(detailContent);
Result result = Result.objectFrom(detailContent);
if (result.getList().isEmpty()) return result;
Vod vod = result.getList().get(0);
vod.setVodFlags(getVodFlags(vod));
return result;
}
}
return new Result();
});
}

@ -2,7 +2,10 @@ package com.fongmi.bear.net;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
public class OKHttp {
@ -12,7 +15,7 @@ public class OKHttp {
static volatile OKHttp INSTANCE = new OKHttp();
}
public static OKHttp get() {
private static OKHttp get() {
return Loader.INSTANCE;
}
@ -21,10 +24,15 @@ public class OKHttp {
}
private OkHttpClient.Builder getBuilder() {
return new OkHttpClient.Builder().readTimeout(15, TimeUnit.SECONDS).writeTimeout(15, TimeUnit.SECONDS).connectTimeout(15, TimeUnit.SECONDS).retryOnConnectionFailure(true).sslSocketFactory(new SSLSocketFactoryCompat(SSLSocketFactoryCompat.trustAllCert), SSLSocketFactoryCompat.trustAllCert);
return new OkHttpClient.Builder().readTimeout(5, TimeUnit.SECONDS).writeTimeout(5, TimeUnit.SECONDS).connectTimeout(5, TimeUnit.SECONDS).retryOnConnectionFailure(true).sslSocketFactory(new SSLSocketFactoryCompat(SSLSocketFactoryCompat.trustAllCert), SSLSocketFactoryCompat.trustAllCert);
}
public OkHttpClient client() {
private OkHttpClient client() {
return mClient;
}
public static <T> Call newCall(T url) {
if (url instanceof HttpUrl) return get().client().newCall(new Request.Builder().url((HttpUrl) url).build());
else return get().client().newCall(new Request.Builder().url((String) url).build());
}
}

Loading…
Cancel
Save