From 4ddaa020dee04c373aa0cd933b71cc9e127b587a Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 17 Jun 2023 18:47:53 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E8=AE=A2=E9=98=85=E5=8C=85=E5=90=AB/?= =?UTF-8?q?=E6=8E=92=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/subscribe.py | 35 +++++++++++++++++++++++++++++++-- app/modules/indexer/__init__.py | 1 + 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/chain/subscribe.py b/app/chain/subscribe.py index c51adfc8..ee15a2fc 100644 --- a/app/chain/subscribe.py +++ b/app/chain/subscribe.py @@ -1,3 +1,4 @@ +import re from typing import Dict, List, Optional, Union from app.chain import ChainBase @@ -157,10 +158,29 @@ class SubscribeChain(ChainBase): keyword=subscribe.keyword, no_exists=no_exists) if not contexts: - logger.warn(f'{subscribe.keyword or subscribe.name} 未搜索到资源') + logger.warn(f'订阅 {subscribe.keyword or subscribe.name} 未搜索到资源') + continue + # 过滤 + matched_contexts = [] + for context in contexts: + torrent_info = context.torrent_info + # 包含 + if subscribe.include: + if not re.search(r"%s" % subscribe.include, + f"{torrent_info.title} {torrent_info.description}", re.I): + continue + # 排除 + if subscribe.exclude: + if re.search(r"%s" % subscribe.exclude, + f"{torrent_info.title} {torrent_info.description}", re.I): + continue + matched_contexts.append(context) + if not matched_contexts: + logger.warn(f'订阅 {subscribe.name} 没有符合过滤条件的资源') continue # 自动下载 - downloads, lefts = self.downloadchain.batch_download(contexts=contexts, no_exists=no_exists) + downloads, lefts = self.downloadchain.batch_download(contexts=matched_contexts, + no_exists=no_exists) if downloads and not lefts: # 全部下载完成 logger.info(f'{mediainfo.title_year} 下载完成,完成订阅') @@ -263,6 +283,17 @@ class SubscribeChain(ChainBase): torrent_meta = context.meta_info torrent_mediainfo = context.media_info torrent_info = context.torrent_info + # 包含 + if subscribe.include: + if not re.search(r"%s" % subscribe.include, + f"{torrent_info.title} {torrent_info.description}", re.I): + continue + # 排除 + if subscribe.exclude: + if re.search(r"%s" % subscribe.exclude, + f"{torrent_info.title} {torrent_info.description}", re.I): + continue + # 比对TMDB if torrent_mediainfo.tmdb_id == mediainfo.tmdb_id \ and torrent_mediainfo.type == mediainfo.type: if meta.begin_season and meta.begin_season != torrent_meta.begin_season: diff --git a/app/modules/indexer/__init__.py b/app/modules/indexer/__init__.py index 79c5af9f..ac5ba3e6 100644 --- a/app/modules/indexer/__init__.py +++ b/app/modules/indexer/__init__.py @@ -53,6 +53,7 @@ class IndexerModule(_ModuleBase): result = future.result() if result: results += result + logger.info(f"站点搜索进度:{finish_count} / {len(all_task)}") # 计算耗时 end_time = datetime.now() logger.info(f"站点搜索完成,有效资源数:{len(results)},总耗时 {(end_time - start_time).seconds} 秒")