feat:搜索更多结果

This commit is contained in:
jxxghp 2024-03-24 08:13:08 +08:00
parent 595d097235
commit e4bb182668

View File

@ -50,6 +50,16 @@ class IndexerModule(_ModuleBase):
:param page: 页码 :param page: 页码
:return: 资源列表 :return: 资源列表
""" """
def __remove_duplicate(_torrents: List[TorrentInfo]) -> List[TorrentInfo]:
"""
去除重复的种子
:param _torrents: 种子列表
:return: 去重后的种子列表
"""
# 通过encosure去重
return list({t.enclosure: t for t in _torrents}.values())
# 确认搜索的名字 # 确认搜索的名字
if not keywords: if not keywords:
# 浏览种子页 # 浏览种子页
@ -76,31 +86,32 @@ class IndexerModule(_ModuleBase):
try: try:
if site.get('parser') == "TNodeSpider": if site.get('parser') == "TNodeSpider":
error_flag, result_array = TNodeSpider(site).search( error_flag, result = TNodeSpider(site).search(
keyword=search_word, keyword=search_word,
page=page page=page
) )
elif site.get('parser') == "TorrentLeech": elif site.get('parser') == "TorrentLeech":
error_flag, result_array = TorrentLeech(site).search( error_flag, result = TorrentLeech(site).search(
keyword=search_word, keyword=search_word,
page=page page=page
) )
elif site.get('parser') == "mTorrent": elif site.get('parser') == "mTorrent":
error_flag, result_array = MTorrentSpider(site).search( error_flag, result = MTorrentSpider(site).search(
keyword=search_word, keyword=search_word,
mtype=mtype, mtype=mtype,
page=page page=page
) )
else: else:
error_flag, result_array = self.__spider_search( error_flag, result = self.__spider_search(
search_word=search_word, search_word=search_word,
indexer=site, indexer=site,
mtype=mtype, mtype=mtype,
page=page page=page
) )
# 有结果后停止 if not result:
if result_array:
break break
# 合并结果
result_array.extend(result)
except Exception as err: except Exception as err:
logger.error(f"{site.get('name')} 搜索出错:{str(err)}") logger.error(f"{site.get('name')} 搜索出错:{str(err)}")
@ -113,14 +124,16 @@ class IndexerModule(_ModuleBase):
return [] return []
else: else:
logger.info(f"{site.get('name')} 搜索完成,耗时 {seconds} 秒,返回数据:{len(result_array)}") logger.info(f"{site.get('name')} 搜索完成,耗时 {seconds} 秒,返回数据:{len(result_array)}")
# 合并站点信息以TorrentInfo返回 # TorrentInfo
return [TorrentInfo(site=site.get("id"), torrents = [TorrentInfo(site=site.get("id"),
site_name=site.get("name"), site_name=site.get("name"),
site_cookie=site.get("cookie"), site_cookie=site.get("cookie"),
site_ua=site.get("ua"), site_ua=site.get("ua"),
site_proxy=site.get("proxy"), site_proxy=site.get("proxy"),
site_order=site.get("pri"), site_order=site.get("pri"),
**result) for result in result_array] **result) for result in result_array]
# 去重
return __remove_duplicate(torrents)
@staticmethod @staticmethod
def __spider_search(indexer: CommentedMap, def __spider_search(indexer: CommentedMap,