更新3.0

This commit is contained in:
admin
2025-03-28 17:00:42 +08:00
parent 86038423e1
commit 6cc49273b6
62 changed files with 6470 additions and 5240 deletions
+8 -49
View File
@@ -342,7 +342,6 @@ class Source extends QfShop
$this->excelField = $excelField;
$this->exportExcelData($dataList);
print_r(12);
}
/**
@@ -362,50 +361,7 @@ class Source extends QfShop
$source_category_id = input('source_category_id')??0;
$urls = input("urls");
$urls = explode("\n", $urls);
// 去掉数组元素中的空白字符
$urls = array_map('trim', $urls);
// 过滤掉空值的数组元素
$urls = array_filter($urls);
$allData = array_values(array_filter(array_map(function ($item) {
// 提取 URL
if (!preg_match('/https?:\/\/[^\s]+/', $item, $matches)) {
return null; // 没有匹配到 URL,直接丢弃
}
$url = trim($matches[0]);
$code = '';
// 提取提取码(?pwd= 或 , 分割)
if (preg_match('/\?pwd=([^,\s]+)/', $item, $pwdMatch)) {
$code = trim($pwdMatch[1]);
} elseif (preg_match('/,(.+)$/', $item, $commaMatch)) {
$code = trim($commaMatch[1]);
}
// 返回结果时,确保 title 保持为空字符串
return [
'url' => $url,
'title' => '',
'code' => $code
];
}, $urls)));
// 去重,使用 'url' 字段来去重
$uniqueUrls = [];
$allData = array_filter($allData, function($item) use (&$uniqueUrls) {
if (!in_array($item['url'], $uniqueUrls)) {
$uniqueUrls[] = $item['url']; // 添加到已处理的 URL 列表
return true; // 保留此项目
}
return false; // 去掉重复的项目
});
$allData = parsePanLinks(input("urls"));
$quarkPlugin = new QuarkPlugin();
if(input("type")==2){
@@ -416,7 +372,7 @@ class Source extends QfShop
$res = $quarkPlugin->import($allData,$source_category_id);
}
return jok('已提交任务,稍后查看结果2',$res);
return jok('已提交任务,稍后查看结果2',$allData);
}
/**
@@ -449,10 +405,13 @@ class Source extends QfShop
if ($error) {
return $error;
}
$quarkPlugin = new QuarkPlugin();
$result = $quarkPlugin->getFiles(Config('qfshop.quark_cookie'));
return jok('获取成功',$result);
$result = $quarkPlugin->getFiles(input('type')??0,input('pdir_fid')??0);
if($result['code'] != 200){
return jerr($result['message']);
}
return jok('获取成功',$result['data']);
}
}
+239 -1
View File
@@ -12,8 +12,246 @@ class Index extends QfShop
{
public function index()
{
return jok("Hello World!");
// return jok("Hello World!");
$cookie = 'csrfToken=gKesaboeWtJkukG4VNGh5Ljk; BAIDUID=757FBF0C282638B49A59DC7E37C7702B:FG=1; BAIDUID_BFESS=757FBF0C282638B49A59DC7E37C7702B:FG=1; Hm_lvt_7a3960b6f067eb0085b7f96ff5e660b0=1742787964; RT="z=1&dm=baidu.com&si=86a18d7d-4537-4b9b-ac36-06a756df3179&ss=m8mj80dn&sl=0&tt=0&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ul=261&hd=26a"; Hm_lpvt_7a3960b6f067eb0085b7f96ff5e660b0=1742794455; newlogin=1; ppfuid=FOCoIC3q5fKa8fgJnwzbE67EJ49BGJeplOzf+4l4EOvDuu2RXBRv6R3A1AZMa49I27C0gDDLrJyxcIIeAeEhD8JYsoLTpBiaCXhLqvzbzmvy3SeAW17tKgNq/Xx+RgOdb8TWCFe62MVrDTY6lMf2GrfqL8c87KLF2qFER3obJGmxOaJD7Qr04D9rET96PX99GEimjy3MrXEpSuItnI4KD2P5vWa8VVdqKPLBckQ0WyruzFB5pZ7L1GIDHy291nRZSc37WI7hn7N5DEkitWgHVHqxGUGRl1qke9+4QxQVI1jGgLbz7OSojK1zRbqBESR5Pdk2R9IA3lxxOVzA+Iw1TWLSgWjlFVG9Xmh1+20oPSbrzvDjYtVPmZ+9/6evcXmhcO1Y58MgLozKnaQIaLfWRIM4pp9u1B7t2Y8SxQH/XnrgZXt2Kg4R5SS0He7SlWGt42bJBOW2wZKr1YF6Z6VWTM5FjnYxYstXg/9EfB3EVmLB2thKqX6G/zUWgdr9REaklV1Uhhp5FAe6gNJIUptp7EMAaXYKm11G+JVPszQFdp9AJLcm4YSsYUXkaPI2Tl66J246cmjWQDTahAOINR5rXR5r/7VVI1RMZ8gb40q7az7vCK56XLooKT5a+rsFrf5Zu0yyCiiagElhrTEOtNdBJJq8eHwEHuFBni9ahSwpC7lbKkUwaKH69tf0DFV7hJROiLETSFloIVkHdy3+I2JUr1LsplAz0hMkWt/tE4tXVUV7QcTDTZWS/2mCoS/GV3N9awQ6iM6hs/BWjlgnEa1+5hYkkYOBBLZqDwzG9FQyZZJmSCAynpprqnVbhrjcNYdk5FKazXcZ/j40FJv+iLGBn3nkkgHlne61I8I7KhtQgInXjsNS9+mteGCT/vj/pEvkm+ZitcePbf21QMldRrlvw4uFnWmLU84Th29MqUuVR0ujl0ys3zTnxv/D47Q2VFyeFv12nptBFm2PISy0WmJ/Sy3ktTWpm7mcOABi5Gey1FBzkrq/nzqRQID/LRsJJW24e+1N4wlJzhNmFXMQ0YiYVdq7aHN89Oybut+xsc38J6I4Wd2rVi5xrH8hGqvd77OJuzH8X+tb0PV+Xnu3NL1fmqLIh+XcF6fnyPFPUxteQtbtLyi+gq5zowg1oFj8O/L9oVsoK22a9qUmM/HrJMRsLi1+J9aSd42+X78fDIZgkPh3epzLLvwRmnAbs5z/V+jl3P3gVnlwm9bfwhaFtnhFN2dHYAw7i4QhrXdzc77isXhbvkM5DsEwz5RTVSb4C+N+kIl81Iase/C16XVPKOj9XA==; BDUSS=jYwbDRJZG0yTi1VbDgtMWF6M1BGZ0k0ZG96dm9iOHJGczFMOUYtMFhwYlJmd2hvRVFBQUFBJCQAAAAAAAAAAAEAAAA63UdY2K~Yr8Dksru5~cjL0MQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHy4GfR8uBnT; BDUSS_BFESS=jYwbDRJZG0yTi1VbDgtMWF6M1BGZ0k0ZG96dm9iOHJGczFMOUYtMFhwYlJmd2hvRVFBQUFBJCQAAAAAAAAAAAEAAAA63UdY2K~Yr8Dksru5~cjL0MQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHy4GfR8uBnT; STOKEN=608a270497995724e6ed69015178372081331f404747f0a8492ee31de1184c41; PANPSC=6332961014215215224%3AAuI6D6iGxsvXU%2FMlrspYA1cS2d9ns3O5g0mIZdLHpdQGbqupDlB1gtH1%2BL8BUDk1coDRJu%2FbTp%2FiLaLUl0KD5De4ZdaW7CoOlL98c8Ccr9ch6uZoP3DwQ9YfJggg9xZJa6gjWHNi7jj6tFSlPcYsyyZWmuM7JILl4szUrnVKA5MNNiO7%2B4TS%2B1QskbZnP5EyWagh%2FyTVtumv9EBTj3cIccvsqRsDSpjMTItbmssa8FDJel1POICqciYu0WtaRbrkbSBvzd4TSG3wk8UVEJrJjetuQFScyIV%2FkrFWWqsgPEw%3D; Hm_lvt_182d6d59474cf78db37e0b2248640ea5=1742788120; ndut_fmt=6F438330EB0B4C594C515F276A3E73E3F2D3A8BB5A3C26DD1E721E98B58ED17B; Hm_lpvt_182d6d59474cf78db37e0b2248640ea5=1742795476; ab_sr=1.0.1_YTI3MjJmMjkwY2Y5MTJhMjc4MGJhNWU2ZGMwNTFiZWZiNmZhMTZkMWRlNWYyMzAxNTA1OTU2YTU4ZjU5M2ZiNWI5NDY2YjYwZWY3Yjc4YTY3MmNiMWVlNWNkNzE2ZGI2YzJmYTY1YTgwM2M1ZDJlYTk1YjAxZTcyMmNkNWRkNzliM2RiOGMzYzUxYmMwZTU4OTJiZmRmNjhiMDIzZDc1OWRhMGIyNGNkMDJhOTMzZjllYmQxMDUzY2ZjYzU4MjVk';
// $cookie = '';
$network = new \netdisk\pan\BaiduWork($cookie);
$bdstoken = $network->getBdstoken();
$network->setBdstoken($bdstoken);
// 验证提取码
// $linkUrl = "https://pan.baidu.com/s/11ioAjAwdwzI3BEvP5c62bw"; // 分享链接
// $passCode = "him8"; // 4位提取码
$linkUrl = "https://pan.baidu.com/s/1HU99KPtdJEpKnYnYLnQ37Q"; // 分享链接
$passCode = "ruwf"; // 4位提取码
// $linkUrl = "https://pan.baidu.com/s/1f03pM6dvtZPGA1bA0DH9AQ"; // 分享链接
// $passCode = "a9oa"; // 4位提取码
// 先判断是否有提取码
if (!empty($passCode)) {
// 验证提取码
$randsk = $network->verifyPassCode($linkUrl, $passCode);
if (is_numeric($randsk)) {
return jerr($network->getErrorMessage($randsk));
}
// 验证成功,更新 cookie
$network->updateBdclnd($randsk);
}
// 获取转存参数
$transferParams = $network->getTransferParams($linkUrl);
if (is_numeric($transferParams)) {
return jerr($network->getErrorMessage($transferParams));
}
// 解析返回的参数
list($shareId, $userId, $fsIds, $fileNames, $isDirs) = $transferParams;
$folderName = ''; // 自定义保存目录名
// 检查目录名是否包含非法字符
$invalidChars = ['<', '>', '|', '*', '?', '\\', ':'];
foreach ($invalidChars as $char) {
if (strpos($folderName, $char) !== false) {
return jerr('转存目录名有非法字符,不能包含:< > | * ? \\ :');
}
}
// 先检查目录是否存在,不存在再创建
$dirList = $network->getDirList('/' . $folderName);
// 如果返回的是错误码,说明目录不存在,需要创建
if (is_numeric($dirList)) {
$createResult = $network->createDir($folderName);
if ($createResult !== 0) {
return jerr($network->getErrorMessage($createResult));
}
}
// 执行文件转存
$transferResult = $network->transferFile([$shareId, $userId, $fsIds], $folderName);
if ($transferResult !== 0) {
return jerr($network->getErrorMessage($transferResult));
}
// 转存成功后,获取目录中的文件列表
$dirList = $network->getDirList('/' . $folderName);
if (is_numeric($dirList)) {
return jerr($network->getErrorMessage($dirList));
}
// 找到刚刚转存的所有文件
$targetFiles = [];
$fsIdList = [];
$filePaths = [];
$adFilePaths = []; // 用于存储包含广告的文件路径
$allFilesAreAds = true; // 假设所有文件都是广告
foreach ($dirList as $file) {
if (in_array($file['server_filename'], $fileNames)) {
$targetFiles[] = $file;
$fsIdList[] = $file['fs_id'];
$filePath = '/' . $folderName . '/' . $file['server_filename'];
$filePaths[] = $filePath;
// 检查文件名是否包含广告内容
$containsAd = $this->containsAdKeywords($file['server_filename']);
// 如果是目录,需要检查目录内的文件
if ($file['isdir'] == 1) {
// 获取子目录内容
$subDirList = $network->getDirList($filePath);
if (!is_numeric($subDirList)) {
foreach ($subDirList as $subFile) {
// 检查子文件是否包含广告关键词
if ($this->containsAdKeywords($subFile['server_filename'])) {
// 将包含广告的子文件添加到待删除列表
$adFilePaths[] = $filePath . '/' . $subFile['server_filename'];
} else {
// 只要有一个文件不是广告,就将标志设为false
$allFilesAreAds = false;
}
}
}
} else {
// 如果是文件,直接判断
if ($containsAd) {
$adFilePaths[] = $filePath;
} else {
$allFilesAreAds = false;
}
}
}
}
if (empty($targetFiles)) {
return jerr('找不到刚转存的文件');
}
// 如果所有文件都是广告,删除整个转存的内容
if ($allFilesAreAds && !empty($targetFiles)) {
// 删除所有转存的文件
$deleteResult = $network->batchDeleteFiles($filePaths);
if ($deleteResult['errno'] === 0) {
return jok('所有转存的文件都包含广告内容,已全部删除', [
'deletedCount' => $deleteResult['deletedCount'],
'paths' => $deleteResult['paths']
]);
} else {
return jerr('删除广告文件失败: ' . $deleteResult['message']);
}
}
// 如果只有部分文件是广告,只删除广告文件
if (!empty($adFilePaths)) {
$deleteResult = $network->batchDeleteFiles($adFilePaths);
// 删除后更新文件列表
if ($deleteResult['errno'] === 0) {
// 从fsIdList和filePaths中移除已删除的广告文件
foreach ($adFilePaths as $adPath) {
$key = array_search($adPath, $filePaths);
if ($key !== false) {
unset($filePaths[$key]);
unset($fsIdList[$key]);
}
}
// 重新索引数组
$filePaths = array_values($filePaths);
$fsIdList = array_values($fsIdList);
}
}
// 如果删除广告后没有文件了,返回提示
if (empty($fsIdList)) {
return jok('所有有效文件都包含广告内容,已全部删除');
}
// 创建分享
$expiry = 0; // 0为永久
$password = substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 4); // 随机4位提取码
$shareLink = $network->createShare(implode(',', $fsIdList), $expiry, $password);
if (is_numeric($shareLink)) {
return jerr($network->getErrorMessage($shareLink));
}
// 转存成功
return jok("文件转存成功", [
'fileNames' => $fileNames,
'fileCount' => count($fsIdList),
'folderName' => $folderName,
'shareLink' => $shareLink,
'password' => $password,
'filePaths' => $filePaths,
'removedAdFiles' => $adFilePaths
]);
}
/**
* 检查文件名是否包含广告关键词
* @param string $filename 文件名
* @return bool 是否包含广告关键词
*/
private function containsAdKeywords($filename)
{
$banned = Config('qfshop.quark_banned') ?? ''; // 如果出现这些字样就删除
// 广告关键词列表
$adKeywords = [];
if (!empty($banned)) {
$adKeywords = array_map('trim', explode(',', $banned));
}
// 转为小写进行比较
$lowercaseFilename = mb_strtolower($filename);
foreach ($adKeywords as $keyword) {
if (mb_strpos($lowercaseFilename, mb_strtolower($keyword)) !== false) {
return true;
}
}
return false;
}
public function getFiles()
{
$cookie = 'csrfToken=gKesaboeWtJkukG4VNGh5Ljk; BAIDUID=757FBF0C282638B49A59DC7E37C7702B:FG=1; BAIDUID_BFESS=757FBF0C282638B49A59DC7E37C7702B:FG=1; Hm_lvt_7a3960b6f067eb0085b7f96ff5e660b0=1742787964; RT="z=1&dm=baidu.com&si=86a18d7d-4537-4b9b-ac36-06a756df3179&ss=m8mj80dn&sl=0&tt=0&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ul=261&hd=26a"; Hm_lpvt_7a3960b6f067eb0085b7f96ff5e660b0=1742794455; newlogin=1; ppfuid=FOCoIC3q5fKa8fgJnwzbE67EJ49BGJeplOzf+4l4EOvDuu2RXBRv6R3A1AZMa49I27C0gDDLrJyxcIIeAeEhD8JYsoLTpBiaCXhLqvzbzmvy3SeAW17tKgNq/Xx+RgOdb8TWCFe62MVrDTY6lMf2GrfqL8c87KLF2qFER3obJGmxOaJD7Qr04D9rET96PX99GEimjy3MrXEpSuItnI4KD2P5vWa8VVdqKPLBckQ0WyruzFB5pZ7L1GIDHy291nRZSc37WI7hn7N5DEkitWgHVHqxGUGRl1qke9+4QxQVI1jGgLbz7OSojK1zRbqBESR5Pdk2R9IA3lxxOVzA+Iw1TWLSgWjlFVG9Xmh1+20oPSbrzvDjYtVPmZ+9/6evcXmhcO1Y58MgLozKnaQIaLfWRIM4pp9u1B7t2Y8SxQH/XnrgZXt2Kg4R5SS0He7SlWGt42bJBOW2wZKr1YF6Z6VWTM5FjnYxYstXg/9EfB3EVmLB2thKqX6G/zUWgdr9REaklV1Uhhp5FAe6gNJIUptp7EMAaXYKm11G+JVPszQFdp9AJLcm4YSsYUXkaPI2Tl66J246cmjWQDTahAOINR5rXR5r/7VVI1RMZ8gb40q7az7vCK56XLooKT5a+rsFrf5Zu0yyCiiagElhrTEOtNdBJJq8eHwEHuFBni9ahSwpC7lbKkUwaKH69tf0DFV7hJROiLETSFloIVkHdy3+I2JUr1LsplAz0hMkWt/tE4tXVUV7QcTDTZWS/2mCoS/GV3N9awQ6iM6hs/BWjlgnEa1+5hYkkYOBBLZqDwzG9FQyZZJmSCAynpprqnVbhrjcNYdk5FKazXcZ/j40FJv+iLGBn3nkkgHlne61I8I7KhtQgInXjsNS9+mteGCT/vj/pEvkm+ZitcePbf21QMldRrlvw4uFnWmLU84Th29MqUuVR0ujl0ys3zTnxv/D47Q2VFyeFv12nptBFm2PISy0WmJ/Sy3ktTWpm7mcOABi5Gey1FBzkrq/nzqRQID/LRsJJW24e+1N4wlJzhNmFXMQ0YiYVdq7aHN89Oybut+xsc38J6I4Wd2rVi5xrH8hGqvd77OJuzH8X+tb0PV+Xnu3NL1fmqLIh+XcF6fnyPFPUxteQtbtLyi+gq5zowg1oFj8O/L9oVsoK22a9qUmM/HrJMRsLi1+J9aSd42+X78fDIZgkPh3epzLLvwRmnAbs5z/V+jl3P3gVnlwm9bfwhaFtnhFN2dHYAw7i4QhrXdzc77isXhbvkM5DsEwz5RTVSb4C+N+kIl81Iase/C16XVPKOj9XA==; BDUSS=jYwbDRJZG0yTi1VbDgtMWF6M1BGZ0k0ZG96dm9iOHJGczFMOUYtMFhwYlJmd2hvRVFBQUFBJCQAAAAAAAAAAAEAAAA63UdY2K~Yr8Dksru5~cjL0MQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHy4GfR8uBnT; BDUSS_BFESS=jYwbDRJZG0yTi1VbDgtMWF6M1BGZ0k0ZG96dm9iOHJGczFMOUYtMFhwYlJmd2hvRVFBQUFBJCQAAAAAAAAAAAEAAAA63UdY2K~Yr8Dksru5~cjL0MQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHy4GfR8uBnT; STOKEN=608a270497995724e6ed69015178372081331f404747f0a8492ee31de1184c41; PANPSC=6332961014215215224%3AAuI6D6iGxsvXU%2FMlrspYA1cS2d9ns3O5g0mIZdLHpdQGbqupDlB1gtH1%2BL8BUDk1coDRJu%2FbTp%2FiLaLUl0KD5De4ZdaW7CoOlL98c8Ccr9ch6uZoP3DwQ9YfJggg9xZJa6gjWHNi7jj6tFSlPcYsyyZWmuM7JILl4szUrnVKA5MNNiO7%2B4TS%2B1QskbZnP5EyWagh%2FyTVtumv9EBTj3cIccvsqRsDSpjMTItbmssa8FDJel1POICqciYu0WtaRbrkbSBvzd4TSG3wk8UVEJrJjetuQFScyIV%2FkrFWWqsgPEw%3D; Hm_lvt_182d6d59474cf78db37e0b2248640ea5=1742788120; ndut_fmt=6F438330EB0B4C594C515F276A3E73E3F2D3A8BB5A3C26DD1E721E98B58ED17B; Hm_lpvt_182d6d59474cf78db37e0b2248640ea5=1742795476; ab_sr=1.0.1_YTI3MjJmMjkwY2Y5MTJhMjc4MGJhNWU2ZGMwNTFiZWZiNmZhMTZkMWRlNWYyMzAxNTA1OTU2YTU4ZjU5M2ZiNWI5NDY2YjYwZWY3Yjc4YTY3MmNiMWVlNWNkNzE2ZGI2YzJmYTY1YTgwM2M1ZDJlYTk1YjAxZTcyMmNkNWRkNzliM2RiOGMzYzUxYmMwZTU4OTJiZmRmNjhiMDIzZDc1OWRhMGIyNGNkMDJhOTMzZjllYmQxMDUzY2ZjYzU4MjVk';
// $cookie = '';
$network = new \netdisk\pan\BaiduWork($cookie);
$res = $network->getDirList('/');
return jok('获取成功',$res);
}
public function delete()
{
$cookie = 'csrfToken=gKesaboeWtJkukG4VNGh5Ljk; BAIDUID=757FBF0C282638B49A59DC7E37C7702B:FG=1; BAIDUID_BFESS=757FBF0C282638B49A59DC7E37C7702B:FG=1; Hm_lvt_7a3960b6f067eb0085b7f96ff5e660b0=1742787964; RT="z=1&dm=baidu.com&si=86a18d7d-4537-4b9b-ac36-06a756df3179&ss=m8mj80dn&sl=0&tt=0&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ul=261&hd=26a"; Hm_lpvt_7a3960b6f067eb0085b7f96ff5e660b0=1742794455; newlogin=1; ppfuid=FOCoIC3q5fKa8fgJnwzbE67EJ49BGJeplOzf+4l4EOvDuu2RXBRv6R3A1AZMa49I27C0gDDLrJyxcIIeAeEhD8JYsoLTpBiaCXhLqvzbzmvy3SeAW17tKgNq/Xx+RgOdb8TWCFe62MVrDTY6lMf2GrfqL8c87KLF2qFER3obJGmxOaJD7Qr04D9rET96PX99GEimjy3MrXEpSuItnI4KD2P5vWa8VVdqKPLBckQ0WyruzFB5pZ7L1GIDHy291nRZSc37WI7hn7N5DEkitWgHVHqxGUGRl1qke9+4QxQVI1jGgLbz7OSojK1zRbqBESR5Pdk2R9IA3lxxOVzA+Iw1TWLSgWjlFVG9Xmh1+20oPSbrzvDjYtVPmZ+9/6evcXmhcO1Y58MgLozKnaQIaLfWRIM4pp9u1B7t2Y8SxQH/XnrgZXt2Kg4R5SS0He7SlWGt42bJBOW2wZKr1YF6Z6VWTM5FjnYxYstXg/9EfB3EVmLB2thKqX6G/zUWgdr9REaklV1Uhhp5FAe6gNJIUptp7EMAaXYKm11G+JVPszQFdp9AJLcm4YSsYUXkaPI2Tl66J246cmjWQDTahAOINR5rXR5r/7VVI1RMZ8gb40q7az7vCK56XLooKT5a+rsFrf5Zu0yyCiiagElhrTEOtNdBJJq8eHwEHuFBni9ahSwpC7lbKkUwaKH69tf0DFV7hJROiLETSFloIVkHdy3+I2JUr1LsplAz0hMkWt/tE4tXVUV7QcTDTZWS/2mCoS/GV3N9awQ6iM6hs/BWjlgnEa1+5hYkkYOBBLZqDwzG9FQyZZJmSCAynpprqnVbhrjcNYdk5FKazXcZ/j40FJv+iLGBn3nkkgHlne61I8I7KhtQgInXjsNS9+mteGCT/vj/pEvkm+ZitcePbf21QMldRrlvw4uFnWmLU84Th29MqUuVR0ujl0ys3zTnxv/D47Q2VFyeFv12nptBFm2PISy0WmJ/Sy3ktTWpm7mcOABi5Gey1FBzkrq/nzqRQID/LRsJJW24e+1N4wlJzhNmFXMQ0YiYVdq7aHN89Oybut+xsc38J6I4Wd2rVi5xrH8hGqvd77OJuzH8X+tb0PV+Xnu3NL1fmqLIh+XcF6fnyPFPUxteQtbtLyi+gq5zowg1oFj8O/L9oVsoK22a9qUmM/HrJMRsLi1+J9aSd42+X78fDIZgkPh3epzLLvwRmnAbs5z/V+jl3P3gVnlwm9bfwhaFtnhFN2dHYAw7i4QhrXdzc77isXhbvkM5DsEwz5RTVSb4C+N+kIl81Iase/C16XVPKOj9XA==; BDUSS=jYwbDRJZG0yTi1VbDgtMWF6M1BGZ0k0ZG96dm9iOHJGczFMOUYtMFhwYlJmd2hvRVFBQUFBJCQAAAAAAAAAAAEAAAA63UdY2K~Yr8Dksru5~cjL0MQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHy4GfR8uBnT; BDUSS_BFESS=jYwbDRJZG0yTi1VbDgtMWF6M1BGZ0k0ZG96dm9iOHJGczFMOUYtMFhwYlJmd2hvRVFBQUFBJCQAAAAAAAAAAAEAAAA63UdY2K~Yr8Dksru5~cjL0MQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHy4GfR8uBnT; STOKEN=608a270497995724e6ed69015178372081331f404747f0a8492ee31de1184c41; PANPSC=6332961014215215224%3AAuI6D6iGxsvXU%2FMlrspYA1cS2d9ns3O5g0mIZdLHpdQGbqupDlB1gtH1%2BL8BUDk1coDRJu%2FbTp%2FiLaLUl0KD5De4ZdaW7CoOlL98c8Ccr9ch6uZoP3DwQ9YfJggg9xZJa6gjWHNi7jj6tFSlPcYsyyZWmuM7JILl4szUrnVKA5MNNiO7%2B4TS%2B1QskbZnP5EyWagh%2FyTVtumv9EBTj3cIccvsqRsDSpjMTItbmssa8FDJel1POICqciYu0WtaRbrkbSBvzd4TSG3wk8UVEJrJjetuQFScyIV%2FkrFWWqsgPEw%3D; Hm_lvt_182d6d59474cf78db37e0b2248640ea5=1742788120; ndut_fmt=6F438330EB0B4C594C515F276A3E73E3F2D3A8BB5A3C26DD1E721E98B58ED17B; Hm_lpvt_182d6d59474cf78db37e0b2248640ea5=1742795476; ab_sr=1.0.1_YTI3MjJmMjkwY2Y5MTJhMjc4MGJhNWU2ZGMwNTFiZWZiNmZhMTZkMWRlNWYyMzAxNTA1OTU2YTU4ZjU5M2ZiNWI5NDY2YjYwZWY3Yjc4YTY3MmNiMWVlNWNkNzE2ZGI2YzJmYTY1YTgwM2M1ZDJlYTk1YjAxZTcyMmNkNWRkNzliM2RiOGMzYzUxYmMwZTU4OTJiZmRmNjhiMDIzZDc1OWRhMGIyNGNkMDJhOTMzZjllYmQxMDUzY2ZjYzU4MjVk';
// $cookie = '';
$network = new \netdisk\pan\BaiduWork($cookie);
$bdstoken = $network->getBdstoken();
$network->setBdstoken($bdstoken);
// 使用固定的文件路径数组
$filePaths = [
"//1",
"//2"
];
// 调用批量删除方法
$result = $network->batchDeleteFiles($filePaths);
if ($result['errno'] === 0) {
return jok('文件删除成功', [
'deletedCount' => $result['deletedCount'],
'paths' => $result['paths']
]);
} else {
return jerr($result['message']);
}
}
public function search() {
$fc = new VicWord();
$keywords = input('keywords');
+28 -683
View File
@@ -5,703 +5,48 @@ namespace app\api\controller;
use think\App;
use think\facade\Cache;
use app\api\QfShop;
use app\model\Source as SourceModel;
class Open extends QfShop
{
public function __construct(App $app)
{
parent::__construct($app);
$this->url = "";
$this->is_type = 0;
$this->cookie = ""; //夸克登录凭证
$this->Authorization = ""; //阿里登录凭证
$this->expired_type = 1; //1分享永久 2临时
$this->to_pdir_fid = ""; //存入目标文件
$this->ad_fid = "";
$this->code = ""; //提取码
$this->isType = 0; //等于1时仅校验是否有效并提取资源信息
$this->urlHeader = array(
'Accept: application/json, text/plain, */*',
'Accept-Language: zh-CN,zh;q=0.9',
'content-type: application/json;charset=UTF-8',
'sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
'sec-ch-ua-mobile: ?0',
'sec-ch-ua-platform: "Windows"',
'sec-fetch-dest: empty',
'sec-fetch-mode: cors',
'sec-fetch-site: same-site',
'Referer: https://pan.quark.cn/',
'Referrer-Policy: strict-origin-when-cross-origin',
'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
);
}
/**
*
*
* @return void
*/
public function index()
{
return jok('Hello World');
}
/**
* 获取夸克网盘文件夹
*
* @return void
*/
public function getFiles()
{
$this->cookie = input('cookie')??'';
$urlData = [];
$queryParams = [
'pr' => 'ucpro',
'fr' => 'pc',
'uc_param_str' => '',
'pdir_fid' => 0,
'_page' => 1,
'_size' => 50,
'_fetch_total' => 1,
'_fetch_sub_dirs' => 0,
'_sort' => 'file_type:asc,updated_at:desc',
];
$this->urlHeader[] = 'cookie: ' . $this->cookie;
$res = curlHelper("https://drive-pc.quark.cn/1/clouddrive/file/sort", "GET", json_encode($urlData), $this->urlHeader,$queryParams)['body'];
$res = json_decode($res, true);
if($res['status'] !== 200){
return jerr($res['message']=='require login [guest]'?'夸克未登录,请检查cookie':$res['message']);
}
return jok('获取成功',$res['data']['list']);
}
/**
* 一键转存并分享资源
*
* type 0 夸克 1阿里
*
* @return void
*/
public function transfer()
{
$url = input("url");
$this->code = input('code')??'';
$this->isType = input('isType')??0;
if($this->isType != 1){ //直接入口就不用cookie 防止账号异常
$this->cookie = input('cookie')??'';
$this->Authorization = input('Authorization')??'';
}
$this->expired_type = input('expired_type')??1;
$this->to_pdir_fid = input('to_pdir_fid')??"";
$this->ad_fid = input('ad_fid')??"";
if (strpos($url, '?entry=') !== false) {
$entry = preg_match('/\?entry=([^&]+)/', $url, $matches) ? $matches[1] : '';
$url = preg_match('/.*(?=\?entry=)/', $url, $matches) ? $matches[0] : '';
}
$substring = strstr($url, 's/');
if ($substring !== false) {
$pwd_id = substr($substring, 2); // 去除 's/' 部分
} else {
return jerr("资源地址格式有误");
}
$this->urlHeader[] = 'cookie: ' . $this->cookie;
$patterns = [
'pan.quark.cn' => 0,
'www.alipan.com' => 1,
'www.aliyundrive.com' => 1,
// 'pan.baidu.com' => 2,
'drive.uc.cn' => 3,
// 'pan.xunlei.com' => 4,
$urlData = [
'expired_type' => input('expired_type')??1, // 1正式资源 2临时资源
'url' => input("url")?? '',
'code' => input('code')??'',
'isType' => input('isType')??0,
];
$url_type = -1; // 默认值为 -1
foreach ($patterns as $pattern => $type) {
if (strpos($url, $pattern) !== false) {
$url_type = $type;
break; // 一旦匹配成功,退出循环
}
}
$this->url = $url;
if ($url_type == 0) {
//夸克
if(empty($this->cookie) && $this->isType==0){
jerr("参数有误");
}
$this->transferQuark(strtok($pwd_id, '#'));
} else if($url_type == 1){
//阿里
$this->transferAlipan($pwd_id);
} else if($url_type == 3){
//UC
$this->transferUc($pwd_id);
} else {
return jerr("资源地址格式有误");
}
}
/**
* 夸克 - 一键转存并分享资源
*
* @return void
*/
public function transferQuark($pwd_id){
//获取要转存夸克资源的stoken
$infoData = $this->getStoken($pwd_id);
if($this->isType == 1){
$urls['title'] = $infoData['title'];
$urls['share_url'] = $this->url;
return jok('检验成功', $urls);
}
$stoken = $infoData['stoken'];
//获取要转存夸克资源的详细内容
$detail = $this->getShare($pwd_id,$stoken);
$fid_list = [];
$fid_token_list = [];
$title = $detail['share']['title']; //资源名称
foreach ($detail['list'] as $key => $value) {
$fid_list[] = $value['fid'];
$fid_token_list[] = $value['share_fid_token'];
if(empty($urlData['url'])){
return jerr('资源地址不能为空');
}
//转存资源到指定文件夹
$task_id = $this->getShareSave($pwd_id,$stoken,$fid_list,$fid_token_list);
$transfer = new \netdisk\Transfer();
$res = $transfer->transfer($urlData);
//转存后根据task_id获取转存到自己网盘后的信息
$retry_index = 0;
$myData = '';
while ($myData=='' || $myData['status'] != 2) {
$myData = $this->getShareTask($task_id, $retry_index);
$retry_index++;
// 可以添加一个最大重试次数的限制,防止无限循环
if ($retry_index > 50) {
break;
}
}
try {
//删除转存后可能有的广告
$banned = Config('qfshop.quark_banned')??''; //如果出现这些字样就删除
if(!empty($banned)){
$bannedList = explode(',', $banned);
$pdir_fid = $myData['save_as']['save_as_top_fids'][0];
$dellist = [];
$plist = $this->getPdirFid($pdir_fid);
if(!empty($plist)){
foreach ($plist as $key => $value) {
// 检查$value['file_name']是否包含$bannedList中的任何一项
$contains = false;
foreach ($bannedList as $item) {
if (strpos($value['file_name'], $item) !== false) {
$contains = true;
break;
}
}
if ($contains) {
$dellist[] = $value['fid'];
}
}
if(count($plist) === count($dellist)){
//要删除的资源数如果和原数据资源数一样 就全部删除并终止下面的分享
$this->deletepdirFid([$pdir_fid]);
return jerr("资源内容为空");
}else{
if (!empty($dellist)) {
$this->deletepdirFid($dellist);
}
}
}
}
} catch (Exception $e) {
}
$shareFid = $myData['save_as']['save_as_top_fids'];
//分享资源并拿到更新后的task_id
$task_id = $this->getShareBtn($myData['save_as']['save_as_top_fids'],$title);
//根据task_id拿到share_id
$retry_index = 0;
$myData = '';
while ($myData=='' || $myData['status'] != 2) {
$myData = $this->getShareTask($task_id, $retry_index);
$retry_index++;
// 可以添加一个最大重试次数的限制,防止无限循环
if ($retry_index > 50) {
break;
}
}
//根据share_id 获取到分享链接
$share = $this->getSharePassword($myData['share_id']);
// $share['fid'] = $share['first_file']['fid'];
$share['fid'] = (is_array($shareFid) && count($shareFid) > 1) ? $shareFid : $share['first_file']['fid'];
return jok('转存成功', $share);
}
/**
* 阿里 - 一键转存并分享资源
*
* @return void
*/
public function transferAlipan($share_id)
{
$data = [];
$infos = $this->getAlipan1($share_id);
if($this->isType == 1){
$urls['title'] = $infos['share_name'];
$urls['share_url'] = $this->url;
return jok('检验成功', $urls);
}else{
return jerr('阿里暂不支持转存');
}
//通过分享id获取file_id
$file_infos = $infos['file_infos'];
//通过分享id获取X-Share-Token
$share_token = $this->getAlipan2($share_id);
$data3['requests'] = [];
$data3['resource'] = 'file';
foreach ($file_infos as $key=>$value) {
$data3['requests'][$key]['body']['auto_rename'] = true;
$data3['requests'][$key]['body']['file_id'] = $value['file_id'];
$data3['requests'][$key]['body']['share_id'] = $share_id;
$data3['requests'][$key]['body']['to_drive_id'] = '2008425230';
$data3['requests'][$key]['body']['to_parent_file_id'] = '66a20824c3846d890f6542c6aac2c79822d2a64f';
$data3['requests'][$key]['headers']['Content-Type'] = 'application/json';
$data3['requests'][$key]['id'] = $key.'';
$data3['requests'][$key]['method'] = 'POST';
$data3['requests'][$key]['url'] = '/file/copy';
}
//保存
$responses = $this->getAlipan3($data3,$share_token);
$data4['drive_id'] = '2008425230';
$data4['expiration'] = '';
$data4['share_pwd'] = '';
$data4['file_id_list'] = [];
foreach ($responses as $key=>$value){
$data4['file_id_list'][] = $value['body']['file_id'];
}
//分享
$share = $this->getAlipan4($data4);
$data['share_url'] = $share['share_url'];
$data['title'] = $share['share_title'];
return jok('转存成功', $data);
}
/**
* UC- 一键转存并分享资源
*
* @return void
*/
public function transferUc($pwd_id){
$infoData = $this->getStokenUc($pwd_id);
if($this->isType == 1){
$urls['title'] = $infoData['title'];
$urls['share_url'] = $this->url;
return jok('检验成功', $urls);
}else{
return jerr('UC暂不支持转存');
}
}
/**
* 获取要转存资源的stoken
*
* @return void
*/
public function getStoken($pwd_id)
{
$urlData = array(
'passcode' => '',
'pwd_id' => $pwd_id,
);
$res = curlHelper("https://drive-pc.quark.cn/1/clouddrive/share/sharepage/token?pr=ucpro&fr=pc&uc_param_str=", "POST",json_encode($urlData), $this->urlHeader)['body'];
$res = json_decode($res, true);
if($res['status'] !== 200){
if($res['code'] !== 200){
return jerr($res['message']);
}
$data = $res['data'];
return $data;
$isSave = input('isSave')??0;
if($isSave == 1){
$data = [
"title" => $res['data']['title'],
"url" => $res['data']['share_url'],
"is_type" => determineIsType($res['data']['share_url']),
"code" => $res['data']['code'] ?? $urlData['code'] ?? '',
"is_time" => $urlData['expired_type']==2 ? 1 : 0,
"update_time" => time(),
"create_time" => time(),
"fid" => is_array($res['data']['fid'] ?? '') ? json_encode($res['data']['fid']) : ($res['data']['fid'] ?? '')
];
$SourceModel = new SourceModel();
$SourceModel->insertGetId($data);
}
return jok("获取成功",$res['data']);
}
/**
* 获取要转存资源的详细内容
*
* @return void
*/
public function getShare($pwd_id,$stoken)
{
$urlData = array();
$queryParams = [
"pr" => "ucpro",
"fr" => "pc",
"uc_param_str" => "",
"pwd_id" => $pwd_id,
"stoken" => $stoken,
"pdir_fid" => "0",
"force" => "0",
"_page" => "1",
"_size" => "100",
"_fetch_banner" => "1",
"_fetch_share" => "1",
"_fetch_total" => "1",
"_sort" => "file_type:asc,updated_at:desc"
];
$res = curlHelper("https://drive-pc.quark.cn/1/clouddrive/share/sharepage/detail", "GET", json_encode($urlData), $this->urlHeader,$queryParams)['body'];
$res = json_decode($res, true);
if($res['status'] !== 200){
return jerr($res['message']);
}
return $res['data'];
}
/**
* 转存资源到指定文件夹
*
* @return void
*/
public function getShareSave($pwd_id,$stoken,$fid_list,$fid_token_list)
{
$to_pdir_fid = $this->to_pdir_fid??"";
$urlData = array(
'fid_list' => $fid_list,
'fid_token_list' => $fid_token_list,
'to_pdir_fid' => $to_pdir_fid,
'pwd_id' => $pwd_id,
'stoken' => $stoken,
'pdir_fid' => "0",
'scene' => "link",
);
$queryParams = [
"entry" => "update_share",
"pr" => "ucpro",
"fr" => "pc",
"uc_param_str" => ""
];
$res = curlHelper("https://drive-pc.quark.cn/1/clouddrive/share/sharepage/save", "POST", json_encode($urlData), $this->urlHeader,$queryParams)['body'];
$res = json_decode($res, true);
if($res['status'] !== 200){
return jerr($res['message']=='require login [guest]'?'夸克未登录,请检查cookie':$res['message']);
}
return $res['data']['task_id'];
}
/**
* 分享资源拿到task_id
*
* @return void
*/
public function getShareBtn($fid_list,$title)
{
if(!empty($this->ad_fid)){
$fid_list[] = $this->ad_fid;
}
$urlData = array(
'fid_list' => $fid_list,
'expired_type' => $this->expired_type,
'title' => $title,
'url_type' => 1,
);
$queryParams = [
"pr" => "ucpro",
"fr" => "pc",
"uc_param_str" => ""
];
$res = curlHelper("https://drive-pc.quark.cn/1/clouddrive/share", "POST", json_encode($urlData), $this->urlHeader,$queryParams)['body'];
$res = json_decode($res, true);
if($res['status'] !== 200){
return jerr($res['message']);
}
return $res['data']['task_id'];
}
/**
* 根据task_id拿到自己的资源信息
*
* @return void
*/
public function getShareTask($task_id,$retry_index)
{
$urlData = array();
$queryParams = [
"pr" => "ucpro",
"fr" => "pc",
"uc_param_str" => "",
"task_id" => $task_id,
"retry_index" => $retry_index
];
$res = curlHelper("https://drive-pc.quark.cn/1/clouddrive/task", "GET", json_encode($urlData), $this->urlHeader, $queryParams)['body'];
$res = json_decode($res, true);
if($res['status'] !== 200){
return jerr($res['message']);
}
return $res['data'];
}
/**
* 根据share_id 获取到分享链接
*
* @return void
*/
public function getSharePassword($share_id)
{
$urlData = array(
'share_id' => $share_id,
);
$queryParams = [
"pr" => "ucpro",
"fr" => "pc",
"uc_param_str" => ""
];
$res = curlHelper("https://drive-pc.quark.cn/1/clouddrive/share/password", "POST", json_encode($urlData), $this->urlHeader,$queryParams)['body'];
$res = json_decode($res, true);
if($res['status'] !== 200){
return jerr($res['message']);
}
return $res['data'];
}
/**
* 删除指定资源
*
* @return void
*/
public function deletepdirFid($filelist)
{
$urlData = array(
'action_type' => 2,
'exclude_fids' => [],
'filelist' => $filelist,
);
$queryParams = [
"pr" => "ucpro",
"fr" => "pc",
"uc_param_str" => ""
];
curlHelper("https://drive-pc.quark.cn/1/clouddrive/file/delete", "POST", json_encode($urlData), $this->urlHeader,$queryParams)['body'];
}
/**
* 获取夸克网盘指定文件夹内容
*
* @return void
*/
public function getPdirFid($pdir_fid)
{
$urlData = [];
$queryParams = [
'pr' => 'ucpro',
'fr' => 'pc',
'uc_param_str' => '',
'pdir_fid' => $pdir_fid,
'_page' => 1,
'_size' => 200,
'_fetch_total' => 1,
'_fetch_sub_dirs' => 0,
'_sort' => 'file_type:asc,updated_at:desc',
];
$res = curlHelper("https://drive-pc.quark.cn/1/clouddrive/file/sort", "GET", json_encode($urlData), $this->urlHeader,$queryParams)['body'];
$res = json_decode($res, true);
if($res['status'] !== 200){
return [];
}
return $res['data']['list'];
}
/**
* 阿里-0-通过分享id获取file_id
*
* @return void
*/
public function getAlipan1($share_id)
{
$urlData = [
'share_id' => $share_id,
];
$urlHeader = array(
'Content-Type: application/json',
);
$res = curlHelper("https://api.aliyundrive.com/adrive/v3/share_link/get_share_by_anonymous", "POST", json_encode($urlData),$urlHeader)['body'];
$res = json_decode($res, true);
if(!isset($res['file_infos'])){
return jerr($res['message']??'转存失败1');
}
return $res;
}
/**
* 阿里-0-通过分享id获取X-Share-Token
*
* @return void
*/
public function getAlipan2($share_id)
{
$urlData = array(
'share_id' => $share_id,
);
$urlHeader = array(
'Accept: application/json, text/plain, */*',
'Accept-Encoding: gzip, deflate, br, zstd',
'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Authorization: '.$this->Authorization,
'Content-Type: application/json',
'Origin: https://www.alipan.com',
'Priority: u=1, i',
'Referer: https://www.alipan.com/',
'Sec-Ch-Ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
'Sec-Ch-Ua-Mobile: ?0',
'Sec-Ch-Ua-Platform: "Windows"',
'Sec-Fetch-Dest: empty',
'Sec-Fetch-Mode: cors',
'Sec-Fetch-Site: same-site',
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0',
'X-Canary: client=web,app=share,version=v2.3.1'
);
$res = curlHelper("https://api.aliyundrive.com/v2/share_link/get_share_token", "POST", json_encode($urlData), $urlHeader)['body'];
$res = json_decode($res, true);
if(!isset($res['share_token'])){
return jerr($res['message']??'转存失败2');
}
return $res['share_token'];
}
/**
* 阿里-1-保存
*
* @return void
*/
public function getAlipan3($urlData,$share_token)
{
$urlHeader = array(
'Accept: application/json, text/plain, */*',
'Accept-Encoding: gzip, deflate, br, zstd',
'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Authorization: '.$this->Authorization,
'Content-Type: application/json',
'Origin: https://www.alipan.com',
'Priority: u=1, i',
'Referer: https://www.alipan.com/',
'Sec-Ch-Ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
'Sec-Ch-Ua-Mobile: ?0',
'Sec-Ch-Ua-Platform: "Windows"',
'Sec-Fetch-Dest: empty',
'Sec-Fetch-Mode: cors',
'Sec-Fetch-Site: same-site',
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0',
'X-Canary: client=web,app=share,version=v2.3.1',
'X-Share-Token: '.$share_token
);
$res = curlHelper("https://api.aliyundrive.com/adrive/v4/batch", "POST", json_encode($urlData), $urlHeader)['body'];
$res = json_decode($res, true);
if(!isset($res['responses'])){
return jerr($res['message']??'转存失败3');
}
return $res['responses'];
}
/**
* 阿里-2-分享
*
* @return void
*/
public function getAlipan4($urlData)
{
$urlHeader = array(
'Accept: application/json, text/plain, */*',
'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Authorization: '.$this->Authorization,
'Content-Type: application/json',
'Origin: https://www.alipan.com',
'Priority: u=1, i',
'Referer: https://www.alipan.com/',
'Sec-Ch-Ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
'Sec-Ch-Ua-Mobile: ?0',
'Sec-Ch-Ua-Platform: "Windows"',
'Sec-Fetch-Dest: empty',
'Sec-Fetch-Mode: cors',
'Sec-Fetch-Site: same-site',
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0',
'X-Canary: client=web,app=share,version=v2.3.1'
);
$res = curlHelper("https://api.aliyundrive.com/adrive/v2/share_link/create", "POST", json_encode($urlData), $urlHeader)['body'];
$res = json_decode($res, true);
return jerr($res);
if(!isset($res['share_url'])){
return jerr($res['message']??'转存失败4');
}
return $res;
}
/**
* UC 00000
*
* @return void
*/
public function getStokenUc($pwd_id)
{
$urlData = array(
'passcode' => '',
'pwd_id' => $pwd_id,
);
$urlHeader = array(
'Accept: application/json, text/plain, */*',
'Accept-Language: zh-CN,zh;q=0.9',
'content-type: application/json;charset=UTF-8',
'sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
'sec-ch-ua-mobile: ?0',
'sec-ch-ua-platform: "Windows"',
'sec-fetch-dest: empty',
'sec-fetch-mode: cors',
'sec-fetch-site: same-site',
'Referer: https://drive.uc.cn/',
'Referrer-Policy: strict-origin-when-cross-origin',
'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
);
$res = curlHelper("https://pc-api.uc.cn/1/clouddrive/share/sharepage/token?pr=UCBrowser&fr=pc", "POST",json_encode($urlData),$urlHeader)['body'];
$res = json_decode($res, true);
if($res['status'] !== 200){
return jerr($res['message']);
}
$data = $res['data'];
return $data;
}
}
+24 -120
View File
@@ -15,7 +15,6 @@ class Other extends QfShop
{
parent::__construct($app);
$this->model = new SourceModel();
$this->cookie = Config('qfshop.quark_cookie');
}
/**
@@ -25,14 +24,9 @@ class Other extends QfShop
*/
public function all_search($param='')
{
if(empty($param)){
$searchdata = input('post.');
if (empty($searchdata['title'])) {
return jerr("请输入要看的内容");
}
$title = $searchdata['title'];
}else{
$title = $param;
$title = $param ?: input('post.title', '');
if (empty($title)) {
return jerr("请输入要看的内容");
}
$map[] = ['status', '=', 1];
@@ -42,29 +36,17 @@ class Other extends QfShop
$urls = $this->model->where($map)->field('source_id as id, title, url,is_time')->order('update_time', 'desc')->limit(5)->select()->toArray();
if (!empty($urls)) {
// 获取所有需要更新的ID
$ids = [];
foreach ($urls as $item) {
$ids[] = $item['id'];
}
// 更新数据库中的 update_time 字段
if (!empty($ids)) {
$this->model->whereIn('source_id', $ids)->update(['update_time' => time()]);
}
$ids = array_column($urls, 'id');
$this->model->whereIn('source_id', $ids)->update(['update_time' => time()]);
return !empty($param) ? $urls : jok('临时资源获取成功', $urls);
}
//同一个搜索内容锁机
if (Cache::has($title)) {
//同一个搜索内容锁机
if (Cache::has($title)) {
// 检查缓存中是否已有结果
return !empty($param) ? Cache::get($title) : jok('临时资源获取成功', Cache::get($title));
}
// 检查是否有正在处理的请求
if (Cache::has($title . '_processing')) {
// 如果当前正在处理相同关键词的请求,等待结果
@@ -89,41 +71,19 @@ class Other extends QfShop
$num_total = 2; //最多想要几条结果
$num_success = 0;
// 处理第2个源
foreach (source2($title) as $value) {
// 定义源的顺序
$sources = ['source2', 'source4', 'source5', 'source3', 'source1'];
foreach ($sources as $source) {
if ($num_success >= $num_total) {
break; // 有效结果数量已达到,则跳出循环
break;
}
// 如果 URL 不存在则新增 $value
if (!$this->urlExists($searchList, $value['url'])) {
$searchList[] = $value;
$this->processUrl($value, $num_success, $datas);
}
}
// 处理第4个源
if ($num_success < $num_total) {
foreach (source4($title) as $value) {
foreach ($source($title) as $value) {
if ($num_success >= $num_total) {
break; // 有效结果数量已达到,则跳出循环
break;
}
// 如果 URL 不存在则新增 $value
if (!$this->urlExists($searchList, $value['url'])) {
$searchList[] = $value;
$this->processUrl($value, $num_success, $datas);
}
}
}
// 处理第5个源
if ($num_success < $num_total) {
foreach (source5($title) as $value) {
if ($num_success >= $num_total) {
break; // 有效结果数量已达到,则跳出循环
}
// 如果 URL 不存在则新增 $value
if (!$this->urlExists($searchList, $value['url'])) {
$searchList[] = $value;
$this->processUrl($value, $num_success, $datas);
@@ -131,36 +91,6 @@ class Other extends QfShop
}
}
// 处理第3个源
if ($num_success < $num_total) {
foreach (source3($title) as $value) {
if ($num_success >= $num_total) {
break; // 有效结果数量已达到,则跳出循环
}
// 如果 URL 不存在则新增 $value
if (!$this->urlExists($searchList, $value['url'])) {
$searchList[] = $value;
$this->processUrl($value, $num_success, $datas);
}
}
}
// 处理第1个源 第一个源放最后
if ($num_success < $num_total) {
foreach (source1($title) as $value) {
if ($num_success >= $num_total) {
break; // 有效结果数量已达到,则跳出循环
}
// 如果 URL 不存在则新增 $value
if (!$this->urlExists($searchList, $value['url'])) {
$searchList[] = $value;
$this->processUrl($value, $num_success, $datas);
}
}
}
Cache::set($title, $datas, 60); // 缓存结果60秒
Cache::delete($title . '_processing'); // 解锁
@@ -201,15 +131,14 @@ class Other extends QfShop
$pwd_id = substr($substring, 2); // 去除 's/' 部分
$urlData = array(
'cookie' => $this->cookie,
'url' => $value['url'],
'expired_type' => 2,
'to_pdir_fid' => '', //存入目标文件
'ad_fid' => '', //分享时带上这个文件
);
$res = curlHelper(Request::domain()."/api/open/transfer", "POST", $urlData)['body'];
$res = json_decode($res, true);
$transfer = new \netdisk\Transfer();
$res = $transfer->transfer($urlData);
if($res['code'] !== 200){
return; // 模拟 continue 行为
}
@@ -247,40 +176,15 @@ class Other extends QfShop
$this->model->where($map)->chunk(100, function ($order) {
foreach ($order as $value) {
$deles = $value->toArray();
// $filelist = [];
// $filelist[] = $deles['fid'];
$fid = $deles['fid'];
// 尝试解码,如果是有效的 JSON 数组则使用,否则转为单元素数组
$filelist = (is_string($fid) && ($decodedFid = json_decode($fid, true)) && is_array($decodedFid)) ? $decodedFid : (array)$fid;
$urlData = array(
'action_type' => 2,
'exclude_fids' => [],
'filelist' => $filelist,
);
$urlHeader = array(
'Accept: application/json, text/plain, */*',
'Accept-Language: zh-CN,zh;q=0.9',
'content-type: application/json;charset=UTF-8',
'sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
'sec-ch-ua-mobile: ?0',
'sec-ch-ua-platform: "Windows"',
'sec-fetch-dest: empty',
'sec-fetch-mode: cors',
'sec-fetch-site: same-site',
'Referer: https://pan.quark.cn/',
'Referrer-Policy: strict-origin-when-cross-origin',
'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'cookie: '.$this->cookie,
);
$res = curlHelper("https://drive-pc.quark.cn/1/clouddrive/file/delete?pr=ucpro&fr=pc&uc_param_str=", "POST", json_encode($urlData), $urlHeader)['body'];
$res = json_decode($res, true);
if($res['status'] == 200){
$this->model->where('fid', $deles['fid'])->delete();
}
$this->model->where('fid', $deles['fid'])->delete();
$transfer = new \netdisk\Transfer();
$transfer->deletepdirFid($deles['is_type'],$filelist);
}
});
+91
View File
@@ -17,6 +17,14 @@ function jok($message = 'success', $data = null)
}
die;
}
function jok2($message = 'success', $data = null)
{
if ($data) {
return ["code" => 200, "message" => $message, 'data' => $data];
} else {
return ["code" => 200, "message" => $message, 'data' => $data??''];
}
}
/**
* 输出错误JSON
*
@@ -30,6 +38,10 @@ function jerr($message = 'error', $code = 500)
echo json_encode(["code" => $code, "message" => $message]);
die;
}
function jerr2($message = 'error', $code = 500)
{
return ["code" => $code, "message" => $message];
}
/**
* 密码+盐 加密
*
@@ -789,6 +801,85 @@ function determineIsType($url) {
}
}
/**
* 解析网盘分享链接
*
* @param string $input 输入的链接文本,可以是多行
* @return array 解析后的链接数组,每个元素包含url、title和code
*/
function parsePanLinks($input)
{
// 分割多行输入
$links = explode("\n", $input);
// 去掉数组元素中的空白字符
$links = array_map('trim', $links);
// 过滤掉空值的数组元素
$links = array_filter($links);
$parsedLinks = array_values(array_filter(array_map(function ($item) {
// 统一处理百度网盘分享格式,同时匹配两种格式
if (preg_match('/链接:?\s*(https?:\/\/[^\s]+)\s*提取码:?\s*([a-zA-Z0-9]{4})/i', $item, $matches)) {
$url = trim($matches[1]);
$code = trim($matches[2]);
// 确保URL中包含提取码
if (!empty($code) && strpos($url, '?pwd=') === false) {
$url .= (strpos($url, '?') === false ? '?' : '&') . 'pwd=' . $code;
}
return [
'url' => $url,
'title' => '',
'code' => $code
];
}
// 提取 URL
if (!preg_match('/https?:\/\/[^\s]+/', $item, $matches)) {
return null; // 没有匹配到 URL,直接丢弃
}
$url = trim($matches[0]);
$code = '';
// 提取提取码(?pwd= 或 , 分割)
if (preg_match('/\?pwd=([^,\s&]+)/', $item, $pwdMatch)) {
$code = trim($pwdMatch[1]);
} elseif (preg_match('/,\s*([a-zA-Z0-9]{4})\s*$/', $item, $commaMatch)) {
$code = trim($commaMatch[1]);
// 添加提取码到URL
if (!empty($code)) {
$url .= (strpos($url, '?') === false ? '?' : '&') . 'pwd=' . $code;
}
} elseif (preg_match('/提取码:?\s*([a-zA-Z0-9]{4})/i', $item, $codeMatch)) {
$code = trim($codeMatch[1]);
// 添加提取码到URL
if (!empty($code)) {
$url .= (strpos($url, '?') === false ? '?' : '&') . 'pwd=' . $code;
}
}
// 返回结果时,确保 title 保持为空字符串
return [
'url' => $url,
'title' => '',
'code' => $code
];
}, $links)));
// 去重,使用 'url' 字段来去重
$uniqueUrls = [];
$result = array_filter($parsedLinks, function($item) use (&$uniqueUrls) {
if (!in_array($item['url'], $uniqueUrls)) {
$uniqueUrls[] = $item['url']; // 添加到已处理的 URL 列表
return true; // 保留此项目
}
return false; // 去掉重复的项目
});
return array_values($result);
}
/**
* 网络资源搜索源一
+3
View File
@@ -60,6 +60,9 @@ class Source extends QfShop
*/
public function getDetail(array $data)
{
if(empty($data['id'])){
return jerr('参数错误');
}
$map[] = ['status', '=', 1];
$map[] = ['is_delete', '=', 0];
$map[] = ['source_id', '=', $data['id']];
+1 -1
View File
@@ -34,7 +34,7 @@
{/volist}
<div style="height: 120px;"></div>
</el-menu>
<div class="version">资源管理系统<br> Version 1.0.0</div>
<div class="version">资源管理系统<br> Version 3.0.0</div>
</el-aside>
{else}
<div style="position: absolute;top: -72px;left: 0;width: 160px;background-color: #ffffff;box-shadow: 0 0 12px 0 rgb(47 75 168 / 6%);border-radius: 12px;">
+311 -37
View File
@@ -10,27 +10,181 @@
</style>
{include file="common/header"/}
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span>目前仅支持夸克</span>
</div>
<div class="text item">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>设置夸克cookie</span>
</div>
<div style="font-size:14px;color:#666;">
<el-form :model="form">
<el-form-item>
<el-input style="width: 100%;" v-model="form.cookie" placeholder="夸克云盘网页版的cookie"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">保存</el-button>
</el-form-item>
</el-form>
<p>Tips:夸克云盘网页版的cookie,不懂如何获取请百度;填写并保存后才能使用下面功能</p>
</div>
</el-card>
</div>
<el-tabs v-model="activeName">
<el-tab-pane label="夸克网盘" name="0">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>夸克网盘</span>
</div>
<div style="font-size:14px;color:#666;">
<el-form :model="form">
<el-form-item label="设置cookie">
<el-input style="width: 100%;" v-model="form.quark_cookie" placeholder="请输入">
<el-button slot="prepend" @click="getFile(0)">账号检测</el-button>
</el-input>
<span class="f_tips">cookie修改后,请保存后再选择转存目录和检测</span>
</el-form-item>
<el-form-item label="默认转存目录">
<el-input style="width: 100%" v-model="form.quark_file" placeholder="请输入或选择">
<div slot="prepend" style="position: relative;">
<p>请选择</p>
<el-cascader style="opacity: 0; height: 38px; position: absolute;inset: 0;" v-model="form.quark_file" :props="quark_props"></el-cascader>
</div>
</el-input>
</el-form-item>
<el-form-item label="临时资源目录">
<el-input style="width: 100%" v-model="form.quark_file_time" placeholder="请输入或选择">
<div slot="prepend" style="position: relative;">
<p>请选择</p>
<el-cascader style="opacity: 0; height: 38px; position: absolute;inset: 0;" v-model="form.quark_file_time" :props="quark_props"></el-cascader>
</div>
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">保存</el-button>
</el-form-item>
</el-form>
</div>
</el-card>
</el-tab-pane>
<el-tab-pane label="阿里云盘" name="1">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>阿里云盘</span>
</div>
<div style="font-size:14px;color:#666;">
<el-form :model="form">
<el-form-item label="设置Token">
<el-input style="width: 100%;" v-model="form.Authorization" placeholder="请输入">
<el-button slot="prepend" @click="getFile(1)">账号检测</el-button>
</el-input>
<span class="f_tips">token修改后,请保存后再选择转存目录和检测</span>
</el-form-item>
<el-form-item label="默认转存目录">
<el-input style="width: 100%" v-model="form.ali_file" placeholder="请输入或选择">
<div slot="prepend" style="position: relative;">
<p>请选择</p>
<el-cascader style="opacity: 0; height: 38px; position: absolute;inset: 0;" v-model="form.ali_file" :props="ali_props"></el-cascader>
</div>
</el-input>
</el-form-item>
<el-form-item label="临时资源目录">
<el-input style="width: 100%" v-model="form.ali_file_time" placeholder="请输入或选择">
<div slot="prepend" style="position: relative;">
<p>请选择</p>
<el-cascader style="opacity: 0; height: 38px; position: absolute;inset: 0;" v-model="form.ali_file_time" :props="ali_props"></el-cascader>
</div>
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">保存</el-button>
</el-form-item>
</el-form>
<p>Tips:转存目录不能为空,为空将无法转存; <font color=orangered>阿里网盘禁止香港及海外服务器调用分享接口</font></p>
</div>
</el-card>
</el-tab-pane>
<el-tab-pane label="百度网盘" name="2">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>百度网盘</span>
</div>
<div style="font-size:14px;color:#666;">
<el-form :model="form">
<el-form-item label="设置cookie">
<el-input style="width: 100%;" v-model="form.baidu_cookie" placeholder="请输入">
<el-button slot="prepend" @click="getFile(2)">账号检测</el-button>
</el-input>
<span class="f_tips">cookie修改后,请保存后再选择转存目录和检测</span>
</el-form-item>
<el-form-item label="默认转存目录">
<el-input style="width: 100%;" v-model="form.baidu_file" placeholder="请输入或选择">
<div slot="prepend" style="position: relative;">
<p>请选择</p>
<el-cascader style="opacity: 0; height: 38px; position: absolute;inset: 0;" v-model="form.baidu_file" :props="baidu_props"></el-cascader>
</div>
</el-input>
</el-form-item>
<el-form-item label="临时资源目录">
<el-input style="width: 100%;" v-model="form.baidu_file_time" placeholder="请输入或选择">
<div slot="prepend" style="position: relative;">
<p>请选择</p>
<el-cascader style="opacity: 0; height: 38px; position: absolute;inset: 0;" v-model="form.baidu_file_time" :props="baidu_props" ></el-cascader>
</div>
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">保存</el-button>
</el-form-item>
</el-form>
</div>
</el-card>
</el-tab-pane>
<el-tab-pane label="UC网盘" name="3">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>UC网盘</span>
</div>
<div style="font-size:14px;color:#666;">
<el-form :model="form">
<el-form-item label="设置cookie">
<el-input style="width: 100%;" v-model="form.uc_cookie" placeholder="请输入">
<el-button slot="prepend" @click="getFile(3)">账号检测</el-button>
</el-input>
<span class="f_tips">cookie修改后,请保存后再选择转存目录和检测</span>
</el-form-item>
<el-form-item label="默认转存目录">
<el-input style="width: 100%" v-model="form.uc_file" placeholder="请输入或选择">
<div slot="prepend" style="position: relative;">
<p>请选择</p>
<el-cascader style="opacity: 0; height: 38px; position: absolute;inset: 0;" v-model="form.uc_file" :props="uc_props"></el-cascader>
</div>
</el-input>
</el-form-item>
<el-form-item label="临时资源目录">
<el-input style="width: 100%" v-model="form.uc_file_time" placeholder="请输入或选择">
<div slot="prepend" style="position: relative;">
<p>请选择</p>
<el-cascader style="opacity: 0; height: 38px; position: absolute;inset: 0;" v-model="form.uc_file_time" :props="uc_props"></el-cascader>
</div>
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">保存</el-button>
</el-form-item>
</el-form>
</div>
</el-card>
</el-tab-pane>
<el-tab-pane label="迅雷云盘" name="4">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>迅雷云盘</span>
</div>
<div style="font-size:14px;color:#666;">
<p>Tips<font color=orangered>迅雷云盘暂不支持</font></p>
<el-form :model="form">
<el-form-item label="设置cookie">
<el-input style="width: 100%;" v-model="form.xunlei_cookie" placeholder="请输入">
</el-input>
<span class="f_tips">cookie修改后,请保存后再选择转存目录和检测</span>
</el-form-item>
<el-form-item label="默认转存目录">
<el-input style="width: 100%" v-model="form.xunlei_file" placeholder="请输入或选择">
</el-input>
</el-form-item>
<el-form-item label="临时资源目录">
<el-input style="width: 100%" v-model="form.xunlei_file_time" placeholder="请输入或选择">
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">保存</el-button>
</el-form-item>
</el-form>
</div>
</el-card>
</el-tab-pane>
</el-tabs>
</el-card>
{include file="common/footer"/}
<script>
@@ -38,16 +192,140 @@
el: '#app',
data() {
return {
activeName: '0',
configKeys: ['quark_cookie', 'quark_file', 'quark_file_time','baidu_cookie', 'baidu_file', 'baidu_file_time','Authorization', 'ali_file', 'ali_file_time','uc_cookie', 'uc_file', 'uc_file_time','xunlei_cookie', 'xunlei_file', 'xunlei_file_time'],
form: {
cookie: '',
quark_file: ''
},
quark_files: [],
quark_props: {
lazy: true,
emitPath: false,
checkStrictly: true,
lazyLoad (node, resolve) {
const { level, value } = node;
let that = this;
axios.post('/admin/source/getFiles', Object.assign({
type: 0,
pdir_fid: value || 0
}, PostBase))
.then(function (res) {
if (res.data.code == 200) {
// 只显示文件夹
const nodes = (res.data.data || [])
.map(item => ({
value: item.fid,
label: item.file_name,
disabled: !item.dir,
}));
resolve(nodes);
} else {
resolve([]);
}
})
.catch(function (error) {
console.error(error);
resolve([]);
});
}
},
baidu_props: {
lazy: true,
emitPath: false,
checkStrictly: true,
lazyLoad (node, resolve) {
const { level, value } = node;
let that = this;
axios.post('/admin/source/getFiles', Object.assign({
type: 2,
pdir_fid: value || 0
}, PostBase))
.then(function (res) {
if (res.data.code == 200) {
// 只显示文件夹
const nodes = (res.data.data || [])
.map(item => ({
value: item.path,
label: item.server_filename,
disabled: !item.isdir,
}));
resolve(nodes);
} else {
resolve([]);
}
})
.catch(function (error) {
console.error(error);
resolve([]);
});
}
},
ali_props: {
lazy: true,
emitPath: false,
checkStrictly: true,
lazyLoad (node, resolve) {
const { level, value } = node;
let that = this;
axios.post('/admin/source/getFiles', Object.assign({
type: 1,
pdir_fid: value || 0
}, PostBase))
.then(function (res) {
if (res.data.code == 200) {
// 只显示文件夹
const nodes = (res.data.data || [])
.map(item => ({
value: item.file_id,
label: item.name,
disabled: item.type!='folder',
}));
resolve(nodes);
} else {
resolve([]);
}
})
.catch(function (error) {
console.error(error);
resolve([]);
});
}
},
uc_props: {
lazy: true,
emitPath: false,
checkStrictly: true,
lazyLoad (node, resolve) {
const { level, value } = node;
let that = this;
axios.post('/admin/source/getFiles', Object.assign({
type: 3,
pdir_fid: value || 0
}, PostBase))
.then(function (res) {
if (res.data.code == 200) {
// 只显示文件夹
const nodes = (res.data.data || [])
.map(item => ({
value: item.fid,
label: item.file_name,
disabled: !item.dir,
}));
resolve(nodes);
} else {
resolve([]);
}
})
.catch(function (error) {
console.error(error);
resolve([]);
});
}
},
file: '',
files: [],
};
},
created() {
this.getData();
// this.getFile()
},
methods: {
getData(){
@@ -56,11 +334,8 @@
.then(function (response) {
if (response.data.code == 200) {
for (let item of response.data.data) {
if(item.conf_key === 'quark_cookie'){
that.form.cookie = item.conf_value
}
if(item.conf_key === 'quark_file'){
that.file = item.conf_value
if (that.configKeys.includes(item.conf_key)) {
that.$set(that.form, item.conf_key, item.conf_value)
}
}
} else {
@@ -73,16 +348,13 @@
},
onSubmit(){
let that = this
axios.post('/admin/conf/updateBaseConfig', Object.assign({}, PostBase, {
quark_cookie: that.form.cookie
}))
axios.post('/admin/conf/updateBaseConfig', Object.assign({}, PostBase, that.form))
.then(function (response) {
if (response.data.code == 200) {
that.$message({
message: response.data.message,
type: 'success'
});
that.getFile()
} else {
that.$message.error(response.data.message);
}
@@ -93,12 +365,14 @@
});
},
getFile(){
getFile(type){
let that = this
axios.post('/admin/source/getFiles', Object.assign({}, PostBase))
axios.post('/admin/source/getFiles', Object.assign({
type
}, PostBase))
.then(function (res) {
if (res.data.code == 200) {
that.files = res.data || []
that.$message.success("已登录,cookie可用");
} else {
that.$message.error(res.data.message);
}
+6 -5
View File
@@ -10,7 +10,7 @@
<el-button icon="el-icon-plus" size="small" @click="clickAdd" plain>添加资源</el-button>
<el-button icon="el-icon-delete" size="small" @click="postMultDelete" plain>批量删除</el-button>
<el-button icon="el-icon-document-copy" size="small" @click="getExport" plain>导出资源</el-button>
<el-button icon="el-icon-plus" size="small" @click="ImportShow" plain>夸克导入专用</el-button>
<el-button icon="el-icon-plus" size="small" @click="ImportShow" plain>表格导入</el-button>
<el-button icon="el-icon-plus" size="small" @click="ImportBatch" plain>批量导入</el-button>
</el-form-item>
<div style="float:right">
@@ -167,9 +167,9 @@
<el-radio-button :label="2">转存分享导入</el-radio-button>
</el-radio-group>
<p style="color: #999;" v-if='Batchform.type==1'>直接导入:链接校验有效后直接入库;Tips:该功能不会检测是否重复;</p>
<p style="color: #999;" v-else-if='Batchform.type==2'>将资源转存到自己网盘后分享入库<font color=orangered>此功能仅支持夸克</font>Tips:该功能不会检测是否重复;</p>
<span style="color: #999;" v-if='Batchform.type==1'>支持<font color=orangered>夸克、阿里、UC</font>的网盘资源(一次最多可以上传500条资源)</span>
<span style="color: #999;" v-else-if='Batchform.type==2'>目前仅支持<font color=orangered>夸克</font>的网盘资源(一次最多可以上传500条资源)</span>
<p style="color: #999;" v-else-if='Batchform.type==2'>将资源转存到自己网盘后分享入库Tips:该功能不会检测是否重复;</p>
<span style="color: #999;" v-if='Batchform.type==1'>支持<font color=orangered>夸克、阿里、UC、百度</font>的网盘资源(一次最多可以上传500条资源)</span>
<span style="color: #999;" v-else-if='Batchform.type==2'>支持<font color=orangered>夸克、阿里、UC、百度</font>的网盘资源(一次最多可以上传500条资源)</span>
</el-form-item>
<el-form-item prop="source_category_id" label="资源分类" label-width="70px" v-if="Batchform.type">
<el-select size="medium" v-model="Batchform.source_category_id" placeholder="请选择分类" clearable>
@@ -187,7 +187,8 @@
一条资源一行
https://pan.quark.cn/s/xxxxxxxx
https://www.alipan.com/s/xxxxxxxxx
https://drive.uc.cn/s/xxxxxxxxxxx"
https://drive.uc.cn/s/xxxxxxxxxxx
https://pan.baidu.com/s/xxxxxx?pwd=xxxx"
v-model="Batchform.urls"
rows="20"
show-word-limit