This commit is contained in:
GH Action - Upstream Sync 2023-10-20 12:31:00 +00:00
commit e92fb15e16
15 changed files with 250 additions and 93 deletions

View File

@ -32,7 +32,7 @@ import com.github.catvod.net.OkHttp;
import com.github.catvod.net.OkResult; import com.github.catvod.net.OkResult;
import com.github.catvod.spider.Init; import com.github.catvod.spider.Init;
import com.github.catvod.spider.Proxy; import com.github.catvod.spider.Proxy;
import com.github.catvod.utils.FileUtil; import com.github.catvod.utils.Path;
import com.github.catvod.utils.QRCode; import com.github.catvod.utils.QRCode;
import com.github.catvod.utils.Utils; import com.github.catvod.utils.Utils;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
@ -72,22 +72,22 @@ public class AliYun {
} }
public File getUserCache() { public File getUserCache() {
return FileUtil.cache("aliyundrive_user"); return Path.cache("aliyundrive_user");
} }
public File getOAuthCache() { public File getOAuthCache() {
return FileUtil.cache("aliyundrive_oauth"); return Path.cache("aliyundrive_oauth");
} }
public File getDriveCache() { public File getDriveCache() {
return FileUtil.cache("aliyundrive_drive"); return Path.cache("aliyundrive_drive");
} }
private AliYun() { private AliYun() {
tempIds = new ArrayList<>(); tempIds = new ArrayList<>();
user = User.objectFrom(FileUtil.read(getUserCache())); user = User.objectFrom(Path.read(getUserCache()));
oauth = OAuth.objectFrom(FileUtil.read(getOAuthCache())); oauth = OAuth.objectFrom(Path.read(getOAuthCache()));
drive = Drive.objectFrom(FileUtil.read(getDriveCache())); drive = Drive.objectFrom(Path.read(getDriveCache()));
} }
public void setRefreshToken(String token) { public void setRefreshToken(String token) {

View File

@ -4,6 +4,7 @@ import android.text.TextUtils;
import com.github.catvod.api.AliYun; import com.github.catvod.api.AliYun;
import com.github.catvod.utils.FileUtil; import com.github.catvod.utils.FileUtil;
import com.github.catvod.utils.Path;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
@ -38,7 +39,7 @@ public class Drive {
} }
public Drive save() { public Drive save() {
FileUtil.write(AliYun.get().getDriveCache(), toString()); Path.write(AliYun.get().getDriveCache(), toString());
return this; return this;
} }

View File

@ -4,6 +4,7 @@ import android.text.TextUtils;
import com.github.catvod.api.AliYun; import com.github.catvod.api.AliYun;
import com.github.catvod.utils.FileUtil; import com.github.catvod.utils.FileUtil;
import com.github.catvod.utils.Path;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
@ -44,7 +45,7 @@ public class OAuth {
} }
public OAuth save() { public OAuth save() {
FileUtil.write(AliYun.get().getOAuthCache(), toString()); Path.write(AliYun.get().getOAuthCache(), toString());
return this; return this;
} }

View File

@ -4,6 +4,7 @@ import android.text.TextUtils;
import com.github.catvod.api.AliYun; import com.github.catvod.api.AliYun;
import com.github.catvod.utils.FileUtil; import com.github.catvod.utils.FileUtil;
import com.github.catvod.utils.Path;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
@ -64,7 +65,7 @@ public class User {
} }
public User save() { public User save() {
FileUtil.write(AliYun.get().getUserCache(), toString()); Path.write(AliYun.get().getUserCache(), toString());
return this; return this;
} }

View File

@ -15,7 +15,7 @@ import com.github.catvod.bean.bili.Page;
import com.github.catvod.bean.bili.Resp; import com.github.catvod.bean.bili.Resp;
import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.Spider;
import com.github.catvod.net.OkHttp; import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.FileUtil; import com.github.catvod.utils.Path;
import com.github.catvod.utils.Utils; import com.github.catvod.utils.Utils;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
@ -66,7 +66,7 @@ public class Bili extends Spider {
private void setCookie() { private void setCookie() {
cookie = extend.get("cookie").getAsString(); cookie = extend.get("cookie").getAsString();
if (cookie.startsWith("http")) cookie = OkHttp.string(cookie).trim(); if (cookie.startsWith("http")) cookie = OkHttp.string(cookie).trim();
if (TextUtils.isEmpty(cookie)) cookie = FileUtil.read(getUserCache()); if (TextUtils.isEmpty(cookie)) cookie = Path.read(getUserCache());
if (TextUtils.isEmpty(cookie)) cookie = COOKIE; if (TextUtils.isEmpty(cookie)) cookie = COOKIE;
} }
@ -78,7 +78,7 @@ public class Bili extends Spider {
} }
private File getUserCache() { private File getUserCache() {
return FileUtil.cache("bilibili_user"); return Path.cache("bilibili_user");
} }
@Override @Override

View File

@ -1,9 +1,11 @@
package com.github.catvod.spider; package com.github.catvod.spider;
import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import com.github.catvod.bean.Class; import com.github.catvod.bean.Class;
import com.github.catvod.bean.Result; import com.github.catvod.bean.Result;
@ -12,6 +14,7 @@ import com.github.catvod.bean.market.Data;
import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.Spider;
import com.github.catvod.net.OkHttp; import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.FileUtil; import com.github.catvod.utils.FileUtil;
import com.github.catvod.utils.Path;
import com.github.catvod.utils.Utils; import com.github.catvod.utils.Utils;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
@ -42,6 +45,7 @@ public class Market extends Spider {
public void init(Context context, String extend) throws Exception { public void init(Context context, String extend) throws Exception {
if (extend.startsWith("http")) extend = OkHttp.string(extend); if (extend.startsWith("http")) extend = OkHttp.string(extend);
datas = Data.arrayFrom(extend); datas = Data.arrayFrom(extend);
checkPermission();
} }
@Override @Override
@ -67,6 +71,15 @@ public class Market extends Spider {
return Result.string(vod); return Result.string(vod);
} }
private void checkPermission() {
try {
Activity activity = Init.getActivity();
if (activity != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) activity.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 9999);
} catch (Exception e) {
e.printStackTrace();
}
}
private void finish() { private void finish() {
try { try {
Activity activity = Init.getActivity(); Activity activity = Init.getActivity();
@ -82,9 +95,10 @@ public class Market extends Spider {
setBusy(true); setBusy(true);
Init.run(this::setDialog, 500); Init.run(this::setDialog, 500);
Response response = OkHttp.newCall(url); Response response = OkHttp.newCall(url);
File file = new File(FileUtil.download(), Uri.parse(url).getLastPathSegment()); File file = new File(Path.download(), Uri.parse(url).getLastPathSegment());
download(file, response.body().byteStream(), Double.parseDouble(response.header("Content-Length", "1"))); download(file, response.body().byteStream(), Double.parseDouble(response.header("Content-Length", "1")));
if (file.getName().endsWith(".apk")) FileUtil.openFile(FileUtil.chmod(file)); if (file.getName().endsWith(".zip")) FileUtil.unzip(file, Path.download());
if (file.getName().endsWith(".apk")) FileUtil.openFile(Path.chmod(file));
else Utils.notify("下載完成"); else Utils.notify("下載完成");
dismiss(); dismiss();
} catch (Exception e) { } catch (Exception e) {

View File

@ -3,77 +3,20 @@ package com.github.catvod.utils;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Environment;
import android.text.TextUtils; import android.text.TextUtils;
import com.github.catvod.spider.Init; import com.github.catvod.spider.Init;
import java.io.File; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLConnection; import java.net.URLConnection;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class FileUtil { public class FileUtil {
public static File cache() { public static File getWall(int index) {
return Init.context().getCacheDir(); return Path.files("wallpaper_" + index);
}
public static File cache(String name) {
return new File(cache(), name);
}
public static File download() {
return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
}
public static void write(File file, String data) {
write(file, data.getBytes());
}
public static void write(File file, byte[] data) {
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(data);
fos.flush();
fos.close();
chmod(file);
} catch (Exception e) {
e.printStackTrace();
}
}
public static File chmod(File file) {
try {
Process process = Runtime.getRuntime().exec("chmod 777 " + file);
process.waitFor();
return file;
} catch (Exception e) {
e.printStackTrace();
return file;
}
}
public static String read(File file) {
try {
return read(new FileInputStream(file));
} catch (Exception e) {
return "";
}
}
public static String read(InputStream is) {
try {
byte[] data = new byte[is.available()];
is.read(data);
is.close();
return new String(data, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
return "";
}
} }
public static void openFile(File file) { public static void openFile(File file) {
@ -84,12 +27,26 @@ public class FileUtil {
Init.context().startActivity(intent); Init.context().startActivity(intent);
} }
private static String getMimeType(String fileName) { public static void unzip(File target, File path) {
String mimeType = URLConnection.guessContentTypeFromName(fileName); try (ZipFile zip = new ZipFile(target.getAbsolutePath())) {
return TextUtils.isEmpty(mimeType) ? "*/*" : mimeType; Enumeration<?> entries = zip.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = (ZipEntry) entries.nextElement();
File out = new File(path, entry.getName());
if (entry.isDirectory()) out.mkdirs();
else Path.copy(zip.getInputStream(entry), out);
}
} catch (Exception e) {
e.printStackTrace();
}
} }
private static Uri getShareUri(File file) { private static Uri getShareUri(File file) {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.N ? Uri.fromFile(file) : FileProvider.getUriForFile(Init.context(), Init.context().getPackageName() + ".provider", file); return Build.VERSION.SDK_INT < Build.VERSION_CODES.N ? Uri.fromFile(file) : FileProvider.getUriForFile(Init.context(), Init.context().getPackageName() + ".provider", file);
} }
private static String getMimeType(String fileName) {
String mimeType = URLConnection.guessContentTypeFromName(fileName);
return TextUtils.isEmpty(mimeType) ? "*/*" : mimeType;
}
} }

View File

@ -0,0 +1,168 @@
package com.github.catvod.utils;
import android.os.Environment;
import android.util.Log;
import com.github.catvod.spider.Init;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Path {
private static final String TAG = Path.class.getSimpleName();
private static File check(File file) {
if (!file.exists()) file.mkdirs();
return file;
}
public static boolean exists(String path) {
return new File(path.replace("file://", "")).exists();
}
public static File root() {
return Environment.getExternalStorageDirectory();
}
public static File cache() {
return Init.context().getCacheDir();
}
public static File files() {
return Init.context().getFilesDir();
}
public static File download() {
return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
}
public static String rootPath() {
return root().getAbsolutePath();
}
public static File root(String name) {
return new File(root(), name);
}
public static File root(String child, String name) {
return new File(check(new File(root(), child)), name);
}
public static File cache(String name) {
return new File(cache(), name);
}
public static File files(String name) {
return new File(files(), name);
}
public static String asset(String fileName) {
try {
return read(Init.context().getAssets().open(fileName));
} catch (Exception e) {
return "";
}
}
public static String read(File file) {
try {
return read(new FileInputStream(file));
} catch (Exception e) {
return "";
}
}
public static String read(String path) {
try {
return read(new FileInputStream(path));
} catch (Exception e) {
return "";
}
}
public static String read(InputStream is) {
try {
byte[] data = new byte[is.available()];
is.read(data);
is.close();
return new String(data, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
public static File write(File file, String data) {
return write(file, data.getBytes());
}
public static File write(File file, byte[] data) {
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(data);
fos.flush();
fos.close();
chmod(file);
return file;
} catch (Exception ignored) {
return file;
}
}
public static void move(File in, File out) {
copy(in, out);
clear(in);
}
public static void copy(File in, File out) {
try {
copy(new FileInputStream(in), new FileOutputStream(out));
} catch (Exception ignored) {
}
}
public static void copy(InputStream in, File out) {
try {
copy(in, new FileOutputStream(out));
} catch (Exception ignored) {
}
}
public static void copy(InputStream inputStream, OutputStream outputStream) throws IOException {
byte[] buffer = new byte[8192];
int amountRead;
while ((amountRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, amountRead);
}
}
public static List<File> list(File dir) {
File[] files = dir.listFiles();
return files == null ? Collections.emptyList() : Arrays.asList(files);
}
public static void clear(File dir) {
if (dir == null) return;
if (dir.isDirectory()) for (File file : list(dir)) clear(file);
if (dir.delete()) Log.d(TAG, "Deleted:" + dir.getAbsolutePath());
}
public static File chmod(File file) {
try {
Process process = Runtime.getRuntime().exec("chmod 777 " + file);
process.waitFor();
return file;
} catch (Exception e) {
e.printStackTrace();
return file;
}
}
}

Binary file not shown.

View File

@ -1 +1 @@
b2c6912d5489526425cc71c596f4606e a8f3edaf1afd3ed28413b3ed26fd8fbd

View File

@ -1,5 +1,5 @@
{ {
"spider": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;b2c6912d5489526425cc71c596f4606e", "spider": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;a8f3edaf1afd3ed28413b3ed26fd8fbd",
"wallpaper": "https://gao.chuqiuyu.tk", "wallpaper": "https://gao.chuqiuyu.tk",
"sites": [ "sites": [
{ {
@ -74,7 +74,7 @@
"key": "18A貓", "key": "18A貓",
"name": "18A貓", "name": "18A貓",
"type": 3, "type": 3,
"api": "https://raw.githubusercontent.com/FongMi/CatVodOpen/main/open/18a_open.js", "api": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodOpen/main/open/18a_open.js",
"searchable": 1, "searchable": 1,
"style": { "style": {
"type": "rect", "type": "rect",

View File

@ -1,5 +1,5 @@
{ {
"spider": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;b2c6912d5489526425cc71c596f4606e", "spider": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;a8f3edaf1afd3ed28413b3ed26fd8fbd",
"wallpaper": "http://饭太硬.top/深色壁纸/api.php", "wallpaper": "http://饭太硬.top/深色壁纸/api.php",
"sites": [ "sites": [
{ {
@ -27,7 +27,7 @@
"changeable": 0, "changeable": 0,
"ext": { "ext": {
"token": "影視天下第一", "token": "影視天下第一",
"filter": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/wogg.json" "filter": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/wogg.json"
} }
}, },
{ {
@ -37,7 +37,7 @@
"api": "csp_Jianpian", "api": "csp_Jianpian",
"searchable": 1, "searchable": 1,
"changeable": 1, "changeable": 1,
"ext": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/jianpian.json" "ext": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/jianpian.json"
}, },
{ {
"key": "獨播", "key": "獨播",
@ -46,13 +46,13 @@
"api": "csp_XPathMacFilter", "api": "csp_XPathMacFilter",
"searchable": 1, "searchable": 1,
"changeable": 1, "changeable": 1,
"ext": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/duboku.json" "ext": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/duboku.json"
}, },
{ {
"key": "五五", "key": "五五",
"name": "五五", "name": "五五",
"type": 3, "type": 3,
"api": "https://raw.githubusercontent.com/FongMi/CatVodOpen/main/open/555dy_open.js", "api": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodOpen/main/open/555dy_open.js",
"searchable": 1, "searchable": 1,
"changeable": 1 "changeable": 1
}, },
@ -166,7 +166,7 @@
"ratio": 1.433 "ratio": 1.433
}, },
"ext": { "ext": {
"json": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/bili.json", "json": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/bili.json",
"type": "帕梅拉#太极拳#广场舞#演唱会", "type": "帕梅拉#太极拳#广场舞#演唱会",
"cookie": "" "cookie": ""
} }
@ -175,7 +175,7 @@
"key": "bili_open", "key": "bili_open",
"name": "哔哩貓", "name": "哔哩貓",
"type": 3, "type": 3,
"api": "https://raw.githubusercontent.com/FongMi/CatVodOpen/main/open/bili_open.js", "api": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodOpen/main/open/bili_open.js",
"searchable": 1, "searchable": 1,
"changeable": 0, "changeable": 0,
"ext": { "ext": {
@ -198,7 +198,7 @@
"api": "csp_AList", "api": "csp_AList",
"searchable": 1, "searchable": 1,
"changeable": 0, "changeable": 0,
"ext": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/alist.json" "ext": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/alist.json"
}, },
{ {
"key": "WebDAV", "key": "WebDAV",
@ -207,7 +207,7 @@
"api": "csp_WebDAV", "api": "csp_WebDAV",
"searchable": 1, "searchable": 1,
"changeable": 0, "changeable": 0,
"ext": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/webdav.json" "ext": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/webdav.json"
}, },
{ {
"key": "七夜", "key": "七夜",
@ -281,7 +281,7 @@
"api": "csp_Market", "api": "csp_Market",
"searchable": 0, "searchable": 0,
"changeable": 0, "changeable": 0,
"ext": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/market.json" "ext": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/market.json"
} }
], ],
"doh": [ "doh": [

View File

@ -203,5 +203,20 @@
"icon": "https://i.imgs.ovh/2023/10/17/r8nk2.png" "icon": "https://i.imgs.ovh/2023/10/17/r8nk2.png"
} }
] ]
},
{
"name": "本地包",
"list": [
{
"name": "watson",
"url": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/zip/js-1019.zip",
"icon": "https://i.imgs.ovh/2023/10/20/2I7XH.jpeg"
},
{
"name": "香雅情",
"url": "https://gh-proxy.com/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/zip/XYQTVBox_本地包.zip",
"icon": "https://i.imgs.ovh/2023/10/20/2IO0D.jpeg"
}
]
} }
] ]

BIN
zip/XYQTVBox_本地包.zip Normal file

Binary file not shown.

BIN
zip/js-1019.zip Normal file

Binary file not shown.