import sys
import os

from config import MOVIEO_TELEGRAM_API

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from celery_tasks.celery import app
from base.utils import MovieoDatabase, fetch_title_metadata
from base.utils.funcs import add_title_to_elasticsearch
from base.utils.scrapers.empirebesttv import get_empirebesttv_updates, extract_dl_links_from_empirebesttv
from base.utils.workflows import title_updater_workflow

@app.task(queue='updates')
def add_and_update_new_titles(title_type: int):
    if title_type == 1:
        title_type_str = 'movie'
    else:
        title_type_str = 'serial'
    posts = get_empirebesttv_updates(title_type_str)
    for post in posts:
        res = extract_dl_links_from_empirebesttv(post['slug'], title_type, 0, 'all')
        try:
            status = res['status']
            if status:
                imdb_id = res['imdb_id']
                with MovieoDatabase() as db:
                    title_db = db.get_title('imdb_id',imdb_id,'id,en_name')
                if title_db:
                    title_id = title_db[0][0]
                    en_name = title_db[0][1]
                else:
                    title_id, en_name = fetch_title_metadata(imdb_id, title_type)
                    add_title_to_elasticsearch(title_id, en_name, title_type)
                res['title_id'] = title_id
                res['title_type'] = title_type
                res['en_name'] = en_name
                res['user_id'] = -1003061818816
                res['api_url'] = MOVIEO_TELEGRAM_API
                title_updater_workflow(res)
        except:
            pass

