feat 索引支持imdbid,但暂不启用
This commit is contained in:
parent
ad00c74c6e
commit
762c477c16
@ -58,12 +58,20 @@ class IndexerModule(_ModuleBase):
|
||||
start_time = datetime.now()
|
||||
try:
|
||||
if site.get('parser') == "TNodeSpider":
|
||||
error_flag, result_array = TNodeSpider(site).search(keyword=search_word, page=page)
|
||||
error_flag, result_array = TNodeSpider(site).search(
|
||||
keyword=search_word,
|
||||
# imdbid=mediainfo.imdb_id if mediainfo else None,
|
||||
page=page
|
||||
)
|
||||
elif site.get('parser') == "TorrentLeech":
|
||||
error_flag, result_array = TorrentLeech(site).search(keyword=search_word, page=page)
|
||||
error_flag, result_array = TorrentLeech(site).search(
|
||||
keyword=search_word,
|
||||
page=page
|
||||
)
|
||||
else:
|
||||
error_flag, result_array = self.__spider_search(
|
||||
keyword=search_word,
|
||||
# imdbid=mediainfo.imdb_id if mediainfo else None,
|
||||
indexer=site,
|
||||
mtype=mediainfo.type if mediainfo else None,
|
||||
page=page
|
||||
@ -92,12 +100,14 @@ class IndexerModule(_ModuleBase):
|
||||
@staticmethod
|
||||
def __spider_search(indexer: CommentedMap,
|
||||
keyword: str = None,
|
||||
imdbid: str = None,
|
||||
mtype: MediaType = None,
|
||||
page: int = None) -> (bool, List[dict]):
|
||||
"""
|
||||
根据关键字搜索单个站点
|
||||
:param: indexer: 站点配置
|
||||
:param: keyword: 关键字
|
||||
:param: imdbid: imdbid
|
||||
:param: page: 页码
|
||||
:param: mtype: 媒体类型
|
||||
:param: timeout: 超时时间
|
||||
@ -106,6 +116,7 @@ class IndexerModule(_ModuleBase):
|
||||
_spider = TorrentSpider(indexer=indexer,
|
||||
mtype=mtype,
|
||||
keyword=keyword,
|
||||
imdbid=imdbid,
|
||||
page=page)
|
||||
|
||||
return _spider.is_error, _spider.get_torrents()
|
||||
|
@ -40,6 +40,8 @@ class TorrentSpider:
|
||||
referer: str = None
|
||||
# 搜索关键字
|
||||
keyword: str = None
|
||||
# 搜索IMDBID
|
||||
imdbid: str = None
|
||||
# 媒体类型
|
||||
mtype: MediaType = None
|
||||
# 搜索路径、方式配置
|
||||
@ -66,6 +68,7 @@ class TorrentSpider:
|
||||
def __init__(self,
|
||||
indexer: CommentedMap,
|
||||
keyword: [str, list] = None,
|
||||
imdbid: str = None,
|
||||
page=None,
|
||||
referer=None,
|
||||
mtype: MediaType = None):
|
||||
@ -73,6 +76,7 @@ class TorrentSpider:
|
||||
设置查询参数
|
||||
:param indexer: 索引器
|
||||
:param keyword: 搜索关键字,如果数组则为批量搜索
|
||||
:param imdbid: IMDB ID
|
||||
:param page: 页码
|
||||
:param referer: Referer
|
||||
:param mtype: 媒体类型
|
||||
@ -80,6 +84,7 @@ class TorrentSpider:
|
||||
if not indexer:
|
||||
return
|
||||
self.keyword = keyword
|
||||
self.imdbid = imdbid
|
||||
self.mtype = mtype
|
||||
self.indexerid = indexer.get('id')
|
||||
self.indexername = indexer.get('name')
|
||||
@ -131,7 +136,7 @@ class TorrentSpider:
|
||||
torrentspath = path.get('path')
|
||||
break
|
||||
|
||||
# 关键字搜索
|
||||
# 精确搜索
|
||||
if self.keyword:
|
||||
|
||||
if isinstance(self.keyword, list):
|
||||
@ -139,7 +144,8 @@ class TorrentSpider:
|
||||
if self.batch:
|
||||
delimiter = self.batch.get('delimiter') or ' '
|
||||
space_replace = self.batch.get('space_replace') or ' '
|
||||
search_word = delimiter.join([str(k).replace(' ', space_replace) for k in self.keyword])
|
||||
search_word = delimiter.join([str(k).replace(' ',
|
||||
space_replace) for k in self.keyword])
|
||||
else:
|
||||
search_word = " ".join(self.keyword)
|
||||
# 查询模式:或
|
||||
@ -151,7 +157,17 @@ class TorrentSpider:
|
||||
search_mode = "0"
|
||||
|
||||
# 搜索URL
|
||||
if self.search.get("params"):
|
||||
indexer_params = self.search.get("params") or {}
|
||||
if indexer_params:
|
||||
# 支持IMDBID时优先使用IMDBID搜索
|
||||
search_area = indexer_params.get("search_area") or 0
|
||||
if self.imdbid and search_area:
|
||||
search_word = self.imdbid
|
||||
else:
|
||||
search_word = self.keyword
|
||||
# 不启用IMDBID搜索时需要将search_area移除
|
||||
if search_area:
|
||||
indexer_params.pop('search_area')
|
||||
# 变量字典
|
||||
inputs_dict = {
|
||||
"keyword": search_word
|
||||
@ -159,11 +175,12 @@ class TorrentSpider:
|
||||
# 查询参数
|
||||
params = {
|
||||
"search_mode": search_mode,
|
||||
"search_area": 0,
|
||||
"page": self.page or 0,
|
||||
"notnewword": 1
|
||||
}
|
||||
# 额外参数
|
||||
for key, value in self.search.get("params").items():
|
||||
for key, value in indexer_params.items():
|
||||
params.update({
|
||||
"%s" % key: str(value).format(**inputs_dict)
|
||||
})
|
||||
|
@ -49,15 +49,16 @@ class TNodeSpider:
|
||||
if csrf_token:
|
||||
self._token = csrf_token.group(1)
|
||||
|
||||
def search(self, keyword: str, page: int = 0) -> Tuple[bool, List[dict]]:
|
||||
def search(self, keyword: str, imdbid: str = None, page: int = 0) -> Tuple[bool, List[dict]]:
|
||||
if not self._token:
|
||||
logger.warn(f"{self._name} 未获取到token,无法搜索")
|
||||
return True, []
|
||||
search_type = "imdbid" if imdbid else "title"
|
||||
params = {
|
||||
"page": int(page) + 1,
|
||||
"size": self._size,
|
||||
"type": "title",
|
||||
"keyword": keyword or "",
|
||||
"type": search_type,
|
||||
"keyword": imdbid or keyword or "",
|
||||
"sorter": "id",
|
||||
"order": "desc",
|
||||
"tags": [],
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user