from celery import Celery
import os
import time
from App import celery_config
import yt_dlp
import tempfile
from App.Transcription.Utils.audio_transcription import transcribe_file

celery = Celery()
celery.config_from_object(celery_config)


@celery.task(name="transcription", bind=True)
def transcription_task(self, file_path, model_size="tiny"):
    return transcribe_file(state=self, file_path=file_path, model_size=model_size)


@celery.task(name="download", bind=True)
def downloadfile(self, url, ydl_opts, model_size="tiny"):
    # updated
    self.update_state(state="Downloading File..", meta={})

    ####
    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        ydl.download([url])

    # updated
    self.update_state(state="Downloading complete", meta={})
    audio_file = ydl_opts["outtmpl"]
    print(audio_file["default"])
    return transcribe_file(
        state=self, file_path=audio_file["default"], model_size=model_size
    )