84 lines
2.9 KiB
Python
84 lines
2.9 KiB
Python
from huey import SqliteHuey
|
|
import os
|
|
import logging
|
|
from .comics_manager import ComicsManager
|
|
from .samba_manager import SambaManager
|
|
from .config import settings
|
|
from .task_tracker import record_task_start, record_task_end
|
|
|
|
# Ensure dir exists
|
|
os.makedirs("resources/config", exist_ok=True)
|
|
|
|
# Configure Huey with SQLite backend for persistence
|
|
huey = SqliteHuey(filename="resources/config/tasks.db")
|
|
|
|
logger = logging.getLogger('huey')
|
|
|
|
def get_samba_manager(share="isolation"):
|
|
return SambaManager(
|
|
settings.samba_server_ip,
|
|
share,
|
|
settings.samba_username,
|
|
settings.samba_password,
|
|
)
|
|
|
|
@huey.task(context=True)
|
|
def task_organize_comics(task=None):
|
|
record_task_start(task.id, "Organize Comics")
|
|
logger.info(f"Task {task.id}: Organize Comics started")
|
|
manager = ComicsManager()
|
|
samba_manager = get_samba_manager("isolation")
|
|
try:
|
|
manager.organize_comics(samba_manager)
|
|
record_task_end(task.id, "success")
|
|
except Exception as e:
|
|
logger.error(f"Task Organize Comics failed: {e}")
|
|
record_task_end(task.id, "failed", str(e))
|
|
finally:
|
|
samba_manager.close()
|
|
|
|
@huey.task(context=True)
|
|
def task_move_comics(series_names, share, path, task=None):
|
|
record_task_start(task.id, "Move Comics", f"Count: {len(series_names)} -> {share}:{path}")
|
|
logger.info(f"Task {task.id}: Move Comics started")
|
|
manager = ComicsManager()
|
|
samba_manager = get_samba_manager("isolation")
|
|
try:
|
|
manager.move_series(samba_manager, series_names, share, path)
|
|
record_task_end(task.id, "success")
|
|
except Exception as e:
|
|
logger.error(f"Task Move Comics failed: {e}")
|
|
record_task_end(task.id, "failed", str(e))
|
|
finally:
|
|
samba_manager.close()
|
|
|
|
@huey.task(context=True)
|
|
def task_update_metadata(target_path, force, task=None):
|
|
record_task_start(task.id, "Update Metadata", f"Path: {target_path}")
|
|
logger.info(f"Task {task.id}: Update Metadata started")
|
|
manager = ComicsManager()
|
|
samba_manager = get_samba_manager("isolation")
|
|
try:
|
|
manager.update_existing_metadata(samba_manager, target_path, force)
|
|
record_task_end(task.id, "success")
|
|
except Exception as e:
|
|
logger.error(f"Task Update Metadata failed: {e}")
|
|
record_task_end(task.id, "failed", str(e))
|
|
finally:
|
|
samba_manager.close()
|
|
|
|
@huey.task(context=True)
|
|
def task_sort_by_artist(root_path, task=None):
|
|
record_task_start(task.id, "Sort by Artist", f"Path: {root_path}")
|
|
logger.info(f"Task {task.id}: Sort by Artist started")
|
|
manager = ComicsManager()
|
|
samba_manager = get_samba_manager("isolation")
|
|
try:
|
|
manager.sort_by_artist(samba_manager, root_path)
|
|
record_task_end(task.id, "success")
|
|
except Exception as e:
|
|
logger.error(f"Task Sort by Artist failed: {e}")
|
|
record_task_end(task.id, "failed", str(e))
|
|
finally:
|
|
samba_manager.close()
|