Change ABCService to iViewService

This commit is contained in:
2026-05-14 21:15:57 +09:30
parent ed4c54d051
commit fd8484e89b
+64 -13
View File
@@ -1,29 +1,27 @@
#!/usr/bin/env python3
import argparse
import sys
from pathlib import Path
from services.iview import ABCService
from services.iview import iViewService
# -------------------------
# Metadata files
# Metadata paths
# -------------------------
DOWNLOAD_META = Path("./.download")
HISTORY_FILE = DOWNLOAD_META / ".history"
SERIES_FILE = DOWNLOAD_META / ".series"
DOWNLOAD_META.mkdir(exist_ok=True)
HISTORY_FILE.touch(exist_ok=True)
SERIES_FILE.touch(exist_ok=True)
# -------------------------
# Service registry
# -------------------------
SERVICES = {
"ABC": ABCService(),
"IVIEW": iViewService(),
}
@@ -32,7 +30,10 @@ SERVICES = {
# -------------------------
class AutoGrabber:
def __init__(self):
def __init__(self, download_dir, dry_run=False):
self.download_dir = Path(download_dir)
self.dry_run = dry_run
self.history = self.load_history()
self.series_list = self.load_series()
@@ -44,6 +45,9 @@ class AutoGrabber:
history = {}
if not HISTORY_FILE.exists():
HISTORY_FILE.touch()
with open(HISTORY_FILE, "r") as f:
for line in f:
@@ -60,7 +64,6 @@ class AutoGrabber:
history[ep_id.strip()] = filename.strip()
else:
# backwards compatibility
history[line.strip()] = None
return history
@@ -83,6 +86,15 @@ class AutoGrabber:
# -------------------------
def load_series(self):
if not SERIES_FILE.exists():
print(
"❌ Missing required file: "
f"{SERIES_FILE}"
)
sys.exit(1)
series = []
with open(SERIES_FILE, "r") as f:
@@ -162,11 +174,23 @@ class AutoGrabber:
continue
print(f"{filename} → queued")
# dry-run mode
if self.dry_run:
print(
f"🧪 "
f"{filename} "
f"(would download)"
)
continue
print(f"{filename} → downloading")
success = service.download_episode(
episode,
entry
entry,
self.download_dir
)
if success:
@@ -194,9 +218,36 @@ class AutoGrabber:
print("\n✅ Autograbber run complete")
# -------------------------
# CLI
# -------------------------
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--dry-run",
action="store_true",
help="Do not download anything"
)
parser.add_argument(
"--downloads",
default="./downloads",
help="Download directory"
)
return parser.parse_args()
# -------------------------
# Entry point
# -------------------------
if __name__ == "__main__":
AutoGrabber().run()
args = parse_args()
AutoGrabber(
download_dir=args.downloads,
dry_run=args.dry_run
).run()