mirror of
https://github.com/Cp0204/quark-auto-save.git
synced 2026-01-12 07:10:44 +08:00
Some checks failed
Docker Publish / build-and-push (push) Has been cancelled
* fix: 修复资源时间格式解析错误导致搜索失败的问题 * feat: 资源搜索结果显示来源通道
98 lines
2.6 KiB
Python
98 lines
2.6 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) -> list:
|
||
"""搜索资源
|
||
|
||
Args:
|
||
keyword (str): 搜索关键字
|
||
|
||
Returns:
|
||
list: 资源列表
|
||
"""
|
||
try:
|
||
url = f"{self.server.rstrip('/')}/api/search"
|
||
params = {"kw": keyword, "cloud_types": ["quark"], "res": "merge", "refresh": True}
|
||
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)
|