Don't call API if all data is got

This commit is contained in:
seven332 committed 2019-03-19 23:02:08 +08:00
1 parent 9208c53d4f
commit 89209a3c44
2 files changed
+57 -91

No files matched your search

@@ -173,6 +173,58 @@ public class EhEngine {
}
}
private static void fillGalleryList(@Nullable EhClient.Task task, OkHttpClient okHttpClient, List<GalleryInfo> list, String url, boolean filter) throws Throwable {
// Filter title and uploader
if (filter) {
for (int i = 0, n = list.size(); i < n; i++) {
GalleryInfo info = list.get(i);
if (!sEhFilter.filterTitle(info) || !sEhFilter.filterUploader(info)) {
list.remove(i);
i--;
n--;
}
}
}
boolean hasTags = false;
boolean hasPages = false;
boolean hasRated = false;
for (GalleryInfo gi : list) {
if (gi.simpleTags != null) {
hasTags = true;
}
if (gi.pages != 0) {
hasPages = true;
}
if (gi.rated) {
hasRated = true;
}
}
boolean needApi = (filter && sEhFilter.needTags() && !hasTags) ||
(Settings.getShowGalleryPages() && !hasPages) ||
hasRated;
if (needApi) {
fillGalleryListByApi(task, okHttpClient, list, url);
}
// Filter tag
if (filter) {
for (int i = 0, n = list.size(); i < n; i++) {
GalleryInfo info = list.get(i);
if (!sEhFilter.filterTag(info) || !sEhFilter.filterTagNamespace(info)) {
list.remove(i);
i--;
n--;
}
}
}
for (GalleryInfo info : list) {
info.thumb = EhUrl.getFixedPreviewThumbUrl(info.thumb);
}
}
public static GalleryListParser.Result getGalleryList(@Nullable EhClient.Task task, OkHttpClient okHttpClient,
String url) throws Throwable {
String referer = EhUrl.getReferer();
@@ -201,50 +253,7 @@ public class EhEngine {
throw e;
}
// Filter title and uploader
List<GalleryInfo> list = result.galleryInfoList;
for (int i = 0, n = list.size(); i < n; i++) {
GalleryInfo info = list.get(i);
if (!sEhFilter.filterTitle(info) || !sEhFilter.filterUploader(info)) {
list.remove(i);
i--;
n--;
}
}
boolean anyRated = false;
for (GalleryInfo info : list) {
if (info.rated) {
anyRated = true;
break;
}
}
boolean needFillByApi = list.size() > 0
&& (TextUtils.isEmpty(list.get(0).uploader)
|| anyRated
|| Settings.getShowJpnTitle()
|| Settings.getShowGalleryPages()
|| sEhFilter.needCallApi());
if (needFillByApi) {
// Fill by api
fillGalleryListByApi(task, okHttpClient, list, url);
// Filter tag
for (int i = 0, n = list.size(); i < n; i++) {
GalleryInfo info = list.get(i);
if (!sEhFilter.filterTag(info) || !sEhFilter.filterTagNamespace(info)) {
list.remove(i);
i--;
n--;
}
}
}
for (GalleryInfo info : list) {
info.thumb = EhUrl.getFixedPreviewThumbUrl(info.thumb);
}
fillGalleryList(task, okHttpClient, result.galleryInfoList, url, true);
return result;
}
@@ -511,15 +520,7 @@ public class EhEngine {
throw e;
}
List<GalleryInfo> list = result.galleryInfoList;
if (list.size() > 0 && (TextUtils.isEmpty(list.get(0).uploader) || Settings.getShowJpnTitle() || Settings.getShowGalleryPages())) {
fillGalleryListByApi(task, okHttpClient, list, url);
}
for (GalleryInfo info : list) {
info.thumb = EhUrl.getFixedPreviewThumbUrl(info.thumb);
}
fillGalleryList(task, okHttpClient, result.galleryInfoList, url, false);
return result;
}
@@ -628,14 +629,7 @@ public class EhEngine {
throw e;
}
List<GalleryInfo> list = result.galleryInfoList;
if (list.size() > 0 && (TextUtils.isEmpty(list.get(0).uploader) || Settings.getShowJpnTitle() || Settings.getShowGalleryPages())) {
fillGalleryListByApi(task, okHttpClient, list, url);
}
for (GalleryInfo info : list) {
info.thumb = EhUrl.getFixedPreviewThumbUrl(info.thumb);
}
fillGalleryList(task, okHttpClient, result.galleryInfoList, url, false);
return result;
}
@@ -911,35 +905,7 @@ public class EhEngine {
throw e;
}
// Filter title and uploader
List<GalleryInfo> list = result.galleryInfoList;
for (int i = 0, n = list.size(); i < n; i++) {
GalleryInfo info = list.get(i);
if (!sEhFilter.filterTitle(info) || !sEhFilter.filterUploader(info)) {
list.remove(i);
i--;
n--;
}
}
if (list.size() > 0 && (TextUtils.isEmpty(list.get(0).uploader) || Settings.getShowJpnTitle() || Settings.getShowGalleryPages() || sEhFilter.needCallApi())) {
// Fill by api
fillGalleryListByApi(task, okHttpClient, list, url);
// Filter tag
for (int i = 0, n = list.size(); i < n; i++) {
GalleryInfo info = list.get(i);
if (!sEhFilter.filterTag(info) || !sEhFilter.filterTagNamespace(info)) {
list.remove(i);
i--;
n--;
}
}
}
for (GalleryInfo info : list) {
info.thumb = EhUrl.getFixedPreviewThumbUrl(info.thumb);
}
fillGalleryList(task, okHttpClient, result.galleryInfoList, url, true);
return result;
}
@@ -144,7 +144,7 @@ public final class EhFilter {
}
}
public synchronized boolean needCallApi() {
public synchronized boolean needTags() {
return 0 != mTagFilterList.size() || 0 != mTagNamespaceFilterList.size();
}