54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
from pathlib import Path
|
|
import argparse
|
|
import shutil
|
|
|
|
ROOT = Path('/mnt/nas/media/tvshows')
|
|
|
|
|
|
def move(src: Path, dst: Path, apply: bool):
|
|
print(f"MV {src} -> {dst}")
|
|
if not apply:
|
|
return
|
|
dst.parent.mkdir(parents=True, exist_ok=True)
|
|
if dst.exists():
|
|
print(f"SKIP target exists: {dst}")
|
|
return
|
|
shutil.move(str(src), str(dst))
|
|
|
|
|
|
def main():
|
|
ap = argparse.ArgumentParser(description='Normalize TV show names for Jellyfin')
|
|
ap.add_argument('--apply', action='store_true', help='actually perform changes')
|
|
args = ap.parse_args()
|
|
apply = args.apply
|
|
|
|
# 1) House of Cards season dirs
|
|
show = ROOT / '纸牌屋'
|
|
if show.exists():
|
|
for p in sorted(show.iterdir()):
|
|
if p.is_dir() and p.name.startswith('Season') and p.name not in [f'Season {i:02d}' for i in range(100)]:
|
|
suffix = p.name[len('Season'):]
|
|
if suffix.isdigit():
|
|
move(p, show / f'Season {int(suffix):02d}', apply)
|
|
|
|
# 2) Hi My Sweetheart junk files to _junk
|
|
show = ROOT / '海派甜心'
|
|
if show.exists():
|
|
for p in sorted(show.iterdir()):
|
|
if p.is_file() and (p.suffix.lower() == '.webp' or p.name.endswith('.aria2')):
|
|
move(p, show / '_junk' / p.name, apply)
|
|
|
|
# 3) Love Apartment movie-like folder move aside
|
|
show = ROOT / '爱情公寓'
|
|
movie_dir = show / '爱情公寓 (2018)'
|
|
if movie_dir.exists():
|
|
move(movie_dir, ROOT / '爱情公寓(电影特别篇待整理)', apply)
|
|
|
|
print('\nDone.' if apply else '\nDry-run done. Re-run with --apply to execute.')
|
|
print('Note: 黑镜 Season 00 was intentionally not auto-changed; it needs manual confirmation.')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|