From 1e23186a4e14d4d3f888497cb8ce50bd9dffafa5 Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 11 Aug 2022 16:13:26 +0800 Subject: [PATCH] Fix no picture at home when site is collection station --- .../android/tv/model/SiteViewModel.java | 45 ++++++++++++------- .../com/fongmi/android/tv/net/OKHttp.java | 13 ++++++ 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index b0aa902bd..917b726e5 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -1,5 +1,7 @@ package com.fongmi.android.tv.model; +import android.text.TextUtils; + import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; @@ -12,6 +14,7 @@ import com.fongmi.android.tv.utils.Utils; import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.SpiderDebug; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.concurrent.Callable; @@ -19,8 +22,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import okhttp3.HttpUrl; - public class SiteViewModel extends ViewModel { public MutableLiveData result; @@ -52,8 +53,17 @@ public class SiteViewModel extends ViewModel { } else { String body = OKHttp.newCall(home.getApi()).execute().body().string(); SpiderDebug.log(body); - if (home.getType() == 0) return Result.fromXml(body); - else return Result.fromJson(body); + Result result = home.getType() == 0 ? Result.fromXml(body) : Result.fromJson(body); + if (result.getList().isEmpty() || result.getList().get(0).getVodPic().length() > 0) return result; + ArrayList ids = new ArrayList<>(); + for (Vod item : result.getList()) ids.add(item.getVodId()); + HashMap params = new HashMap<>(); + params.put("ac", home.getType() == 0 ? "videolist" : "detail"); + params.put("ids", TextUtils.join(",", ids)); + body = OKHttp.newCall(home.getApi(), params).execute().body().string(); + List items = home.getType() == 0 ? Result.fromXml(body).getList() : Result.fromJson(body).getList(); + result.setList(items); + return result; } }); } @@ -67,11 +77,13 @@ public class SiteViewModel extends ViewModel { SpiderDebug.log(categoryContent); return Result.fromJson(categoryContent); } else { - HttpUrl url = HttpUrl.parse(home.getApi()).newBuilder().addQueryParameter("ac", home.getType() == 0 ? "videolist" : "detail").addQueryParameter("t", tid).addQueryParameter("pg", page).build(); - String body = OKHttp.newCall(url).execute().body().string(); + HashMap params = new HashMap<>(); + params.put("ac", home.getType() == 0 ? "videolist" : "detail"); + params.put("t", tid); + params.put("pg", page); + String body = OKHttp.newCall(home.getApi(), params).execute().body().string(); SpiderDebug.log(body); - if (home.getType() == 0) return Result.fromXml(body); - else return Result.fromJson(body); + return home.getType() == 0 ? Result.fromXml(body) : Result.fromJson(body); } }); } @@ -87,12 +99,12 @@ public class SiteViewModel extends ViewModel { if (!result.getList().isEmpty()) result.getList().get(0).setVodFlags(); return result; } else { - HttpUrl url = HttpUrl.parse(site.getApi()).newBuilder().addQueryParameter("ac", site.getType() == 0 ? "videolist" : "detail").addQueryParameter("ids", id).build(); - String body = OKHttp.newCall(url).execute().body().string(); + HashMap params = new HashMap<>(); + params.put("ac", site.getType() == 0 ? "videolist" : "detail"); + params.put("ids", id); + String body = OKHttp.newCall(site.getApi(), params).execute().body().string(); SpiderDebug.log(body); - Result result; - if (site.getType() == 0) result = Result.fromXml(body); - else result = Result.fromJson(body); + Result result = site.getType() == 0 ? Result.fromXml(body) : Result.fromJson(body); if (!result.getList().isEmpty()) result.getList().get(0).setVodFlags(); return result; } @@ -129,9 +141,10 @@ public class SiteViewModel extends ViewModel { SpiderDebug.log(searchContent); postSearch(site, Result.fromJson(searchContent)); } else { - HttpUrl.Builder builder = HttpUrl.parse(site.getApi()).newBuilder().addQueryParameter("wd", keyword); - if (site.getType() == 1) builder.addQueryParameter("ac", "detail"); - String body = OKHttp.newCall(builder.build()).execute().body().string(); + HashMap params = new HashMap<>(); + if (site.getType() == 1) params.put("ac", "detail"); + params.put("wd", keyword); + String body = OKHttp.newCall(site.getApi(), params).execute().body().string(); SpiderDebug.log(body); if (site.getType() == 0) postSearch(site, Result.fromXml(body)); else postSearch(site, Result.fromJson(body)); diff --git a/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java b/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java index 6a6bac78a..9a6000f09 100644 --- a/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java +++ b/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java @@ -1,5 +1,8 @@ package com.fongmi.android.tv.net; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; import java.util.concurrent.TimeUnit; import okhttp3.Call; @@ -35,4 +38,14 @@ public class OKHttp { 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()); } + + public static Call newCall(String url, HashMap params) { + return get().client().newCall(new Request.Builder().url(buildUrl(url, params)).build()); + } + + private static HttpUrl buildUrl(String url, HashMap params) { + HttpUrl.Builder builder = Objects.requireNonNull(HttpUrl.parse(url)).newBuilder(); + for (Map.Entry entry : params.entrySet()) builder.addQueryParameter(entry.getKey(), entry.getValue()); + return builder.build(); + } }