diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java index cf78fe97..3c84fafd 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java @@ -43,6 +43,7 @@ import com.github.tvbox.osc.util.DefaultConfig; import com.github.tvbox.osc.util.FastClickCheckUtil; import com.github.tvbox.osc.util.HawkConfig; import com.github.tvbox.osc.util.MD5; +import com.github.tvbox.osc.util.SearchHelper; import com.github.tvbox.osc.viewmodel.SourceViewModel; import com.google.gson.Gson; import com.google.gson.JsonArray; @@ -67,6 +68,7 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.URLEncoder; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -122,6 +124,7 @@ public class DetailActivity extends BaseActivity { private String preFlag=""; private boolean firstReverse; private V7GridLayoutManager mGridViewLayoutMgr = null; + private HashMap mCheckSources = null; @Override protected int getLayoutResID() { @@ -363,6 +366,10 @@ public class DetailActivity extends BaseActivity { setLoadSir(llLayout); } + private void initCheckedSourcesForSearch() { + mCheckSources = SearchHelper.getSourcesForSearch(); + } + private List pauseRunnable = null; private void jumpToPlay() { @@ -647,6 +654,7 @@ public class DetailActivity extends BaseActivity { } private void startQuickSearch() { + initCheckedSourcesForSearch(); if (hadQuickStart) return; hadQuickStart = true; @@ -713,6 +721,9 @@ public class DetailActivity extends BaseActivity { if (!bean.isSearchable() || !bean.isQuickSearch()) { continue; } + if (mCheckSources != null && !mCheckSources.containsKey(bean.getKey())) { + continue; + } siteKey.add(bean.getKey()); } for (String key : siteKey) { diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/FastSearchActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/FastSearchActivity.java index d9b3680b..b70fe9b9 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/FastSearchActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/FastSearchActivity.java @@ -33,6 +33,7 @@ import com.github.tvbox.osc.ui.tv.QRCodeGen; import com.github.tvbox.osc.ui.tv.widget.SearchKeyboard; import com.github.tvbox.osc.util.FastClickCheckUtil; import com.github.tvbox.osc.util.HawkConfig; +import com.github.tvbox.osc.util.SearchHelper; import com.github.tvbox.osc.viewmodel.SourceViewModel; import com.google.gson.Gson; import com.google.gson.JsonArray; @@ -87,8 +88,8 @@ public class FastSearchActivity extends BaseActivity { private boolean isFilterMode = false; private String searchFilterKey = ""; // 过滤的key private HashMap > resultVods; // 搜索结果 - private int finishedCount=0; private List quickSearchWord = new ArrayList<>(); + private HashMap mCheckSources = null; private View.OnFocusChangeListener focusChangeListener = new View.OnFocusChangeListener() { @Override @@ -317,6 +318,7 @@ public class FastSearchActivity extends BaseActivity { }); } private void initData() { + initCheckedSourcesForSearch(); Intent intent = getIntent(); if (intent != null && intent.hasExtra("title")) { String title = intent.getStringExtra("title"); @@ -336,9 +338,6 @@ public class FastSearchActivity extends BaseActivity { @Subscribe(threadMode = ThreadMode.MAIN) public void refresh(RefreshEvent event) { - if(mSearchTitle != null){ - mSearchTitle.setText(String.format("搜索(%d/%d)", finishedCount, spNames.size())); - } if (event.type == RefreshEvent.TYPE_SEARCH_RESULT) { try { searchData(event.obj == null ? null : (AbsXml) event.obj); @@ -352,6 +351,13 @@ public class FastSearchActivity extends BaseActivity { searchWordAdapter.setNewData(data); } } + if(mSearchTitle != null){ + mSearchTitle.setText(String.format("搜索(%d/%d)", resultVods.size(), spNames.size())); + } + } + + private void initCheckedSourcesForSearch() { + mCheckSources = SearchHelper.getSourcesForSearch(); } private void search(String title) { @@ -369,7 +375,6 @@ public class FastSearchActivity extends BaseActivity { searchFilterKey = ""; isFilterMode = false; spNames.clear(); - finishedCount=0; searchResult(); } @@ -407,6 +412,9 @@ public class FastSearchActivity extends BaseActivity { if (!bean.isSearchable()) { continue; } + if (mCheckSources != null && !mCheckSources.containsKey(bean.getKey())) { + continue; + } siteKey.add(bean.getKey()); this.spNames.put(bean.getName(), bean.getKey()); allRunCount.incrementAndGet(); @@ -421,17 +429,11 @@ public class FastSearchActivity extends BaseActivity { }catch (Exception e){ } -// updateSearchResultCount(1); } }); } } - synchronized private void updateSearchResultCount(int n){ -// finishedCount +=n; - finishedCount = resultVods.size(); - if(finishedCount > spNames.size()) finishedCount = spNames.size(); - } // 向过滤栏添加有结果的spname private String addWordAdapterIfNeed(String key){ try { @@ -475,7 +477,6 @@ public class FastSearchActivity extends BaseActivity { } if (searchAdapter.getData().size() > 0) { - finishedCount +=1; searchAdapter.addData(data); } else { showSuccess(); diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java index a25c93b1..2424a958 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java @@ -1346,10 +1346,13 @@ public class PlayActivity extends BaseActivity { } WebResourceResponse checkIsVideo(String url, HashMap headers) { + LOG.i("shouldInterceptRequest url:" + url); if (url.endsWith("/favicon.ico")) { + if (url.startsWith("http://127.0.0.1")) { + return new WebResourceResponse("image/x-icon", "UTF-8", null); + } return null; } - LOG.i("shouldInterceptRequest url:" + url); boolean ad; if (!loadedUrls.containsKey(url)) { ad = AdBlocker.isAd(url); @@ -1360,6 +1363,7 @@ public class PlayActivity extends BaseActivity { if (!ad) { if (checkVideoFormat(url)) { + LOG.i("checkVideoFormat:" + url ); if (loadFoundCount.incrementAndGet() == 1) { mHandler.removeMessages(100); if (headers != null && !headers.isEmpty()) { @@ -1381,10 +1385,7 @@ public class PlayActivity extends BaseActivity { @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { WebResourceResponse response = checkIsVideo(url, null); - if (response == null) - return super.shouldInterceptRequest(view, url); - else - return response; + return response; } @Nullable @@ -1409,10 +1410,7 @@ public class PlayActivity extends BaseActivity { th.printStackTrace(); } WebResourceResponse response = checkIsVideo(url, webHeaders); - if (response == null) - return super.shouldInterceptRequest(view, request); - else - return response; + return response; } @Override @@ -1517,11 +1515,14 @@ public class PlayActivity extends BaseActivity { @Override public XWalkWebResourceResponse shouldInterceptLoadRequest(XWalkView view, XWalkWebResourceRequest request) { String url = request.getUrl().toString(); + LOG.i("shouldInterceptLoadRequest url:" + url); // suppress favicon requests as we don't display them anywhere if (url.endsWith("/favicon.ico")) { - return super.shouldInterceptLoadRequest(view, request); + if (url.startsWith("http://127.0.0.1")) { + return createXWalkWebResourceResponse("image/x-icon", "UTF-8", null); + } + return null; } - LOG.i("shouldInterceptLoadRequest url:" + url); boolean ad; if (!loadedUrls.containsKey(url)) { ad = AdBlocker.isAd(url); @@ -1531,6 +1532,7 @@ public class PlayActivity extends BaseActivity { } if (!ad ) { if (checkVideoFormat(url)) { + LOG.i("checkVideoFormat:" + url ); if (loadFoundCount.incrementAndGet() == 1) { mHandler.removeMessages(100); HashMap webHeaders = new HashMap<>(); @@ -1555,7 +1557,7 @@ public class PlayActivity extends BaseActivity { } return ad || loadFoundCount.get() > 0 ? createXWalkWebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes())) : - super.shouldInterceptLoadRequest(view, request); + null; } @Override diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java index d7ffb6eb..0061e837 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java @@ -36,6 +36,7 @@ import com.github.tvbox.osc.ui.tv.QRCodeGen; import com.github.tvbox.osc.ui.tv.widget.SearchKeyboard; import com.github.tvbox.osc.util.FastClickCheckUtil; import com.github.tvbox.osc.util.HawkConfig; +import com.github.tvbox.osc.util.SearchHelper; import com.github.tvbox.osc.viewmodel.SourceViewModel; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -81,7 +82,7 @@ public class SearchActivity extends BaseActivity { private String searchTitle = ""; private TextView tvSearchCheckboxBtn; - private HashMap mCheckSourcees = null; + private HashMap mCheckSources = null; private SearchCheckboxDialog mSearchCheckboxDialog = null; @Override @@ -257,7 +258,7 @@ public class SearchActivity extends BaseActivity { searchAbleSource.add(sourceBean); } } - mSearchCheckboxDialog = new SearchCheckboxDialog(SearchActivity.this, searchAbleSource, mCheckSourcees); + mSearchCheckboxDialog = new SearchCheckboxDialog(SearchActivity.this, searchAbleSource, mCheckSources); } mSearchCheckboxDialog.show(); } @@ -330,6 +331,7 @@ public class SearchActivity extends BaseActivity { private void initData() { refreshQRCode(); + initCheckedSourcesForSearch(); Intent intent = getIntent(); if (intent != null && intent.hasExtra("title")) { String title = intent.getStringExtra("title"); @@ -365,7 +367,6 @@ public class SearchActivity extends BaseActivity { } }); - initCheckedSourcesForSearch(); } private void refreshQRCode() { @@ -395,16 +396,7 @@ public class SearchActivity extends BaseActivity { } private void initCheckedSourcesForSearch() { - mCheckSourcees = Hawk.get(HawkConfig.SOURCES_FOR_SEARCH, new HashMap<>()); - if (mCheckSourcees == null || mCheckSourcees.size() <= 0) { - for (SourceBean bean : ApiConfig.get().getSourceBeanList()) { - if (!bean.isSearchable()) { - continue; - } - mCheckSourcees.put(bean.getKey(), bean); - } - Hawk.put(HawkConfig.SOURCES_FOR_SEARCH, mCheckSourcees); - } + mCheckSources = SearchHelper.getSourcesForSearch(); } private void search(String title) { @@ -443,7 +435,7 @@ public class SearchActivity extends BaseActivity { if (!bean.isSearchable()) { continue; } - if (mCheckSourcees != null && !mCheckSourcees.containsKey(bean.getKey())) { + if (mCheckSources != null && !mCheckSources.containsKey(bean.getKey())) { continue; } siteKey.add(bean.getKey()); diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java index 8c74a9a7..6e27f43c 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java @@ -1373,6 +1373,9 @@ public class PlayFragment extends BaseLazyFragment { WebResourceResponse checkIsVideo(String url, HashMap headers) { LOG.i("shouldInterceptRequest url:" + url); if (url.endsWith("/favicon.ico")) { + if (url.startsWith("http://127.0.0.1")) { + return new WebResourceResponse("image/x-icon", "UTF-8", null); + } return null; } boolean ad; @@ -1385,6 +1388,7 @@ public class PlayFragment extends BaseLazyFragment { if (!ad) { if (checkVideoFormat(url)) { + LOG.i("checkVideoFormat:" + url ); if (loadFoundCount.incrementAndGet() == 1) { mHandler.removeMessages(100); if (headers != null && !headers.isEmpty()) { @@ -1406,10 +1410,7 @@ public class PlayFragment extends BaseLazyFragment { @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { WebResourceResponse response = checkIsVideo(url, null); - if (response == null) - return super.shouldInterceptRequest(view, url); - else - return response; + return response; } @Nullable @@ -1434,10 +1435,7 @@ public class PlayFragment extends BaseLazyFragment { th.printStackTrace(); } WebResourceResponse response = checkIsVideo(url, webHeaders); - if (response == null) - return super.shouldInterceptRequest(view, request); - else - return response; + return response; } @Override @@ -1544,7 +1542,10 @@ public class PlayFragment extends BaseLazyFragment { String url = request.getUrl().toString(); // suppress favicon requests as we don't display them anywhere if (url.endsWith("/favicon.ico")) { - return super.shouldInterceptLoadRequest(view, request); + if (url.startsWith("http://127.0.0.1")) { + return createXWalkWebResourceResponse("image/x-icon", "UTF-8", null); + } + return null; } LOG.i("shouldInterceptLoadRequest url:" + url); boolean ad; @@ -1556,6 +1557,7 @@ public class PlayFragment extends BaseLazyFragment { } if (!ad ) { if (checkVideoFormat(url)) { + LOG.i("checkVideoFormat:" + url ); if (loadFoundCount.incrementAndGet() == 1) { mHandler.removeMessages(100); HashMap webHeaders = new HashMap<>(); @@ -1580,7 +1582,7 @@ public class PlayFragment extends BaseLazyFragment { } return ad || loadFoundCount.get() > 0 ? createXWalkWebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes())) : - super.shouldInterceptLoadRequest(view, request); + null; } @Override diff --git a/app/src/main/java/com/github/tvbox/osc/util/SearchHelper.java b/app/src/main/java/com/github/tvbox/osc/util/SearchHelper.java new file mode 100644 index 00000000..0fb85e83 --- /dev/null +++ b/app/src/main/java/com/github/tvbox/osc/util/SearchHelper.java @@ -0,0 +1,25 @@ +package com.github.tvbox.osc.util; + +import com.github.tvbox.osc.api.ApiConfig; +import com.github.tvbox.osc.bean.SourceBean; +import com.orhanobut.hawk.Hawk; + +import java.util.HashMap; + +public class SearchHelper { + + public static HashMap getSourcesForSearch() { + HashMap mCheckSources = Hawk.get(HawkConfig.SOURCES_FOR_SEARCH, new HashMap<>()); + if (mCheckSources == null || mCheckSources.size() <= 0) { + for (SourceBean bean : ApiConfig.get().getSourceBeanList()) { + if (!bean.isSearchable()) { + continue; + } + mCheckSources.put(bean.getKey(), bean); + } + Hawk.put(HawkConfig.SOURCES_FOR_SEARCH, mCheckSources); + } + return mCheckSources; + } + +}