From 1f82e0529fa3afe0ac59e40fd5623f24255c3569 Mon Sep 17 00:00:00 2001 From: RanKKI Date: Fri, 1 Jul 2022 22:53:25 +0800 Subject: [PATCH 1/4] feat: support 1k+ episode --- auto_bangumi/parser/analyser/raw_parser.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/auto_bangumi/parser/analyser/raw_parser.py b/auto_bangumi/parser/analyser/raw_parser.py index f653f387..b394d9fe 100644 --- a/auto_bangumi/parser/analyser/raw_parser.py +++ b/auto_bangumi/parser/analyser/raw_parser.py @@ -4,9 +4,9 @@ from parser.episode import Episode logger = logging.getLogger(__name__) -EPISODE_RE = re.compile(r"\d{1,3}") +EPISODE_RE = re.compile(r"\d+") TITLE_RE = re.compile( - r"(.*|\[.*])( -? \d{1,3} |\[\d{1,3}]|\[\d{1,3}.?[vV]\d{1}]|[第]\d{1,3}[话話集]|\[\d{1,3}.?END])(.*)" + r"(.*|\[.*])( -? \d+ |\[\d+]|\[\d+.?[vV]\d{1}]|[第]\d+[话話集]|\[\d+.?END])(.*)" ) RESOLUTION_RE = re.compile(r"1080|720|2160|4K") SOURCE_RE = re.compile(r"B-Global|[Bb]aha|[Bb]ilibili|AT-X|Web") From 6d505d73ac2b6e019b3a6c53e4cc66a6cc45f307 Mon Sep 17 00:00:00 2001 From: RanKKI Date: Fri, 1 Jul 2022 22:54:05 +0800 Subject: [PATCH 2/4] test: episode, season, more infos --- auto_bangumi/tests/test_raw_parser.py | 46 ++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/auto_bangumi/tests/test_raw_parser.py b/auto_bangumi/tests/test_raw_parser.py index 00f18cc9..613ea5fa 100644 --- a/auto_bangumi/tests/test_raw_parser.py +++ b/auto_bangumi/tests/test_raw_parser.py @@ -1,4 +1,5 @@ import unittest +from random import randrange from parser.analyser import RawParser @@ -15,14 +16,27 @@ class TestRawParser(unittest.TestCase): self.assertEqual(info.ep_info.number, 22) self.assertEqual(info.season_info.number, 2) - content = "【幻樱字幕组】【4月新番】【古见同学有交流障碍症 第一季 Komi-san wa, Komyushou Desu. S01】【23】【GB_MP4】【4K】" + content = "[百冬练习组&LoliHouse] BanG Dream! 少女乐团派对!☆PICO FEVER! / Garupa Pico: Fever! - 26 [WebRip 1080p HEVC-10bit AAC][简繁内封字幕][END] [101.69 MB]" info = parser.analyse(content) - self.assertEqual(info.title, "Komi-san wa, Komyushou Desu.") - self.assertEqual(info.dpi, "4K") - self.assertEqual(info.ep_info.number, 23) + self.assertEqual(info.group, "百冬练习组&LoliHouse") + self.assertEqual(info.title, "BanG Dream! 少女乐团派对!☆PICO FEVER!") + self.assertEqual(info.dpi, "1080p") + self.assertEqual(info.ep_info.number, 26) self.assertEqual(info.season_info.number, 1) + content = "【喵萌奶茶屋】★04月新番★[夏日重现/Summer Time Rendering][11][1080p][繁日双语][招募翻译] [539.4 MB]" + info = parser.analyse(content) + self.assertEqual(info.group, "喵萌奶茶屋") + self.assertEqual(info.title, "Summer Time Rendering") + self.assertEqual(info.dpi, "1080p") + self.assertEqual(info.ep_info.number, 11) + self.assertEqual(info.season_info.number, 1) + + content = "【喵萌奶茶屋】★04月新番★夏日重现/Summer Time Rendering[11][1080p][繁日双语][招募翻译] [539.4 MB]" + info = parser.analyse(content) + self.assertEqual(info.title, "Summer Time Rendering") + def test_pre_process(self): content = "【幻樱字幕组】【4月新番】" expected_content = "[幻樱字幕组][4月新番]" @@ -51,3 +65,27 @@ class TestRawParser(unittest.TestCase): self.assertEqual(len(ret), 3) for i in range(3): self.assertEqual(ret[i], expected[i]) + + def test_episode(self): + parser = RawParser() + for i in range(1, 100000, 123): + epi = i + randrange(1, 100) + content = f"【幻樱字幕组】【4月新番】【古见同学有交流障碍症 第一季 Komi-san wa, Komyushou Desu. S01】【{epi}】【GB_MP4】【4K】" + info = parser.analyse(content) + self.assertEqual(info.ep_info.number, epi) + + for i in range(1, 100000, 123): + epi = i + randrange(1, 100) + content = f"[Nekomoe kissaten][Summer Time Rendering - {epi} [1080p][JPTC].mp4" + info = parser.analyse(content) + self.assertEqual(info.ep_info.number, epi) + + def test_season(self): + chinese_number_arr = ["一", "二", "三", "四", + "五", "六", "七", "八", "九", "十", "十一", "十二"] + parser = RawParser() + for i in range(1, 13): + season = str(i).zfill(2) + content = f"【幻樱字幕组】【古见同学有交流障碍症 第{chinese_number_arr[i - 1]}季 Komi-san wa, Komyushou Desu. S{season}】[1]" + info = parser.analyse(content) + self.assertEqual(info.season_info.number, i) From abde83d59ac73003d07a080da86624649b9bcaab Mon Sep 17 00:00:00 2001 From: RanKKI Date: Fri, 1 Jul 2022 23:07:26 +0800 Subject: [PATCH 3/4] ci: unittest --- .github/workflows/unittest.yml | 33 +++++++++++++++++++++++++++++++++ auto_bangumi/test.sh | 3 --- requirements.txt | 31 ++++++++++++++++++++----------- 3 files changed, 53 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/unittest.yml delete mode 100755 auto_bangumi/test.sh diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml new file mode 100644 index 00000000..815dc66b --- /dev/null +++ b/.github/workflows/unittest.yml @@ -0,0 +1,33 @@ +# This workflow will install Python dependencies, run tests and lint with a single version of Python +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: unittest + +on: + push: + pull_request: + +permissions: + contents: read + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.10 + uses: actions/setup-python@v3 + with: + python-version: "3.10" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + + - name: Test + run: | + cd auto_bangumi + python -m unittest discover tests \ No newline at end of file diff --git a/auto_bangumi/test.sh b/auto_bangumi/test.sh deleted file mode 100755 index e12d8809..00000000 --- a/auto_bangumi/test.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -exec python -m unittest discover tests \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index cc2d907a..6abe3490 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,20 @@ -qbittorrent-api -bs4 -requests==2.28.0 -pysocks -lxml - -setuptools~=62.1.0 -fastapi -uvicorn~=0.17.6 -jinja2 -pydantic~=1.9.1 \ No newline at end of file +anyio==3.6.1 +beautifulsoup4==4.11.1 +certifi==2022.6.15 +charset-normalizer==2.1.0 +click==8.1.3 +fastapi==0.78.0 +h11==0.13.0 +idna==3.3 +pydantic==1.9.1 +PySocks==1.7.1 +qbittorrent-api==2022.5.32 +requests==2.28.1 +six==1.16.0 +sniffio==1.2.0 +soupsieve==2.3.2.post1 +starlette==0.19.1 +thefuzz==0.19.0 +typing_extensions==4.3.0 +urllib3==1.26.9 +uvicorn==0.18.2 From dc89ea277e131726ee27ef42f2f097e217ed9275 Mon Sep 17 00:00:00 2001 From: RanKKI Date: Sun, 3 Jul 2022 17:50:40 +0800 Subject: [PATCH 4/4] test: fix episode range --- auto_bangumi/tests/test_raw_parser.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/auto_bangumi/tests/test_raw_parser.py b/auto_bangumi/tests/test_raw_parser.py index 613ea5fa..f134e862 100644 --- a/auto_bangumi/tests/test_raw_parser.py +++ b/auto_bangumi/tests/test_raw_parser.py @@ -68,14 +68,12 @@ class TestRawParser(unittest.TestCase): def test_episode(self): parser = RawParser() - for i in range(1, 100000, 123): - epi = i + randrange(1, 100) + for epi in range(1, 100000, 100): content = f"【幻樱字幕组】【4月新番】【古见同学有交流障碍症 第一季 Komi-san wa, Komyushou Desu. S01】【{epi}】【GB_MP4】【4K】" info = parser.analyse(content) self.assertEqual(info.ep_info.number, epi) - for i in range(1, 100000, 123): - epi = i + randrange(1, 100) + for epi in range(1, 100000, 100): content = f"[Nekomoe kissaten][Summer Time Rendering - {epi} [1080p][JPTC].mp4" info = parser.analyse(content) self.assertEqual(info.ep_info.number, epi)