Skip to content

Commit bf24ed4

Browse files
committed
feat: support rename cli tool
1 parent 1451800 commit bf24ed4

File tree

5 files changed

+86
-15
lines changed

5 files changed

+86
-15
lines changed

README.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,12 @@ or you can use docker to run the project, see [docker-compose.yml](./deploy/dock
3030

3131
### CLI
3232

33-
```
33+
some useful command line tools are provided, you can use them to rename or generate some info
3434

35+
```
36+
pip install animepipeline
37+
ap-rename -h
38+
ap-btf -h
3539
```
3640

3741
### Configuration

animepipeline/cli/btf/__main__.py

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import argparse
2+
3+
parser = argparse.ArgumentParser(description="Generate all post info files for the anime")
4+
5+
6+
args = parser.parse_args()
7+
8+
9+
def main() -> None:
10+
pass
11+
12+
13+
if __name__ == "__main__":
14+
main()

animepipeline/cli/rename/__main__.py

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import argparse
2+
from pathlib import Path
3+
4+
from animepipeline.mediainfo import FileNameInfo, rename_file
5+
6+
parser = argparse.ArgumentParser(description="Rename anime video files")
7+
8+
# Input Path
9+
parser.add_argument("-p", "--PATH", help="Path to the video file or directory", required=True)
10+
# Episode Number
11+
parser.add_argument("-e", "--EPISODE", help="Episode number", required=False)
12+
# Anime Name
13+
parser.add_argument("-n", "--NAME", help="Anime name", required=True)
14+
# Uploader Name
15+
parser.add_argument("-u", "--UPLOADER", help="Uploader name", required=False)
16+
17+
args = parser.parse_args()
18+
19+
20+
def main() -> None:
21+
# TODO: Support withdraw of renaming
22+
23+
if args.UPLOADER is None:
24+
args.UPLOADER = "TensoRaws"
25+
path = Path(args.PATH)
26+
27+
if not path.is_dir():
28+
if args.EPISODE is None:
29+
raise ValueError("Episode number is required for single file")
30+
31+
try:
32+
episode = int(args.EPISODE)
33+
except ValueError:
34+
raise ValueError("Episode number must be an integer")
35+
36+
anime_info = FileNameInfo(
37+
path=path,
38+
episode=episode,
39+
name=args.NAME,
40+
uploader=args.UPLOADER,
41+
)
42+
new_path = rename_file(anime_info=anime_info)
43+
print(f"Renamed: {path} -> {new_path}")
44+
else:
45+
# TODO: Rename all video in the directory
46+
raise NotImplementedError("Not implemented yet")
47+
48+
49+
if __name__ == "__main__":
50+
main()

poetry.lock

+8-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

+9-5
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,17 @@ license = "MIT"
3939
name = "animepipeline"
4040
readme = "README.md"
4141
repository = "https://github.com/TensoRaws/AnimePipeline"
42-
version = "0.0.3"
42+
version = "0.0.4"
4343

4444
# Requirements
4545
[tool.poetry.dependencies]
4646
feedparser = "^6.0.11"
47-
httpx = "^0.27.2"
48-
loguru = "^0.7.2"
49-
pydantic = "^2.9.2"
47+
httpx = "^0.28.1"
48+
loguru = "^0.7.3"
49+
pydantic = "^2.10.4"
5050
pymediainfo-tensoraws = "6.1.0"
5151
python = "^3.9"
52-
python-telegram-bot = "^21.6"
52+
python-telegram-bot = "^21.9"
5353
pyyaml = "^6.0.2"
5454
qbittorrent-api = "^2024.9.67"
5555
tenacity = "^9.0.0"
@@ -71,6 +71,10 @@ types-aiofiles = "^24.1.0.20240626"
7171
types-pyyaml = "^6.0.12.20240917"
7272
types-requests = "^2.28.8"
7373

74+
[tool.poetry.scripts]
75+
ap-btf = 'animepipeline.cli.btf.__main__:main'
76+
ap-rename = 'animepipeline.cli.rename.__main__:main'
77+
7478
[tool.pytest.ini_options]
7579
asyncio_mode = "auto"
7680

0 commit comments

Comments
 (0)