import json
import re
import time
import ast

from openai import OpenAI
from . import config

client = OpenAI(api_key=config.openai_key)


def get_post_data(text):
    lines = [
        'این اطلاعات رو در فرمت جیسون بهم بده',
        '[نام ترکی باشه (تغییر نده)، نام فارسی، تاریخ میلادی به فرمت Y-m-d، ژانر، کارگردان، روز های پخش به میلادی باشه، نوعش اینکه فیلمه یا سریال، سال انتشار، خلاصه داستان]',
        '{"tr_title": "", "fa_title": "", "date": "", "genres": [], "directors": [], "broadcast_days": [], "release_date": "", "type": "movies/series", "fa_summary": ""}',
        text,
    ]

    for i in range(0, 3):

        try:
            completion = client.chat.completions.create(
                model="gpt-5-mini",
                store=True,
                messages=[
                    {"role": "user", "content": '\n'.join(lines)}
                ]
            )

            content = completion.choices[0].message.content.strip()

            print(content)
            
            parsed = json.loads(content)
            
            if isinstance(parsed, list):
            
                return parsed[0]

            # match = re.search(r"json\s*({.*?})\s*", completion.choices[0].message.content, re.DOTALL)

            # return json.loads(match.group(1))
            return parsed


        except Exception as e:

            print('ai error, 10sec sleep')

            print(e)

            time.sleep(10)

    return False


def translate(text):
    lines = [
        'این متن رو به فارسی ترجمه کن و در فرمت جیسون بهم بده',
        '{"text":"","translation":"","source_language":"","target_language":"fa"}',
        text,
    ]

    for i in range(0, 3):

        try:
            completion = client.chat.completions.create(
                model="gpt-5-mini",
                store=True,
                messages=[
                    {"role": "user", "content": '\n'.join(lines)}
                ]
            )

            content = completion.choices[0].message.content.strip()

            print(content)

            parsed = json.loads(content)

            if isinstance(parsed, list):
                return parsed[0]['translation']

            return parsed['translation']


        except Exception as e:

            print('ai error, 10sec sleep')

            print(e)

            time.sleep(10)

    return False