import requests
from bs4 import BeautifulSoup
from urllib.parse import unquote
import re

# --- کوکی لاگین از فایل ---
logedin = ''
with open('logedin.txt', 'r') as f:
    for line in f:
        logedin = line.strip()
        break

# --- استفاده از Session و ست کردن کوکی‌ها ---
session = requests.Session()
session.cookies.set('wordpress_logged_in_7a04687845b0293923d85c8b5afee67b', logedin)
session.cookies.set('hide_top_message', '1')

# --- هدر عمومی ---
headers = {
    'accept': '*/*',
    'accept-language': 'en-US,en;q=0.9,fa;q=0.8',
    'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'origin': 'https://zhomis.info',
    'priority': 'u=1, i',
    'referer': 'https://zhomis.info/',
    'sec-ch-ua': '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-origin',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
    'x-requested-with': 'XMLHttpRequest',
}

# --- توابع کمکی ---
def get_language(id):
    data = {
        'action': 'single_tabs',
        'tab_id': 'moree_details',
        'post_id': str(id),
    }
    response = session.post('https://zhomis.info/wp-admin/admin-ajax.php', headers=headers, data=data)
    soup = BeautifulSoup(response.text, 'html.parser')
    zaban, sal = 'English', ''
    for x in soup.find_all('div', class_="item_more_de"):
        if 'زبان' in x.text:
            left_side = x.find('div', class_="left_side")
            zaban = left_side.text.strip()
        if 'سال تولید' in x.text:
            left_side = x.find('div', class_="left_side")
            sal = left_side.text.strip()
    return zaban, sal

def get_doubller(id):
    data = {
        'action': 'single_tabs',
        'tab_id': 'moree_details',
        'post_id': str(id),
    }
    response = session.post('https://zhomis.info/wp-admin/admin-ajax.php', headers=headers, data=data)
    soup = BeautifulSoup(response.text, 'html.parser')
    for x in soup.find_all('div', class_="item_more_de"):
        if 'عوامل دوبله' in x.text:
            left_side = x.find('div', class_="left_side")
            return left_side.text.strip()
    return ''

def single_c_getter(id):
    comments = []
    try:
        data = {
            'action': 'single_tabs',
            'tab_id': 'comments',
            'post_id': str(id),
        }
        response = session.post('https://zhomis.info/wp-admin/admin-ajax.php', headers=headers, data=data)
        soup = BeautifulSoup(response.text.replace('  ', '').replace('\\"', '').replace('<\\', '<').replace('\\\\', '\\'), 'html.parser')
        spoil = False
        try:
            for spilchecker in soup.find_all('div', 'comment_list_item'):
                if 'نمایش نظر حاوی اسپویل' in spilchecker.text.encode('utf-8').decode('unicode_escape'):
                    spoil = True
                for comment in spilchecker.find_all('div', class_='data_cm'):
                    try:
                        comment_author = comment.find('span', class_='comment_author').text
                    except:
                        comment_author = ''
                    try:
                        content_text = str(comment.find('div', class_='content_text').text).replace('زرفیلم', 'بلبل جان').replace("âx80x8c", " ").replace('â\x80\x8c', '')
                    except:
                        content_text = ''
                    comments.append({'author': comment_author, 'content': content_text, "spoil": spoil})
        except:
            pass
    except:
        pass
    return comments

def c_getter(id, page):
    comments = []
    try:
        data = {
            'action': 'load_more_comments',
            'post_id': str(id),
            'cpage': str(page),
        }
        response = session.post('https://zhomis.info/wp-admin/admin-ajax.php', headers=headers, data=data)
        soup = BeautifulSoup(response.text.replace('  ', '').replace('\\"', '').replace('<\\', '<').replace('\\\\', '\\'), 'html.parser')
        spoil = False
        try:
            for spilchecker in soup.find_all('div', 'comment_list_item'):
                if 'نمایش نظر حاوی اسپویل' in spilchecker.text.encode('utf-8').decode('unicode_escape'):
                    spoil = True
                for comment in spilchecker.find_all('div', class_='data_cm'):
                    try:
                        comment_author = comment.find('span', class_='comment_author').text.replace('\\u062f\\u0631 \\u067e\\u0627\\u0633\\u062e \\u0628\\u0647', 'در پاسخ به')
                    except:
                        comment_author = ''
                    try:
                        content_text = str(comment.find('div', class_='content_text').text).encode('utf-8').decode('unicode_escape').replace("âx80x8c", " ").replace('â\x80\x8c', '')
                    except:
                        content_text = ''
                    comments.append({'author': comment_author, 'content': content_text, "spoil": spoil})
        except:
            pass
    except:
        pass
    return comments

# --- تابع اصلی جایگزین get_details_movies ---
def get_details_movies(id, name, link):  # link فقط برای سازگاری
    try:
        url_link = f'https://zhomis.info/?p={id}'
        response = session.get(url_link, headers=headers)
        soup = BeautifulSoup(response.text, 'html.parser')

        imdb = ''
        for alla in soup.find_all('a'):
            if '/title/' in str(alla['href']):
                imdb = str(alla['href']).split('/')[-2].strip()
                break

        try:
            updates_line = soup.find('div', class_="updates_line").text.replace('بروزرسانی :', '').strip()
        except:
            updates_line = ''

        soup_meta = soup.find('div', class_='meta_side_cover')
        try:
            fa_second_title = soup_meta.find('h2', class_='fa_second_title').text
        except:
            fa_second_title = ''
        try:
            plot = soup_meta.find('div', class_='plot').text
        except:
            plot = ''

        genre = []
        try:
            for h3_genre in soup_meta.find('div', class_='genres_links').find_all('h3'):
                genre.append(h3_genre.text)
        except:
            pass

        comments = []
        try:
            comments.extend(single_c_getter(str(id)))
            for x in range(1, 8):
                l = c_getter(id, x)
                if len(l) < 1:
                    break
                comments.extend(l)
        except:
            pass

        language = get_language(id)
        doble = get_doubller(id)

        data = {
            'en_second': name,
            'fa_second_title': fa_second_title,
            'plot': plot,
            'genre': genre,
            'imdb': imdb,
            'comments': comments,
            'language': str(language[0]),
            'sal': str(language[1]),
            'id': id,
            'updates_line': updates_line,
            'doble': doble
        }
        return data

    except Exception as e:
        print(e)
        return None
