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