mirror of
https://github.com/Cp0204/quark-auto-save.git
synced 2026-01-12 23:30:44 +08:00
* perf: 优化资源发布时间解析逻辑 * perf: PanSou 源支持前端深度搜索 * feat: 网络公开搜索源支持启用或关闭 * feat: 文件选择窗口支持切换分享链接 * perf: 优化文件选择窗口资源简介展示 * perf: 优化文件选择窗口资源信息样式 * fix: 修复 net.enable=None 时 lower() 报错 * style: 优化资源简介和切换样式 * style: 优化资源搜索配置样式 --------- Co-authored-by: Cp0204 <Cp0204@qq.com>
98 lines
2.7 KiB
Python
98 lines
2.7 KiB
Python
import re
|
||
|
||
import requests
|
||
|
||
from sdk.common import iso_to_cst
|
||
|
||
|
||
class PanSou:
|
||
"""
|
||
PanSou 类,用于获取云盘资源
|
||
"""
|
||
|
||
def __init__(self, server):
|
||
self.server = server
|
||
self.session = requests.Session()
|
||
|
||
def search(self, keyword: str, refresh: bool = False) -> list:
|
||
"""搜索资源
|
||
|
||
Args:
|
||
keyword (str): 搜索关键字
|
||
|
||
Returns:
|
||
list: 资源列表
|
||
"""
|
||
try:
|
||
url = f"{self.server.rstrip('/')}/api/search"
|
||
params = {"kw": keyword, "cloud_types": ["quark"], "res": "merge", "refresh": refresh}
|
||
response = self.session.get(url, params=params)
|
||
result = response.json()
|
||
if result.get("code") == 0:
|
||
data = result.get("data", {}).get("merged_by_type", {}).get("quark", [])
|
||
return self.format_search_results(data)
|
||
return []
|
||
except Exception as _:
|
||
return []
|
||
|
||
def format_search_results(self, search_results: list) -> list:
|
||
"""格式化搜索结果
|
||
|
||
Args:
|
||
search_results (list): 搜索结果列表
|
||
|
||
Returns:
|
||
list: 夸克网盘资源列表
|
||
"""
|
||
pattern = (
|
||
r'^(.*?)'
|
||
r'(?:'
|
||
r'[【\[]?'
|
||
r'(?:简介|介绍|描述)'
|
||
r'[】\]]?'
|
||
r'[::]?'
|
||
r')'
|
||
r'(.*)$'
|
||
)
|
||
format_results = []
|
||
link_array = []
|
||
for item in search_results:
|
||
url = item.get("url", "")
|
||
note = item.get("note", "")
|
||
tm = item.get("datetime", "")
|
||
if tm:
|
||
tm = iso_to_cst(tm)
|
||
|
||
match = re.search(pattern, note)
|
||
if match:
|
||
title = match.group(1)
|
||
content = match.group(2)
|
||
else:
|
||
title = note
|
||
content = ""
|
||
|
||
if url != "" and url not in link_array:
|
||
link_array.append(url)
|
||
format_results.append({
|
||
"shareurl": url,
|
||
"taskname": title,
|
||
"content": content,
|
||
"datetime": tm,
|
||
"channel": item.get("source", ""),
|
||
"source": "PanSou"
|
||
})
|
||
|
||
return format_results
|
||
|
||
|
||
if __name__ == "__main__":
|
||
server: str = "https://so.252035.xyz"
|
||
pansou = PanSou(server)
|
||
results = pansou.search("哪吒")
|
||
for item in results:
|
||
print(f"标题: {item['taskname']}")
|
||
print(f"描述: {item['content']}")
|
||
print(f"链接: {item['shareurl']}")
|
||
print(f"时间: {item['datetime']}")
|
||
print("-" * 50)
|