- 优化搜索局域网TVBox速度(by okjack)

pull/68/head
okjackcaptain 3 years ago
parent ff1fa0edd3
commit 6bc35ceffa
  1. 2
      app/src/main/java/com/github/tvbox/osc/player/thirdparty/RemoteTVBox.java
  2. 2
      app/src/main/java/com/github/tvbox/osc/server/ControlManager.java
  3. 4
      app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java
  4. 2
      app/src/main/java/com/github/tvbox/osc/ui/activity/PushActivity.java
  5. 4
      app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java
  6. 25
      app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java
  7. 13
      app/src/main/java/com/github/tvbox/osc/util/IpScanning.java

@ -74,7 +74,7 @@ public class RemoteTVBox {
avalibleFailNum = 0;
avalibleSuccessNum = 0;
String localIp = RemoteServer.getLocalIPAddress(App.getInstance());
List<IpScanningVo> searchList = new IpScanning().search(localIp);
List<IpScanningVo> searchList = new IpScanning().search(localIp, false);
avalibleIpNum = searchList.size();
int port = 9978;
for(IpScanningVo one : searchList) {

@ -80,7 +80,7 @@ public class ControlManager {
@Override
public void onPushReceived(String url) {
Matcher m = Pattern.compile("(https?://[A-Za-z0-9:_@$#\\/\\.\\?\\=\\&\\%\\-]+)").matcher(url);
Matcher m = Pattern.compile("(https?://[A-Za-z0-9:_@$#\\|\\/\\.\\?\\=\\&\\%\\-]+)").matcher(url);
String finalUrl = url;
if (m.find()) {
finalUrl = m.group(1);

@ -1468,7 +1468,7 @@ public class PlayActivity extends BaseActivity {
url = loadFoundVideoUrls.poll();
mHandler.removeMessages(100);
String cookie = CookieManager.getInstance().getCookie(url);
if(!TextUtils.isEmpty(cookie))headers.put("Cookie", cookie);//携带cookie
if(!TextUtils.isEmpty(cookie))headers.put("Cookie", " " + cookie);//携带cookie
playUrl(url, headers);
stopLoadWebView(false);
}
@ -1652,7 +1652,7 @@ public class PlayActivity extends BaseActivity {
mHandler.removeMessages(100);
url = loadFoundVideoUrls.poll();
String cookie = CookieManager.getInstance().getCookie(url);
if(!TextUtils.isEmpty(cookie))webHeaders.put("Cookie", cookie);//携带cookie
if(!TextUtils.isEmpty(cookie))webHeaders.put("Cookie", " " + cookie);//携带cookie
playUrl(url, webHeaders);
stopLoadWebView(false);
}

@ -46,7 +46,7 @@ public class PushActivity extends BaseActivity {
if (manager.hasPrimaryClip() && manager.getPrimaryClip() != null && manager.getPrimaryClip().getItemCount() > 0) {
ClipData.Item addedText = manager.getPrimaryClip().getItemAt(0);
String clipText = addedText.getText().toString().trim();
Matcher m = Pattern.compile("(https?://[A-Za-z0-9:_@$#\\/\\.\\?\\=\\&\\%\\-]+)").matcher(clipText);
Matcher m = Pattern.compile("(https?://[A-Za-z0-9:_@$#\\|\\/\\.\\?\\=\\&\\%\\-]+)").matcher(clipText);
if (m.find()) {
clipText = m.group(1);
}

@ -1487,7 +1487,7 @@ public class PlayFragment extends BaseLazyFragment {
url = loadFoundVideoUrls.poll();
mHandler.removeMessages(100);
String cookie = CookieManager.getInstance().getCookie(url);
if(!TextUtils.isEmpty(cookie))headers.put("Cookie", cookie);//携带cookie
if(!TextUtils.isEmpty(cookie))headers.put("Cookie", " " + cookie);//携带cookie
playUrl(url, headers);
stopLoadWebView(false);
}
@ -1672,7 +1672,7 @@ public class PlayFragment extends BaseLazyFragment {
mHandler.removeMessages(100);
url = loadFoundVideoUrls.poll();
String cookie = CookieManager.getInstance().getCookie(url);
if(!TextUtils.isEmpty(cookie))webHeaders.put("Cookie", cookie);//携带cookie
if(!TextUtils.isEmpty(cookie))webHeaders.put("Cookie", " " + cookie);//携带cookie
playUrl(url, webHeaders);
stopLoadWebView(false);
}

@ -106,31 +106,6 @@ public class DefaultConfig {
return start > -1 ? fileName.substring(0, start) : fileName;
}
// private static final String[] videoSuffix = {"m3u8","mp4","flv","avi","mkv","rm","wmv","mpg"};
// public static boolean isVideoFormat(String url) {
// if (url.contains("=http")) {
// return false;
// }
// Uri uri = Uri.parse(url);
// String path = uri.getPath();
// if (path == null || path.isEmpty()) {
// return false;
// }
// if (path.endsWith(".js") || path.endsWith(".css") || path.endsWith(".html")) {
// return false;
// }
// String query = uri.getQuery();
// if (query != null && query.startsWith("http")) {
// return false;
// }
// for(String oneSubfix : videoSuffix) {
// if (path.contains("." + oneSubfix)) {
// return true;
// }
// }
// return false;
// }
private static final Pattern snifferMatch = Pattern.compile(
"http((?!http).){20,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)\\?.*|" +
"http((?!http).){20,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)|" +

@ -38,14 +38,21 @@ public class IpScanning {
* 通过IP扫描对应网段中可以使用的网段
* @param ips 输入的IP
*/
public List<IpScanningVo> search(String ips) {
public List<IpScanningVo> search(String ips, boolean all) {
//清空缓存
ipScanningVos.clear();
int divisionIp = ips.lastIndexOf(".");
String substring = ips.substring(0, divisionIp + 1);
String last = ips.substring(divisionIp + 1);
int end = Integer.parseInt(last) + 30; //搜索范围不是全部,缩小范围
end = end > 255 ? 255 : end;
if (all) end = 255;
int total = end;
//扫描对应网段中的所有Ip
BlockingQueue<IpScanningVo> queue = new ArrayBlockingQueue<>(255);
for (int i = 1; i < 255; i++) {
BlockingQueue<IpScanningVo> queue = new ArrayBlockingQueue<>(total);
for (int i = 1; i < total; i++) {
String iip = substring + i;
threadPool.submit(new PingIp(iip, queue));
}

Loading…
Cancel
Save