From 15006418765a4614b05a91eb18b2aebbbcf8f4ca Mon Sep 17 00:00:00 2001 From: Rewrite0 Date: Fri, 31 May 2024 16:33:26 +0800 Subject: [PATCH 1/5] ci: modify process --- .github/workflows/build.yml | 14 ++++++-------- webui/package.json | 3 ++- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 001ea6db..97365eac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -63,7 +63,7 @@ jobs: - name: build test run: | - cd webui && pnpm vue-tsc --noEmit + cd webui && pnpm test:build version-info: runs-on: ubuntu-latest @@ -116,7 +116,7 @@ jobs: build-webui: runs-on: ubuntu-latest - needs: [ test, version-info ] + needs: [test, webui-test, version-info] if: ${{ needs.version-info.outputs.release == 1 || needs.version-info.outputs.dev == 1 }} steps: - name: Checkout @@ -161,7 +161,7 @@ jobs: build-docker: runs-on: ubuntu-latest - needs: [ build-webui, version-info ] + needs: [build-webui, version-info] steps: - name: Checkout uses: actions/checkout@v4 @@ -264,7 +264,7 @@ jobs: release: runs-on: ubuntu-latest - needs: [ build-docker, version-info ] + needs: [build-docker, version-info] if: ${{ needs.version-info.outputs.release == 1 }} outputs: url: ${{ steps.release.outputs.url }} @@ -297,8 +297,7 @@ jobs: - name: Copy requirements.txt working-directory: ./backend - run: - cp requirements.txt src/requirements.txt + run: cp requirements.txt src/requirements.txt - name: Zip app run: | @@ -330,10 +329,9 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} - telegram: runs-on: ubuntu-latest - needs: [ release ] + needs: [release] steps: - name: send telegram message on push uses: appleboy/telegram-action@master diff --git a/webui/package.json b/webui/package.json index 8fdf87d1..1fbf5d99 100644 --- a/webui/package.json +++ b/webui/package.json @@ -5,7 +5,8 @@ "private": true, "scripts": { "prepare": "cd .. && husky install ./webui/.husky", - "build": "vue-tsc --noEmit && vite build", + "test:build": "vue-tsc --noEmit", + "build": "vite build", "dev": "vite", "format": "prettier --write .", "format:check": "prettier --check .", From 29f5617e786a42b65d280bcb32d366fcdc1cb366 Mon Sep 17 00:00:00 2001 From: KotaHv <92137267+KotaHv@users.noreply.github.com> Date: Tue, 11 Jun 2024 01:15:12 +0800 Subject: [PATCH 2/5] fix: changed the global RSS parser filter requires program restart to take effect --- backend/src/module/network/request_contents.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/src/module/network/request_contents.py b/backend/src/module/network/request_contents.py index 05abca02..a5705066 100644 --- a/backend/src/module/network/request_contents.py +++ b/backend/src/module/network/request_contents.py @@ -15,7 +15,7 @@ class RequestContent(RequestURL): def get_torrents( self, _url: str, - _filter: str = "|".join(settings.rss_parser.filter), + _filter: str = None, limit: int = None, retry: int = 3, ) -> list[Torrent]: @@ -23,6 +23,8 @@ class RequestContent(RequestURL): if soup: torrent_titles, torrent_urls, torrent_homepage = rss_parser(soup) torrents: list[Torrent] = [] + if _filter is None: + _filter = "|".join(settings.rss_parser.filter) for _title, torrent_url, homepage in zip( torrent_titles, torrent_urls, torrent_homepage ): From 6f4394958599f1ef2e85590c9764eb24e019c31d Mon Sep 17 00:00:00 2001 From: KotaHv <92137267+KotaHv@users.noreply.github.com> Date: Wed, 24 Jul 2024 13:53:34 +0800 Subject: [PATCH 3/5] fix: Resolve issue #805 --- backend/src/module/parser/analyser/torrent_parser.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/backend/src/module/parser/analyser/torrent_parser.py b/backend/src/module/parser/analyser/torrent_parser.py index ad54cca5..581ca098 100644 --- a/backend/src/module/parser/analyser/torrent_parser.py +++ b/backend/src/module/parser/analyser/torrent_parser.py @@ -11,8 +11,8 @@ PLATFORM = "Unix" RULES = [ r"(.*) - (\d{1,4}(?!\d|p)|\d{1,4}\.\d{1,2}(?!\d|p))(?:v\d{1,2})?(?: )?(?:END)?(.*)", r"(.*)[\[\ E](\d{1,4}|\d{1,4}\.\d{1,2})(?:v\d{1,2})?(?: )?(?:END)?[\]\ ](.*)", - r"(.*)\[(?:第)?(\d*\.*\d*)[话集話](?:END)?\](.*)", - r"(.*)第?(\d*\.*\d*)[话話集](?:END)?(.*)", + r"(.*)\[(?:第)?(\d{1,4}(?:\.\d{1,2})?)[话集話](?:END)?\](.*)", + r"(.*)第?(\d{1,4}(?:\.\d{1,2})?)[话話集](?:END)?(.*)", r"(.*)(?:S\d{2})?EP?(\d+)(.*)", ] @@ -103,3 +103,10 @@ def torrent_parser( episode=episode, suffix=suffix, ) + + +if __name__ == "__main__": + ep = torrent_parser( + "/不时用俄语小声说真心话的邻桌艾莉同学/Season 1/不时用俄语小声说真心话的邻桌艾莉同学 S01E02.mp4" + ) + print(ep) From ee36b05f95f612be18176a9192d621c80152561c Mon Sep 17 00:00:00 2001 From: KotaHv <92137267+KotaHv@users.noreply.github.com> Date: Wed, 24 Jul 2024 14:03:20 +0800 Subject: [PATCH 4/5] fix: support episode as int or float --- backend/src/module/models/torrent.py | 4 ++-- .../module/parser/analyser/torrent_parser.py | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/backend/src/module/models/torrent.py b/backend/src/module/models/torrent.py index e4727202..a8cbef75 100644 --- a/backend/src/module/models/torrent.py +++ b/backend/src/module/models/torrent.py @@ -23,7 +23,7 @@ class EpisodeFile(BaseModel): group: str | None = Field(None) title: str = Field(...) season: int = Field(...) - episode: int = Field(None) + episode: int | float = Field(None) suffix: str = Field(..., regex=r"\.(mkv|mp4|MKV|MP4)$") @@ -32,6 +32,6 @@ class SubtitleFile(BaseModel): group: str | None = Field(None) title: str = Field(...) season: int = Field(...) - episode: int = Field(None) + episode: int | float = Field(None) language: str = Field(..., regex=r"(zh|zh-tw)") suffix: str = Field(..., regex=r"\.(ass|srt|ASS|SRT)$") diff --git a/backend/src/module/parser/analyser/torrent_parser.py b/backend/src/module/parser/analyser/torrent_parser.py index 581ca098..ebb0b4d3 100644 --- a/backend/src/module/parser/analyser/torrent_parser.py +++ b/backend/src/module/parser/analyser/torrent_parser.py @@ -9,11 +9,11 @@ logger = logging.getLogger(__name__) PLATFORM = "Unix" RULES = [ - r"(.*) - (\d{1,4}(?!\d|p)|\d{1,4}\.\d{1,2}(?!\d|p))(?:v\d{1,2})?(?: )?(?:END)?(.*)", - r"(.*)[\[\ E](\d{1,4}|\d{1,4}\.\d{1,2})(?:v\d{1,2})?(?: )?(?:END)?[\]\ ](.*)", + r"(.*) - (\d{1,4}(?:\.\d{1,2})?(?!\d|p))(?:v\d{1,2})?(?: )?(?:END)?(.*)", + r"(.*)[\[\ E](\d{1,4}(?:\.\d{1,2})?)(?:v\d{1,2})?(?: )?(?:END)?[\]\ ](.*)", r"(.*)\[(?:第)?(\d{1,4}(?:\.\d{1,2})?)[话集話](?:END)?\](.*)", r"(.*)第?(\d{1,4}(?:\.\d{1,2})?)[话話集](?:END)?(.*)", - r"(.*)(?:S\d{2})?EP?(\d+)(.*)", + r"(.*)(?:S\d{2})?EP?(\d{1,4}(?:\.\d{1,2})?)(.*)", ] SUBTITLE_LANG = { @@ -81,7 +81,7 @@ def torrent_parser( title, season = get_season_and_title(title) else: title, _ = get_season_and_title(title) - episode = int(match_obj.group(2)) + episode = match_obj.group(2) suffix = Path(torrent_path).suffix if file_type == "media": return EpisodeFile( @@ -110,3 +110,14 @@ if __name__ == "__main__": "/不时用俄语小声说真心话的邻桌艾莉同学/Season 1/不时用俄语小声说真心话的邻桌艾莉同学 S01E02.mp4" ) print(ep) + + ep = torrent_parser( + "/downloads/Bangumi/关于我转生变成史莱姆这档事 (2018)/Season 3/[ANi] 關於我轉生變成史萊姆這檔事 第三季 - 48.5 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4" + ) + print(ep) + + ep = torrent_parser( + "/downloads/Bangumi/关于我转生变成史莱姆这档事 (2018)/Season 3/[ANi] 關於我轉生變成史萊姆這檔事 第三季 - 48.5 [1080P][Baha][WEB-DL][AAC AVC][CHT].srt", + file_type="subtitle", + ) + print(ep) From 2b6fa65a9f17ad604eba492432e825720461870f Mon Sep 17 00:00:00 2001 From: KotaHv <92137267+KotaHv@users.noreply.github.com> Date: Wed, 24 Jul 2024 15:11:05 +0800 Subject: [PATCH 5/5] test: add new cases for test_torrent_parser --- backend/src/test/test_torrent_parser.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/backend/src/test/test_torrent_parser.py b/backend/src/test/test_torrent_parser.py index 10e6a546..f46bb023 100644 --- a/backend/src/test/test_torrent_parser.py +++ b/backend/src/test/test_torrent_parser.py @@ -72,6 +72,25 @@ def test_torrent_parser(): assert bf.season == 1 assert bf.episode == 6 + file_name = "不时用俄语小声说真心话的邻桌艾莉同学 S01E02.mp4" + bf = torrent_parser(file_name) + assert bf.title == "不时用俄语小声说真心话的邻桌艾莉同学" + assert bf.season == 1 + assert bf.episode == 2 + + file_name = "[ANi] 關於我轉生變成史萊姆這檔事 第三季 - 48.5 [1080P][Baha][WEB-DL][AAC AVC][CHT].mp4" + bf = torrent_parser(file_name, season=3) + assert bf.title == "關於我轉生變成史萊姆這檔事 第三季" + assert bf.season == 3 + assert bf.episode == 48.5 + + file_name = "[ANi] 關於我轉生變成史萊姆這檔事 第三季 - 48.5 [1080P][Baha][WEB-DL][AAC AVC][CHT].srt" + sf = torrent_parser(file_name, season=3, file_type="subtitle") + assert sf.title == "關於我轉生變成史萊姆這檔事 第三季" + assert sf.episode == 48.5 + assert sf.season == 3 + assert sf.language == "zh-tw" + class TestGetPathBasename: def test_regular_path(self):