中秋节快乐

This commit is contained in:
Alone
2024-09-14 17:00:49 +08:00
parent 610dee88cd
commit dff1b038b1
4286 changed files with 807503 additions and 6 deletions
+628
View File
@@ -0,0 +1,628 @@
<?php
namespace app\api\controller;
use think\App;
use app\api\QfShop;
use app\model\Source as SourceModel;
use app\model\Days as DaysModel;
class Other extends QfShop
{
public function __construct(App $app)
{
parent::__construct($app);
//第三方转存接口地址
$this->url = "https://pan.xinyuedh.com";
$this->model = new SourceModel();
$this->cookie = Config('qfshop.quark_cookie');
}
public function Alone_search2()
{
$searchdata = input('');
if (empty($searchdata['alone_title'])) {
return jerr("请输入要看的内容");
}
$type = $searchdata['type']??0;
$title = $searchdata['alone_title'];
$searchList = []; //查询的结果集
$num_total = $type?2:20; //最多想要几条结果
$num_success = 0;
// 处理第2个源
foreach (source2($title) as $value) {
if ($num_success >= $num_total) {
break; // 有效结果数量已达到,则跳出循环
}
// 如果 URL 不存在则新增 $value
if (!$this->urlExists($searchList, $value['url'])) {
$searchList[] = $value;
$num_success++;
}
}
// 处理第4个源
if ($num_success < $num_total) {
foreach (source4($title) as $value) {
if ($num_success >= $num_total) {
break; // 有效结果数量已达到,则跳出循环
}
// 如果 URL 不存在则新增 $value
if (!$this->urlExists($searchList, $value['url'])) {
$searchList[] = $value;
$num_success++;
}
}
}
// 处理第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;
$num_success++;
}
}
}
// 处理第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;
$num_success++;
}
}
}
return jok('临时资源获取成功',$searchList);
}
/**
* 全网搜索 该接口仅用于微信自动回复
*
* @return void
*/
public function Alone_search()
{
$searchdata = input('post.');
if (empty($searchdata['alone_title'])) {
return jerr("请输入要看的内容");
}
$title = $searchdata['alone_title'];
$map[] = ['status', '=', 1];
$map[] = ['is_delete', '=', 0];
$map[] = ['is_time', '=', 1];
$map[] = ['title|description', 'like', '%' . trim($title) . '%'];
$urls = $this->model->where($map)->field('source_id as id, title, url')->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()]);
}
return jok('临时资源获取成功',$urls);
}
$searchList = []; //查询的结果集
$datas = []; //最终数据
$num_total = 2; //最多想要几条结果
$num_success = 0;
// 处理第2个源
foreach (source2($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);
}
}
// 处理第4个源
if ($num_success < $num_total) {
foreach (source4($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);
}
}
}
// 处理第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);
}
}
}
return jok('临时资源获取成功',$datas);
}
// 检查 URL 是否已存在(忽略查询参数)
public function urlExists($searchList, $urlToCheck) {
// 解析待检查的 URL
$parsedUrlToCheck = parse_url($urlToCheck);
foreach ($searchList as $item) {
$parsedUrl = parse_url($item['url']);
// 比较 scheme, host 和 path
if ($parsedUrlToCheck['scheme'] === $parsedUrl['scheme'] &&
$parsedUrlToCheck['host'] === $parsedUrl['host'] &&
$parsedUrlToCheck['path'] === $parsedUrl['path']) {
return true;
}
}
return false;
}
/**
* 临时资源转存
*
* @return void
*/
public function processUrl($value, &$num_success, &$datas)
{
$substring = strstr($value['url'], 's/');
if ($substring === false) {
return; // 模拟 continue 行为
}
$pwd_id = substr($substring, 2); // 去除 's/' 部分
$urlData = array(
'cookie' => $this->cookie,
'url' => $value['url'],
'expired_type' => 2,
'to_pdir_fid' => '61bad1e1380d47c78d6f5d86c877efb9', //存入目标文件
'ad_fid' => '3b57147245774d88bafba7f43152f4bd', //分享时带上这个文件
);
$res = curlHelper($this->url."/api/open/transfer", "POST", $urlData)['body'];
$res = json_decode($res, true);
if($res['code'] !== 200){
return; // 模拟 continue 行为
}
$patterns = '/^\d+\./';
$title = preg_replace($patterns, '', $value['title']);
// 添加资源到系统中
$data["title"] =$title;
$data["url"] =$res['data']['share_url'];
$data["is_type"] = determineIsType($data["url"]);
$data["fid"] =$res['data']['fid']??'';
$data["is_time"] = 1;
$data["update_time"] = time();
$data["create_time"] = time();
$this->model->insertGetId($data);
$datas[] =$data;
$num_success++;
}
/**
* 十分钟后清除临时资源
*
* @return void
*/
public function delete_search()
{
// 搜索条件
$map[] = ['is_time', '=', 1];
$map[] = ['update_time', '<=', time() - (30 * 60)];
$abc = $this->model->where($map)->select();
$this->model->where($map)->chunk(100, function ($order) {
foreach ($order as $value) {
$deles = $value->toArray();
$filelist = [];
$filelist[] = $deles['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();
}
}
});
return jok('临时资源删除成功',$abc);
}
public function alone_zhuanshu22222()
{
$list = [];
try {
$result = curlHelper("https://duanju.niurl.cn/api.php", "GET")['body'];
$list = json_decode($result, true);
$list = $list['data'];
} catch (Exception $e) {
}
if (count($list) > 100) {
$list = array_slice($list, 0, 100); // 如果超过100位,则截取前100位
}
$list = array_reverse($list);
foreach ($list as $key => $value){
//如果资源不是今天或者昨天的 就跳过 只采集今天昨天的资源
if($value['addtime'] != date('Y-m-d') && $value['addtime'] != date('Y-m-d', strtotime('-1 day'))){
continue;
}
//如已有此资源 跳过
$detail = $this->model->where('title', $value['name'])->find();
if(!empty($detail)){
continue;
}
$url = $value['url'];
$substring = strstr($url, 's/');
if ($substring !== false) {
$pwd_id = substr($substring, 2); // 去除 's/' 部分
} else {
//资源地址格式有误
continue;
}
$urlData = array(
'cookie' => Config('qfshop.quark_cookie'),
'url' => $url,
);
$res = curlHelper($this->url."/api/open/transfer", "POST", $urlData)['body'];
$res = json_decode($res, true);
if($res['code'] !== 200){
continue;
}
//添加资源到系统中
$data["title"] = $value['name'];
$data["url"] = $res['data']['share_url'];
$data["update_time"] = time();
$data["create_time"] = time();
$this->model->insertGetId($data);
}
return jok('123456');
}
public function alone_zhuanshu()
{
$list = [];
$add_num = 0;
$parameters = array(
'',
'',
'',
'6fbefc1f535f48a38cbb580f9553fcea', //4月夸克文件夹fid
'6da509da98124e1d98cd3aa70f1ad7fa',
'2b805566aee0430ca6a3a0ba995685bd',
'93996a5d87b64c36849c442374fd1bbf',
'499e29a766704e00ac0e6e3d1c7b252a',
'4c69edb70454496688813de3cd6a27f8',
'fed17385093446b78e8c2f286f683100',
'38233cc7b14148fea33ea9998c19dc22',
'70c3c5d7a1cc442eb998428893b00e94'
);
// try {
// $result = curlHelper("https://duanju.niurl.cn/api.php", "GET")['body'];
// $list = json_decode($result, true);
// $list = $list['data'];
// } catch (Exception $e) {
// }
try {
$list1 = [];
$result = curlHelper("https://kuoapp.com/duanju/get.php?day=".date('Y-m-d'), "GET")['body'];
$res1 = json_decode($result, true);
if (is_array($res1) && array_keys($res1) === range(0, count($res1) - 1)) {
$list1 = $res1;
}
$list2 = [];
$result = curlHelper("https://kuoapp.com/duanju/get.php?day=".date('Y-m-d', strtotime('-1 day')), "GET")['body'];
$res2 = json_decode($result, true);
if (is_array($res2) && array_keys($res2) === range(0, count($res2) - 1)) {
$list2 = $res2;
}
$list = array_merge($list1, $list2); // 合并两个数组
} catch (Exception $e) {
}
if (count($list) > 100) {
$list = array_slice($list, 0, 100); // 如果超过100位,则截取前100位
}
$list = array_reverse($list);
foreach ($list as $key => $value){
// 如果资源不是今天或者昨天的 就跳过 只采集今天昨天的资源
if($value['addtime'] != date('Y-m-d') && $value['addtime'] != date('Y-m-d', strtotime('-1 day'))){
continue;
}
//如已有此资源 跳过
$value['name'] = str_replace(["\u0000", "\x00", "\0"], '', $value['name']);
$detail = $this->model->where('title', $value['name'])->find();
if(!empty($detail)){
continue;
}
//整理数据 按天创建夸克文件夹
$dateString = $value['addtime']; // 哪一天的资源 如:2024-04-01
$timestamp = strtotime($dateString); // 将日期转换为时间戳
$newDateString = date('n月j日', $timestamp); // 夸克文件夹的名称 格式: 4月1日
$month = date('n', $timestamp); //月份 格式:4
$DaysModel = new DaysModel();
$fids = $DaysModel->where(["time"=>$dateString])->find();
if (!$fids){
//去创建文件夹获取fid
$urlData = array(
'dir_init_lock' => false,
'dir_path' => "",
'file_name' => $newDateString,
'pdir_fid' => $parameters[$month-1],
);
$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: '.Config('qfshop.quark_cookie'),
);
$quark = curlHelper("https://drive-pc.quark.cn/1/clouddrive/file?pr=ucpro&fr=pc&uc_param_str=", "POST", json_encode($urlData), $urlHeader)['body'];
$quark = json_decode($quark, true);
if($quark['status'] !== 200){
continue;
}
$fid = $quark['data']['fid'];
$DaysModel->insert([
"fid" => $fid,
"time" => $dateString,
]);
$fids = $DaysModel->where(["time"=>$dateString])->find();
}
//最终我要获取 $fids['fid'] 这个参数
$url = $value['url'];
$substring = strstr($url, 's/');
if ($substring !== false) {
$pwd_id = substr($substring, 2); // 去除 's/' 部分
} else {
//资源地址格式有误
continue;
}
$urlData = array(
'cookie' => Config('qfshop.quark_cookie'),
'url' => $url,
'to_pdir_fid' => $fids['fid']??''
);
$res = curlHelper($this->url."/api/open/transfer", "POST", $urlData)['body'];
$res = json_decode($res, true);
if($res['code'] !== 200){
continue;
}
//添加资源到系统中
$data["title"] = $value['name'];
$data["url"] = $res['data']['share_url'];
$addtime = time();
if(!empty($value['addtime'])){
$addtime = $value['addtime'].' '.date('H:i');
$addtime = strtotime($addtime);
}
$data["update_time"] = $addtime;
$data["create_time"] = $addtime;
$data["source_category_id"] = 1;
$this->model->insertGetId($data);
$add_num++;
}
return jok(date('Y-m-d H:i').' Added number of resources',$add_num);
}
public function aaaa()
{
$dateString = date('Y-m-d');
$timestamp = strtotime($dateString); // 将日期转换为时间戳
$newDateString = date('n月j日', $timestamp); // 夸克文件夹的名称 格式: 6月1日
$month = date('n', $timestamp); //月份 格式:6
$list = [];
try {
$list1 = [];
$result = curlHelper("https://kuoapp.com/duanju/get.php?day=".date('Y-m-d'), "GET")['body'];
$res1 = json_decode($result, true);
if (is_array($res1) && array_keys($res1) === range(0, count($res1) - 1)) {
$list1 = $res1;
}
$list2 = [];
$result = curlHelper("https://kuoapp.com/duanju/get.php?day=".date('Y-m-d', strtotime('-1 day')), "GET")['body'];
$res2 = json_decode($result, true);
if (is_array($res2) && array_keys($res2) === range(0, count($res2) - 1)) {
$list2 = $res2;
}
$list = array_merge($list1, $list2); // 合并两个数组
} catch (Exception $e) {
}
return jok('123456',date('H:i'));
}
/**
* 在线观看接口 该接口仅用于微信自动回复
*
* @return void
*/
public function Alone_online()
{
if(!Config('qfshop.mp4_online')){
return jok('在线资源地址', []);
}
// 获取输入数据
$searchdata = input('');
if (empty($searchdata['alone_title'])) {
return jerr("请输入要看的内容");
}
$title = $searchdata['alone_title'];
// 定义请求头
$urlHeader = [
'cookie: thinkphp_show_page_trace=0|0; pwmd5=9c2c9cc26c93ed2d7560cfc4ae4d4ac3; userid=312; usergroup=1; username=18339988501; usertime=2024-08-06+15%3A41%3A26; usersin=04e882c0b3f468fba62a5d1f03174aea',
'Content-Type: application/json'
];
// 查询参数
$queryParams = [
'page' => 1,
'limit' => 1,
'name' => $title,
'type' => '',
];
// 发送GET请求
$res = curlHelper("https://vvc.qeduanju.cn/promote/list.html", "GET", json_encode([]), $urlHeader, $queryParams)['body'];
$res = json_decode($res, true);
// 检查响应并处理数据
if ($res && $res['code'] == 0 && $res['count'] > 0) {
$data = [];
$ids = [];
foreach ($res['data'] as $value) {
$data[] = [
'id' => $value['id'],
'title' => $value['name']
];
$ids[] = $value['id'];
}
// POST请求的数据
$urlData = [
"id" => $ids,
"pzid" => 283
];
// 发送POST请求
$res2 = curlHelper("https://vvc.qeduanju.cn/promote/dwz.html", "POST", json_encode($urlData), $urlHeader, $queryParams)['body'];
$res2 = json_decode($res2, true);
if ($res2 && $res2['code'] == 0) {
$finalData = [];
foreach ($res2['data'] as $value) {
foreach ($data as &$item) {
if ($item['id'] == $value['id']) {
$finalData[] = [
'title' => '【在线观看】'.$item['title'],
'url' => $value['url']
];
}
}
}
return jok('在线资源地址', $finalData);
}
}
// 如果没有找到匹配数据,返回空数据
return jok('在线资源地址', []);
}
}