mirror of https://github.com/Nezreka/SoulSync.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.6 KiB
78 lines
2.6 KiB
"""
|
|
Retag queue endpoints — view and manage pending metadata corrections.
|
|
"""
|
|
|
|
from flask import request
|
|
from database.music_database import get_database
|
|
from .auth import require_api_key
|
|
from .helpers import api_success, api_error
|
|
|
|
|
|
def register_routes(bp):
|
|
|
|
@bp.route("/retag/groups", methods=["GET"])
|
|
@require_api_key
|
|
def list_retag_groups():
|
|
"""List all retag groups with track counts."""
|
|
try:
|
|
db = get_database()
|
|
groups = db.get_retag_groups()
|
|
return api_success({"groups": groups})
|
|
except Exception as e:
|
|
return api_error("RETAG_ERROR", str(e), 500)
|
|
|
|
@bp.route("/retag/groups/<int:group_id>", methods=["GET"])
|
|
@require_api_key
|
|
def get_retag_group(group_id):
|
|
"""Get a retag group with its tracks."""
|
|
try:
|
|
db = get_database()
|
|
# Get group info
|
|
groups = db.get_retag_groups()
|
|
group = next((g for g in groups if g["id"] == group_id), None)
|
|
if not group:
|
|
return api_error("NOT_FOUND", f"Retag group {group_id} not found.", 404)
|
|
|
|
tracks = db.get_retag_tracks(group_id)
|
|
return api_success({
|
|
"group": group,
|
|
"tracks": tracks,
|
|
})
|
|
except Exception as e:
|
|
return api_error("RETAG_ERROR", str(e), 500)
|
|
|
|
@bp.route("/retag/groups/<int:group_id>", methods=["DELETE"])
|
|
@require_api_key
|
|
def delete_retag_group(group_id):
|
|
"""Delete a retag group and its tracks."""
|
|
try:
|
|
db = get_database()
|
|
ok = db.delete_retag_group(group_id)
|
|
if ok:
|
|
return api_success({"message": f"Retag group {group_id} deleted."})
|
|
return api_error("NOT_FOUND", f"Retag group {group_id} not found.", 404)
|
|
except Exception as e:
|
|
return api_error("RETAG_ERROR", str(e), 500)
|
|
|
|
@bp.route("/retag/groups", methods=["DELETE"])
|
|
@require_api_key
|
|
def clear_retag_groups():
|
|
"""Delete all retag groups and tracks."""
|
|
try:
|
|
db = get_database()
|
|
count = db.clear_all_retag_groups()
|
|
return api_success({"message": f"Cleared {count} retag groups."})
|
|
except Exception as e:
|
|
return api_error("RETAG_ERROR", str(e), 500)
|
|
|
|
@bp.route("/retag/stats", methods=["GET"])
|
|
@require_api_key
|
|
def retag_stats():
|
|
"""Get retag queue statistics."""
|
|
try:
|
|
db = get_database()
|
|
stats = db.get_retag_stats()
|
|
return api_success(stats)
|
|
except Exception as e:
|
|
return api_error("RETAG_ERROR", str(e), 500)
|