- 搜索页指定搜索源全局

- 快速搜索页搜索结果源展示bug修复
pull/59/head
okjackcaptain 4 years ago
parent 3419a6a6e2
commit e9fc43e256
  1. 11
      app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
  2. 25
      app/src/main/java/com/github/tvbox/osc/ui/activity/FastSearchActivity.java
  3. 26
      app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java
  4. 20
      app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java
  5. 22
      app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java
  6. 25
      app/src/main/java/com/github/tvbox/osc/util/SearchHelper.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<String, SourceBean> 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<Runnable> 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) {

@ -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<String, ArrayList<Movie.Video> > resultVods; // 搜索结果
private int finishedCount=0;
private List<String> quickSearchWord = new ArrayList<>();
private HashMap<String, SourceBean> 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();

@ -1346,10 +1346,13 @@ public class PlayActivity extends BaseActivity {
}
WebResourceResponse checkIsVideo(String url, HashMap<String, String> 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<String, String> 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

@ -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<String, SourceBean> mCheckSourcees = null;
private HashMap<String, SourceBean> 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());

@ -1373,6 +1373,9 @@ public class PlayFragment extends BaseLazyFragment {
WebResourceResponse checkIsVideo(String url, HashMap<String, String> 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<String, String> 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

@ -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<String, SourceBean> getSourcesForSearch() {
HashMap<String, SourceBean> 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;
}
}
Loading…
Cancel
Save