让自定义站点可自行设置: 搜索结果条数/请求超时

This commit is contained in:
叮叮当 2024-02-09 22:45:58 +08:00
parent 7350216fc4
commit dde3b76573
3 changed files with 12 additions and 6 deletions

View File

@ -98,7 +98,7 @@ class TorrentsChain(ChainBase, metaclass=Singleton):
if not site.get("rss"): if not site.get("rss"):
logger.error(f'站点 {domain} 未配置RSS地址') logger.error(f'站点 {domain} 未配置RSS地址')
return [] return []
rss_items = self.rsshelper.parse(site.get("rss"), True if site.get("proxy") else False) rss_items = self.rsshelper.parse(site.get("rss"), True if site.get("proxy") else False, timeout=int(site.get("timeout") or 30))
if rss_items is None: if rss_items is None:
# rss过期尝试保留原配置生成新的rss # rss过期尝试保留原配置生成新的rss
self.__renew_rss_url(domain=domain, site=site) self.__renew_rss_url(domain=domain, site=site)

View File

@ -224,11 +224,12 @@ class RssHelper:
} }
@staticmethod @staticmethod
def parse(url, proxy: bool = False) -> Union[List[dict], None]: def parse(url, proxy: bool = False, timeout: int = 30) -> Union[List[dict], None]:
""" """
解析RSS订阅URL获取RSS中的种子信息 解析RSS订阅URL获取RSS中的种子信息
:param url: RSS地址 :param url: RSS地址
:param proxy: 是否使用代理 :param proxy: 是否使用代理
:param timeout: 请求超时
:return: 种子信息列表如为None代表Rss过期 :return: 种子信息列表如为None代表Rss过期
""" """
# 开始处理 # 开始处理
@ -236,7 +237,7 @@ class RssHelper:
if not url: if not url:
return [] return []
try: try:
ret = RequestUtils(proxies=settings.PROXY if proxy else None).get_res(url) ret = RequestUtils(proxies=settings.PROXY if proxy else None, timeout=timeout).get_res(url)
if not ret: if not ret:
return [] return []
except Exception as err: except Exception as err:

View File

@ -56,12 +56,14 @@ class TorrentSpider:
fields: dict = {} fields: dict = {}
# 页码 # 页码
page: int = 0 page: int = 0
# 搜索条数 # 搜索条数, 默认: 100条
result_num: int = 100 result_num: int = 100
# 单个种子信息 # 单个种子信息
torrents_info: dict = {} torrents_info: dict = {}
# 种子列表 # 种子列表
torrents_info_array: list = [] torrents_info_array: list = []
# 搜索超时, 默认: 30秒
_timeout = 30
def __init__(self, def __init__(self,
indexer: CommentedMap, indexer: CommentedMap,
@ -91,6 +93,8 @@ class TorrentSpider:
self.fields = indexer.get('torrents').get('fields') self.fields = indexer.get('torrents').get('fields')
self.render = indexer.get('render') self.render = indexer.get('render')
self.domain = indexer.get('domain') self.domain = indexer.get('domain')
self.result_num = int(indexer.get('result_num') or 100)
self._timeout = int(indexer.get('timeout') or 30)
self.page = page self.page = page
if self.domain and not str(self.domain).endswith("/"): if self.domain and not str(self.domain).endswith("/"):
self.domain = self.domain + "/" self.domain = self.domain + "/"
@ -233,14 +237,15 @@ class TorrentSpider:
url=searchurl, url=searchurl,
cookies=self.cookie, cookies=self.cookie,
ua=self.ua, ua=self.ua,
proxies=self.proxy_server proxies=self.proxy_server,
timeout=self._timeout
) )
else: else:
# requests请求 # requests请求
ret = RequestUtils( ret = RequestUtils(
ua=self.ua, ua=self.ua,
cookies=self.cookie, cookies=self.cookie,
timeout=30, timeout=self._timeout,
referer=self.referer, referer=self.referer,
proxies=self.proxies proxies=self.proxies
).get_res(searchurl, allow_redirects=True) ).get_res(searchurl, allow_redirects=True)