diff --git a/CHANGELOG.md b/CHANGELOG.md index 149011e7..dc9b9a3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,8 @@ - 增加手动刷新 API,可以手动刷新 RSS 订阅。 - 新增 RSS 订阅管理 API。 - 新增 `Search Engine`模块,可以通过关键词搜索种子并解析成收集或者订阅任务。 - - 插件化的搜索引擎,可以通过插件的方式添加新的搜索目标,目前支持 `mikan` 和 `dmhy`。 + - 插件化的搜索引擎,可以通过插件的方式添加新的搜索目标,目前支持 `mikan`、`dmhy` 和 `nyaa` +- 新增对字幕组的特异性规则,可以针对不同的字幕组进行单独设置。 - 新增 IPv6 监听支持,需要在环境变量中设置 `IPV6=1`。 - API 新增批量操作,可以批量管理规则和 RSS 订阅。 diff --git a/backend/src/module/conf/config.py b/backend/src/module/conf/config.py index 30d046af..1a9cf1f4 100644 --- a/backend/src/module/conf/config.py +++ b/backend/src/module/conf/config.py @@ -79,5 +79,9 @@ class Settings(Config): else: return os.environ[env] + @property + def group_rules(self): + return self.__dict__["group_rules"] + settings = Settings() diff --git a/backend/src/module/searcher/plugin/__init__.py b/backend/src/module/searcher/plugin/__init__.py index 47852a16..49ca7df0 100644 --- a/backend/src/module/searcher/plugin/__init__.py +++ b/backend/src/module/searcher/plugin/__init__.py @@ -1,8 +1,14 @@ from .mikan import mikan_url +from .nyaa import nyaa_url +from .dmhy import dmhy_url def search_url(site: str, keywords: list[str]): if site == "mikan": return mikan_url(keywords) + elif site == "nyaa": + return nyaa_url(keywords) + elif site == "dmhy": + return dmhy_url(keywords) else: raise NotImplementedError(f"site {site} is not supported") diff --git a/backend/src/module/searcher/plugin/dmhy.py b/backend/src/module/searcher/plugin/dmhy.py new file mode 100644 index 00000000..c8323feb --- /dev/null +++ b/backend/src/module/searcher/plugin/dmhy.py @@ -0,0 +1,8 @@ +import re + + +def dmhy_url(keywords: list[str]): + keyword = "+".join(keywords) + search_str = re.sub(r"[\W_ ]", "+", keyword) + url = f"http://dmhy.org/topics/rss/rss.xml?keyword={search_str}" + return url diff --git a/backend/src/module/searcher/plugin/mikan.py b/backend/src/module/searcher/plugin/mikan.py index 947066c8..0c2b7b3a 100644 --- a/backend/src/module/searcher/plugin/mikan.py +++ b/backend/src/module/searcher/plugin/mikan.py @@ -1,12 +1,8 @@ import re -from module.conf import settings - def mikan_url(keywords: list[str]): keyword = "+".join(keywords) search_str = re.sub(r"[\W_ ]", "+", keyword) - url = f"{settings.rss_parser.custom_url}/RSS/Search?searchstr={search_str}" - if "://" not in url: - url = f"https://{url}" + url = f"https://mikanani.me/RSS/Search?searchstr={search_str}" return url diff --git a/backend/src/module/searcher/plugin/nyaa.py b/backend/src/module/searcher/plugin/nyaa.py new file mode 100644 index 00000000..83686192 --- /dev/null +++ b/backend/src/module/searcher/plugin/nyaa.py @@ -0,0 +1,8 @@ +import re + + +def nyaa_url(keywords: list[str]): + keyword = "+".join(keywords) + search_str = re.sub(r"[\W_ ]", "+", keyword) + url = f"https://nyaa.si/?page=rss&q={search_str}&c=0_0&f=0" + return url