from cmath import log
from concurrent.futures import thread
import sys
sys.path.append("../app")
import runner
import logging
logger = logging.getLogger()
import json



logger.info("Overwriting production values for single use media-fetch")
runner.configuration.models.set_db(
    runner.configuration.SqliteDatabase("media_message_dummy.db"), # chat_db (not needed here)
    runner.configuration.SqliteDatabase("media_downloads.db")
)
runner.configuration.parsed["DOWNLOADS"]["local_storage_path"] = "."

coordinator = runner.Coordinator()


kwargs = {
    "worker_download" : runner.DownloadWorker(),
    "worker_fetch" : runner.FetchWorker(),
    "worker_upload" : runner.UploadWorker(),
    "worker_compress" : runner.CompressWorker(),
}

coordinator.add_workers(**kwargs)
coordinator.start()

with open("media_urls.json", "r") as f:
    url_list = json.loads(f.read()) 

logger.info(f"Found {len(url_list)} media urls")
for u in url_list:
    msg_text = f"<{u}|dummy preview text>"
    dummy_thread = runner.models.Thread()
    msg = runner.models.Message(text= msg_text, thread=dummy_thread)
    coordinator.incoming_request(msg)