import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from celery_tasks.celery import app
from base.utils.workflows import get_quality_from_sources_workflow, get_title_from_sources_workflow, \
    isolate_softsub_workflow, isolate_hardsub_workflow, isolate_dubbed_workflow, isolate_quality_workflow

@app.task(queue='router')
def route_task(request_type: str, request_id: int, **kwargs):
    if request_type == 'title_request':
        title_name = kwargs.get('title_name')
        get_title_from_sources_workflow(request_id, title_name)
    elif request_type == 'quality_request':
        get_quality_from_sources_workflow(request_id)
    elif request_type == 'isolate_softsub_converter':
        admin_user_id = kwargs.get('admin_user_id')
        username = kwargs.get('username')
        file_id = kwargs.get('file_id')
        file_name = kwargs.get('file_name')
        subtitle = kwargs.get('sub_or_audio')
        isolate_softsub_workflow(admin_user_id, username, file_name, file_id, subtitle)
    elif request_type == 'isolate_hardsub_converter':
        admin_user_id = kwargs.get('admin_user_id')
        username = kwargs.get('username')
        file_id = kwargs.get('file_id')
        file_name = kwargs.get('file_name')
        subtitle = kwargs.get('sub_or_audio')
        isolate_hardsub_workflow(admin_user_id, username, file_name, file_id, subtitle)
    elif request_type == 'isolate_dubbed_converter':
        admin_user_id = kwargs.get('admin_user_id')
        username = kwargs.get('username')
        file_id = kwargs.get('file_id')
        file_name = kwargs.get('file_name')
        audio_url = kwargs.get('sub_or_audio')
        isolate_dubbed_workflow(admin_user_id, username, file_name, file_id, audio_url)
    elif request_type == 'isolate_quality_converter':
        admin_user_id = kwargs.get('admin_user_id')
        username = kwargs.get('username')
        file_id = kwargs.get('file_id')
        file_name = kwargs.get('file_name')
        quality = kwargs.get('quality')
        isolate_quality_workflow(admin_user_id, username, file_name, file_id, quality)
