diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b1f7531f..221b781a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,6 +3,8 @@
package="com.github.catvod">
+
+
();
- oauth = OAuth.objectFrom(Prefers.getString("aliyundrive_oauth"));
- user = User.objectFrom(Prefers.getString("aliyundrive_user"));
+ oauth = OAuth.objectFrom(FileUtil.read(getOAuthCache()));
+ user = User.objectFrom(FileUtil.read(getUserCache()));
quality = new HashMap<>();
quality.put("4K", "UHD");
quality.put("2k", "QHD");
@@ -432,9 +441,7 @@ public class API {
if (Utils.isMobile()) {
Init.run(this::showInput);
} else {
- String url = "https://passport.aliyundrive.com/newlogin/qrcode/generate.do?appName=aliyun_drive&fromSite=52&appName=aliyun_drive&appEntrance=web&isMobile=false&lang=zh_CN&returnUrl=&bizParams=&_bx-v=2.2.3";
- Data data = Data.objectFrom(OkHttp.string(url)).getContent().getData();
- Init.run(() -> showQRCode(data));
+ showQRCode();
}
}
@@ -445,13 +452,18 @@ public class API {
FrameLayout frame = new FrameLayout(Init.context());
EditText input = new EditText(Init.context());
frame.addView(input, params);
- dialog = new AlertDialog.Builder(Init.getActivity()).setTitle("請輸入Token").setView(frame).setNegativeButton(android.R.string.cancel, null).setPositiveButton(android.R.string.ok, (dialog, which) -> onPositive(input.getText().toString())).show();
+ dialog = new AlertDialog.Builder(Init.getActivity()).setTitle("請輸入Token").setView(frame).setNeutralButton("QRCode", (dialog, which) -> onNeutral()).setNegativeButton(android.R.string.cancel, null).setPositiveButton(android.R.string.ok, (dialog, which) -> onPositive(input.getText().toString())).show();
} catch (Exception ignored) {
}
}
+ private void onNeutral() {
+ dismiss();
+ Init.execute(this::showQRCode);
+ }
+
private void onPositive(String text) {
- dialog.dismiss();
+ dismiss();
Init.execute(() -> {
if (text.startsWith("http")) setToken(OkHttp.string(text));
else if (text.length() == 32) setToken(text);
@@ -459,6 +471,12 @@ public class API {
});
}
+ private void showQRCode() {
+ String url = "https://passport.aliyundrive.com/newlogin/qrcode/generate.do?appName=aliyun_drive&fromSite=52&appName=aliyun_drive&appEntrance=web&isMobile=false&lang=zh_CN&returnUrl=&bizParams=&_bx-v=2.2.3";
+ Data data = Data.objectFrom(OkHttp.string(url)).getContent().getData();
+ Init.run(() -> showQRCode(data));
+ }
+
private void showQRCode(Data data) {
try {
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(Utils.dp2px(240), Utils.dp2px(240));
diff --git a/app/src/main/java/com/github/catvod/bean/ali/OAuth.java b/app/src/main/java/com/github/catvod/bean/ali/OAuth.java
index 88001aa2..94ff2a9f 100644
--- a/app/src/main/java/com/github/catvod/bean/ali/OAuth.java
+++ b/app/src/main/java/com/github/catvod/bean/ali/OAuth.java
@@ -2,7 +2,8 @@ package com.github.catvod.bean.ali;
import android.text.TextUtils;
-import com.github.catvod.utils.Prefers;
+import com.github.catvod.ali.API;
+import com.github.catvod.utils.FileUtil;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
@@ -43,7 +44,7 @@ public class OAuth {
}
public OAuth save() {
- Prefers.put("aliyundrive_oauth", toString());
+ FileUtil.write(API.get().getOAuthCache(), toString());
return this;
}
diff --git a/app/src/main/java/com/github/catvod/bean/ali/User.java b/app/src/main/java/com/github/catvod/bean/ali/User.java
index d274dd3c..596f4187 100644
--- a/app/src/main/java/com/github/catvod/bean/ali/User.java
+++ b/app/src/main/java/com/github/catvod/bean/ali/User.java
@@ -2,7 +2,8 @@ package com.github.catvod.bean.ali;
import android.text.TextUtils;
-import com.github.catvod.utils.Prefers;
+import com.github.catvod.ali.API;
+import com.github.catvod.utils.FileUtil;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
@@ -59,7 +60,7 @@ public class User {
}
public User save() {
- Prefers.put("aliyundrive_user", toString());
+ FileUtil.write(API.get().getUserCache(), toString());
return this;
}
diff --git a/app/src/main/java/com/github/catvod/bean/alist/Drive.java b/app/src/main/java/com/github/catvod/bean/alist/Drive.java
index 4564369e..1efc998a 100644
--- a/app/src/main/java/com/github/catvod/bean/alist/Drive.java
+++ b/app/src/main/java/com/github/catvod/bean/alist/Drive.java
@@ -5,6 +5,7 @@ import android.text.TextUtils;
import com.github.catvod.bean.Class;
import com.github.catvod.net.OkHttp;
+import com.github.catvod.utils.Image;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
@@ -43,7 +44,7 @@ public class Drive {
}
public String getVodPic() {
- return TextUtils.isEmpty(vodPic) ? "https://s1.ax1x.com/2023/04/03/pp4F4bT.png" : vodPic;
+ return TextUtils.isEmpty(vodPic) ? Image.FOLDER : vodPic;
}
public String getName() {
diff --git a/app/src/main/java/com/github/catvod/bean/alist/Item.java b/app/src/main/java/com/github/catvod/bean/alist/Item.java
index 8a0c166a..016f1bda 100644
--- a/app/src/main/java/com/github/catvod/bean/alist/Item.java
+++ b/app/src/main/java/com/github/catvod/bean/alist/Item.java
@@ -105,7 +105,7 @@ public class Item {
}
public String getExt() {
- return getName().substring(getName().lastIndexOf(".") + 1);
+ return Utils.getExt(getName());
}
public String getVodId(String id) {
diff --git a/app/src/main/java/com/github/catvod/bean/webdav/Drive.java b/app/src/main/java/com/github/catvod/bean/webdav/Drive.java
index edac8059..63818fb5 100644
--- a/app/src/main/java/com/github/catvod/bean/webdav/Drive.java
+++ b/app/src/main/java/com/github/catvod/bean/webdav/Drive.java
@@ -17,8 +17,6 @@ import java.util.List;
public class Drive {
- @SerializedName("vodPic")
- private String vodPic;
@SerializedName("drives")
private List drives;
@SerializedName("name")
@@ -46,10 +44,6 @@ public class Drive {
return drives == null ? new ArrayList<>() : drives;
}
- public String getVodPic() {
- return TextUtils.isEmpty(vodPic) ? "" : vodPic;
- }
-
public String getName() {
return TextUtils.isEmpty(name) ? "" : name;
}
diff --git a/app/src/main/java/com/github/catvod/spider/Bili.java b/app/src/main/java/com/github/catvod/spider/Bili.java
index b02e1b47..e4980a13 100644
--- a/app/src/main/java/com/github/catvod/spider/Bili.java
+++ b/app/src/main/java/com/github/catvod/spider/Bili.java
@@ -23,6 +23,7 @@ import org.json.JSONArray;
import org.json.JSONObject;
import org.jsoup.Jsoup;
+import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
@@ -201,12 +202,14 @@ public class Bili extends Spider {
}
private void setCookie(String url) {
- Map> respHeader = new HashMap<>();
- OkHttp.stringNoRedirect(url, header, respHeader);
- StringBuilder sb = new StringBuilder();
- for (String value : Objects.requireNonNull(respHeader.get("set-cookie"))) sb.append(value.split(";")[0]).append(";");
- Init.run(() -> Prefers.put("BiliQRCode", true), 5000);
- Prefers.put("BiliCookie", sb.toString());
+ String cookie = "";
+ try {
+ URL abc = new URL(url);
+ String[] kk = abc.getQuery().split("&");
+ for (String a : kk) cookie += a + ";";
+ } catch (Exception ignored) {
+ }
+ Prefers.put("BiliCookie", cookie);
Init.show("請重新進入播放頁");
stopService();
}
diff --git a/app/src/main/java/com/github/catvod/spider/Local.java b/app/src/main/java/com/github/catvod/spider/Local.java
new file mode 100644
index 00000000..58a2c292
--- /dev/null
+++ b/app/src/main/java/com/github/catvod/spider/Local.java
@@ -0,0 +1,103 @@
+package com.github.catvod.spider;
+
+import android.content.Context;
+import android.os.Environment;
+
+import com.github.catvod.bean.Class;
+import com.github.catvod.bean.Result;
+import com.github.catvod.bean.Sub;
+import com.github.catvod.bean.Vod;
+import com.github.catvod.crawler.Spider;
+import com.github.catvod.utils.Image;
+import com.github.catvod.utils.Utils;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Objects;
+
+public class Local extends Spider {
+
+ private SimpleDateFormat format;
+
+ @Override
+ public void init(Context context, String extend) {
+ format = new SimpleDateFormat("yyyyy/MM/dd HH:mm:ss", Locale.getDefault());
+ }
+
+ @Override
+ public String homeContent(boolean filter) throws Exception {
+ List classes = new ArrayList<>();
+ classes.add(new Class(Environment.getExternalStorageDirectory().getAbsolutePath(), "本地文件", "1"));
+ File[] files = new File("/storage").listFiles();
+ if (files == null) return Result.string(classes, new ArrayList<>());
+ List exclude = Arrays.asList("emulated", "sdcard", "self");
+ for (File file : files) {
+ if (exclude.contains(file.getName())) continue;
+ classes.add(new Class(file.getAbsolutePath(), file.getName(), "1"));
+ }
+ return Result.string(classes, new ArrayList<>());
+ }
+
+ @Override
+ public String categoryContent(String tid, String pg, boolean filter, HashMap extend) throws Exception {
+ List items = new ArrayList<>();
+ List media = new ArrayList<>();
+ List folders = new ArrayList<>();
+ File[] files = new File(tid).listFiles();
+ if (files == null) return Result.string(items);
+ Arrays.sort(files, (a, b) -> a.getName().compareTo(b.getName()));
+ for (File file : files) {
+ if (file.getName().startsWith(".")) continue;
+ if (file.isDirectory()) folders.add(create(file));
+ else if (Utils.MEDIA.contains(Utils.getExt(file.getName()))) media.add(create(file));
+ }
+ items.addAll(folders);
+ items.addAll(media);
+ return Result.string(items);
+ }
+
+ @Override
+ public String detailContent(List ids) {
+ File file = new File(ids.get(0));
+ Vod vod = new Vod();
+ vod.setTypeName("FongMi");
+ vod.setVodId(file.getAbsolutePath());
+ vod.setVodName(file.getName());
+ vod.setVodPic(Image.VIDEO);
+ vod.setVodPlayFrom("播放");
+ vod.setVodPlayUrl(file.getName() + "$" + file.getAbsolutePath());
+ return Result.string(vod);
+ }
+
+ @Override
+ public String playerContent(String flag, String id, List vipFlags) throws Exception {
+ return Result.get().url(id).subs(getSubs(id)).string();
+ }
+
+ private Vod create(File file) {
+ Vod vod = new Vod();
+ vod.setVodId(file.getAbsolutePath());
+ vod.setVodName(file.getName());
+ vod.setVodPic(Image.getIcon(file.isDirectory()));
+ vod.setVodRemarks(format.format(file.lastModified()));
+ vod.setVodTag(file.isDirectory() ? "folder" : "file");
+ return vod;
+ }
+
+ private List getSubs(String path) {
+ File file = new File(path);
+ if (file.getParentFile() == null) return Collections.emptyList();
+ List subs = new ArrayList<>();
+ for (File f : Objects.requireNonNull(file.getParentFile().listFiles())) {
+ String ext = Utils.getExt(f.getName());
+ if (Utils.isSub(ext)) subs.add(Sub.create().name(Utils.removeExt(f.getName())).ext(ext).url("file://" + f.getAbsolutePath()));
+ }
+ return subs;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/catvod/spider/Push.java b/app/src/main/java/com/github/catvod/spider/Push.java
index 2cf57f8e..25a7b678 100644
--- a/app/src/main/java/com/github/catvod/spider/Push.java
+++ b/app/src/main/java/com/github/catvod/spider/Push.java
@@ -4,11 +4,16 @@ import android.content.Context;
import android.text.TextUtils;
import com.github.catvod.bean.Result;
+import com.github.catvod.bean.Sub;
import com.github.catvod.bean.Vod;
+import com.github.catvod.utils.Utils;
import java.io.File;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
+import java.util.Objects;
public class Push extends Ali {
@@ -26,7 +31,7 @@ public class Push extends Ali {
@Override
public String playerContent(String flag, String id, List vipFlags) {
- if (flag.equals("直連")) return Result.get().url(id).string();
+ if (flag.equals("直連")) return Result.get().url(id).subs(getSubs(id)).string();
if (flag.equals("嗅探")) return Result.get().parse().url(id).string();
if (flag.equals("解析")) return Result.get().parse().jx().url(id).string();
return super.playerContent(flag, id, vipFlags);
@@ -42,4 +47,16 @@ public class Push extends Ali {
vod.setVodPlayUrl(TextUtils.join("$$$", Arrays.asList("播放$" + url, "播放$" + url, "播放$" + url)));
return vod;
}
+
+ private List getSubs(String url) {
+ if (!url.startsWith("file://")) return Collections.emptyList();
+ File file = new File(url.replace("file://", ""));
+ if (file.getParentFile() == null) return Collections.emptyList();
+ List subs = new ArrayList<>();
+ for (File f : Objects.requireNonNull(file.getParentFile().listFiles())) {
+ String ext = Utils.getExt(f.getName());
+ if (Utils.isSub(ext)) subs.add(Sub.create().name(Utils.removeExt(f.getName())).ext(ext).url("file://" + f.getAbsolutePath()));
+ }
+ return subs;
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/catvod/spider/WebDAV.java b/app/src/main/java/com/github/catvod/spider/WebDAV.java
index 10476fca..6fd8f44b 100644
--- a/app/src/main/java/com/github/catvod/spider/WebDAV.java
+++ b/app/src/main/java/com/github/catvod/spider/WebDAV.java
@@ -12,6 +12,7 @@ import com.github.catvod.bean.webdav.Drive;
import com.github.catvod.bean.webdav.Sorter;
import com.github.catvod.crawler.Spider;
import com.github.catvod.net.OkHttp;
+import com.github.catvod.utils.Image;
import com.github.catvod.utils.Utils;
import com.thegrizzlylabs.sardineandroid.DavResource;
@@ -27,10 +28,8 @@ import java.util.Map;
public class WebDAV extends Spider {
private static List drives;
- private List playExt;
private List allExt;
- private String vodPic;
- private String ext;
+ private String extend;
private List getFilter() {
List items = new ArrayList<>();
@@ -41,14 +40,13 @@ public class WebDAV extends Spider {
private void fetchRule() {
if (drives != null && !drives.isEmpty()) return;
- if (ext.startsWith("http")) ext = OkHttp.string(ext);
- Drive drive = Drive.objectFrom(ext);
+ if (extend.startsWith("http")) extend = OkHttp.string(extend);
+ Drive drive = Drive.objectFrom(extend);
drives = drive.getDrives();
- vodPic = drive.getVodPic();
}
private String getExt(DavResource item) {
- return item.getName().substring(item.getName().lastIndexOf(".") + 1);
+ return Utils.getExt(item.getName());
}
private String removeExt(DavResource item) {
@@ -61,10 +59,9 @@ public class WebDAV extends Spider {
@Override
public void init(Context context, String extend) {
- playExt = Arrays.asList("mp4", "mkv", "wmv", "flv", "avi", "mp3", "aac", "flac", "m4a");
- allExt = new ArrayList<>(Arrays.asList("ass", "ssa", "srt"));
- allExt.addAll(playExt);
- ext = extend;
+ this.allExt = new ArrayList<>(Arrays.asList("ass", "ssa", "srt"));
+ this.allExt.addAll(Utils.MEDIA);
+ this.extend = extend;
fetchRule();
}
@@ -88,7 +85,7 @@ public class WebDAV extends Spider {
List files = new ArrayList<>();
List list = new ArrayList<>();
Drive drive = getDrive(key);
- for (DavResource item : getList(drive, path, playExt)) {
+ for (DavResource item : getList(drive, path, Utils.MEDIA)) {
if (item.isDirectory()) folders.add(item);
else files.add(item);
}
@@ -96,8 +93,8 @@ public class WebDAV extends Spider {
Sorter.sort(type, order, folders);
Sorter.sort(type, order, files);
}
- for (DavResource item : folders) list.add(drive.vod(item, vodPic));
- for (DavResource item : files) list.add(drive.vod(item, vodPic));
+ for (DavResource item : folders) list.add(drive.vod(item, Image.FOLDER));
+ for (DavResource item : files) list.add(drive.vod(item, Image.VIDEO));
return Result.get().vod(list).page().string();
}
@@ -114,15 +111,15 @@ public class WebDAV extends Spider {
Sorter.sort("name", "asc", parents);
List playUrls = new ArrayList<>();
for (DavResource item : parents) {
- if (playExt.contains(getExt(item))) {
+ if (Utils.MEDIA.contains(getExt(item))) {
playUrls.add(item.getName() + "$" + drive.getName() + item.getPath() + findSubs(drive, item, subs));
}
}
Vod vod = new Vod();
vod.setVodId(name);
vod.setVodName(name);
- vod.setVodPic(vodPic);
vod.setVodPlayFrom(key);
+ vod.setVodPic(Image.VIDEO);
vod.setVodPlayUrl(TextUtils.join("#", playUrls));
return Result.string(vod);
}
diff --git a/app/src/main/java/com/github/catvod/utils/FileUtil.java b/app/src/main/java/com/github/catvod/utils/FileUtil.java
new file mode 100644
index 00000000..ed239ba5
--- /dev/null
+++ b/app/src/main/java/com/github/catvod/utils/FileUtil.java
@@ -0,0 +1,57 @@
+package com.github.catvod.utils;
+
+import com.github.catvod.spider.Init;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+public class FileUtil {
+
+ public static File getCacheDir() {
+ return Init.context().getExternalCacheDir();
+ }
+
+ public static File getCacheFile(String fileName) {
+ return new File(getCacheDir(), fileName);
+ }
+
+ 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();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static String read(File file) {
+ try {
+ return read(new FileInputStream(file));
+ } catch (Exception e) {
+ return "";
+ }
+ }
+
+ public static String read(InputStream is) {
+ try {
+ BufferedReader br = new BufferedReader(new InputStreamReader(is));
+ StringBuilder sb = new StringBuilder();
+ String text;
+ while ((text = br.readLine()) != null) sb.append(text).append("\n");
+ br.close();
+ return Utils.substring(sb.toString());
+ } catch (Exception e) {
+ return "";
+ }
+ }
+}
diff --git a/app/src/main/java/com/github/catvod/utils/Image.java b/app/src/main/java/com/github/catvod/utils/Image.java
new file mode 100644
index 00000000..072e998c
--- /dev/null
+++ b/app/src/main/java/com/github/catvod/utils/Image.java
@@ -0,0 +1,11 @@
+package com.github.catvod.utils;
+
+public class Image {
+
+ public static final String FOLDER = "https://s1.ax1x.com/2023/05/04/p9tgI81.png";
+ public static final String VIDEO = "https://s1.ax1x.com/2023/05/04/p9tgogx.png";
+
+ public static String getIcon(boolean folder) {
+ return folder ? FOLDER : VIDEO;
+ }
+}
diff --git a/app/src/main/java/com/github/catvod/utils/Sniffer.java b/app/src/main/java/com/github/catvod/utils/Sniffer.java
deleted file mode 100644
index ab4ac1af..00000000
--- a/app/src/main/java/com/github/catvod/utils/Sniffer.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.github.catvod.utils;
-
-import java.util.regex.Pattern;
-
-public class Sniffer {
-
- public static final Pattern RULE = Pattern.compile(
- "http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|" +
- "http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|" +
- "http((?!http).)*?video/tos*"
- );
-}
diff --git a/app/src/main/java/com/github/catvod/utils/Utils.java b/app/src/main/java/com/github/catvod/utils/Utils.java
index 7f088982..cddf8246 100644
--- a/app/src/main/java/com/github/catvod/utils/Utils.java
+++ b/app/src/main/java/com/github/catvod/utils/Utils.java
@@ -18,10 +18,17 @@ import java.security.MessageDigest;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
+import java.util.regex.Pattern;
public class Utils {
public static final String CHROME = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36";
+ public static final List MEDIA = Arrays.asList("mp4", "mkv", "wmv", "flv", "avi", "mp3", "aac", "flac", "m4a");
+ public static final Pattern RULE = Pattern.compile(
+ "http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|" +
+ "http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|" +
+ "http((?!http).)*?video/tos*"
+ );
public static boolean isVip(String url) {
List hosts = Arrays.asList("iqiyi.com", "v.qq.com", "youku.com", "le.com", "tudou.com", "mgtv.com", "sohu.com", "acfun.cn", "bilibili.com", "baofeng.com", "pptv.com");
@@ -31,7 +38,7 @@ public class Utils {
public static boolean isVideoFormat(String url) {
if (url.contains("url=http") || url.contains(".js") || url.contains(".css") || url.contains(".html")) return false;
- return Sniffer.RULE.matcher(url).find();
+ return RULE.matcher(url).find();
}
public static boolean isMobile() {
@@ -45,6 +52,10 @@ public class Utils {
return ext.equals("srt") || ext.equals("ass") || ext.equals("ssa");
}
+ public static String getExt(String name) {
+ return name.substring(name.lastIndexOf(".") + 1);
+ }
+
public static String getSize(double size) {
if (size <= 0) return "";
if (size > 1024 * 1024 * 1024 * 1024.0) {
@@ -144,15 +155,6 @@ public class Utils {
}
}
- public static void removeView(View view) {
- try {
- ViewGroup group = Init.getActivity().getWindow().getDecorView().findViewById(android.R.id.content);
- group.removeView(view);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
public static void loadWebView(String url, WebViewClient client) {
Init.run(() -> {
WebView webView = new WebView(Init.context());
diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar
index 52a69e89..644136f4 100644
Binary files a/jar/custom_spider.jar and b/jar/custom_spider.jar differ
diff --git a/jar/custom_spider.jar.md5 b/jar/custom_spider.jar.md5
index d1944f41..93d70814 100644
--- a/jar/custom_spider.jar.md5
+++ b/jar/custom_spider.jar.md5
@@ -1 +1 @@
-3943d051cc917b936cbfa116baf94a74
+e276d142b10b9f2c2971664d0b9dc9a3
diff --git a/json/adult.json b/json/adult.json
index ef35f43a..bb6f2054 100644
--- a/json/adult.json
+++ b/json/adult.json
@@ -1,5 +1,5 @@
{
- "spider": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;3943d051cc917b936cbfa116baf94a74",
+ "spider": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;e276d142b10b9f2c2971664d0b9dc9a3",
"wallpaper": "https://gao.chuqiuyu.tk",
"sites": [
{
diff --git a/json/alist.json b/json/alist.json
index 61ca182e..4077deb0 100644
--- a/json/alist.json
+++ b/json/alist.json
@@ -1,5 +1,5 @@
{
- "vodPic": "https://s1.ax1x.com/2023/04/04/pp5M5Jx.png",
+ "vodPic": "https://s1.ax1x.com/2023/05/04/p9tgI81.png",
"drives": [
{
"name": "小雅",
diff --git a/json/config.json b/json/config.json
index 791046be..4b3abb51 100644
--- a/json/config.json
+++ b/json/config.json
@@ -1,7 +1,16 @@
{
- "spider": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;3943d051cc917b936cbfa116baf94a74",
+ "spider": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;e276d142b10b9f2c2971664d0b9dc9a3",
"wallpaper": "http://饭太硬.ga/深色壁纸/api.php",
"sites": [
+ {
+ "key": "本地",
+ "name": "本地",
+ "type": 3,
+ "api": "csp_Local",
+ "searchable": 0,
+ "filterable": 0,
+ "changeable": 0
+ },
{
"key": "AList",
"name": "AList",
diff --git a/json/webdav.json b/json/webdav.json
index 44da0e4d..a1a19255 100644
--- a/json/webdav.json
+++ b/json/webdav.json
@@ -1,5 +1,4 @@
{
- "vodPic": "https://avatars.githubusercontent.com/u/3471963?v=4",
"drives": [
{
"name": "七米藍",