# -*- coding:utf-8 -*-
import os
import time
import json
import sqlite3
from random import choice, randint
from pathlib import Path
import nonebot
from nonebot import on_command, CommandSession
from nonebot import session

import config # type: ignore
from ATRI.modules import response # type: ignore


bot = nonebot.get_bot()
master = config.MASTER()
apikey = bot.config.LOLICONAPI # type: ignore

URL = 'https://api.lolicon.app/setu/'

SETU_REPLY = """Title: {title}
Pid: {pid}
{setu}
---------------
Complete time:{time}s"""

setu_type = 1
@on_command('setu', patterns = (r"来[点丶张份副个幅][涩色瑟][图圖]|[涩色瑟][图圖]来|[涩色瑟][图圖][gkd|GKD|搞快点]|[gkd|GKD|搞快点][涩色瑟][图圖]|[图圖]来|[我你她他它]想要[点丶张份副][涩色瑟][图圖]|我想要[1一][张份幅副个只][涩色瑟][图圖]|[我你她他它]想[看|look][涩涩|色色]的东西"), only_to_me = False)
async def setu(session: CommandSession):
    group = session.event.group_id
    user = session.event.user_id
    start = time.perf_counter()
    with open('ATRI/plugins/noobList/noobList.json', 'r') as f:
        data0 = json.load(f)
    with open(Path('.') / 'ATRI' / 'plugins' / 'switch' / 'switch.json', 'r') as f:
        data1 = json.load(f)

    if str(user) in data0.keys():
        pass
    else:
        if data1["setu"] == 0:
            res = randint(1,10)
            if 1 <= res < 9:
                res = randint(1,4)
                if 1 <= res < 3:
                    if setu_type == 1:
                        res = randint(1,4)
                        con = sqlite3.connect(Path('.') / 'ATRI' / 'data' / 'sqlite' / 'setu' / 'nearR18.db')
                        cur = con.cursor()
                        msg = cur.execute('SELECT * FROM nearR18 ORDER BY RANDOM() limit 1;')
                    
                        if 1 <= res < 3:
                            for i in msg:
                                pid = i[0]
                                title = i[1]
                                img = i[7]
                                end = time.perf_counter()
                                await session.send(
                                    SETU_REPLY.format(
                                    title = title,
                                    pid = pid,
                                    setu = img,
                                    time = round(end - start, 3)
                                    )
                                )
                        elif res == 4:
                            for i in msg:
                                pid = i[0]
                                title = i[1]
                                img = i[7]
                                end = time.perf_counter()
                                await session.send('我找到涩图了!但我发给主人了\nο(=•ω<=)ρ⌒☆')
                                await bot.send_private_msg( # type: ignore
                                    user_id = master,
                                    message = f"主人,从群{group}来的涩图!热乎着!\nTitle: {title}\nPid: {pid}\n{img}\nComplete time: {round(end - start, 3)}"
                                )

                    
                    elif setu_type == 2:
                        res = randint(1,4)
                        await session.send('别急!正在找图!')
                        start = time.perf_counter()
                        values = {
                            "apikey": apikey,
                            "r18": "0",
                            "num": "1"
                        }

                        try:
                            dc = json.loads(response.request_api_params(URL, values))
                            title = dc["data"][0]["title"]
                            pid = dc["data"][0]["pid"]
                            setu = dc["data"][0]["url"] #b64.b64_str_img_url(dc["data"][0]["url"])
                        except:
                            await session.send('失败了失败了失败了失...')
                            return
                        if 1 <= res < 3:
                            end = time.perf_counter()
                            await session.send(
                                SETU_REPLY.format(
                                title = title,
                                pid = pid,
                                setu = dc["data"][0]["url"],
                                time = round(end - start, 3)
                                )
                            )
                        elif res == 4:
                            end = time.perf_counter()
                            await session.send('我找到涩图了!但我发给主人了\nο(=•ω<=)ρ⌒☆')
                            await bot.send_private_msg( # type: ignore
                                user_id = master,
                                message = f"主人,从群{group}来的涩图!热乎着!\nTitle: {title}\nPid: {pid}\n{setu}\nComplete time: {round(end - start, 3)}"
                            )
                elif res == 4:
                    img = choice(
                        [
                            'SP.jpg', 'SP1.jpg', 'SP2.jpg'
                        ]
                    )
                    img = Path('.') / 'ATRI' / 'data' / 'emoji' / f'{img}'
                    img = os.path.abspath(img)
                    await session.send(f'[CQ:image,file=file:///{img}]')
            
            elif res == 10:
                img = choice(
                    [
                        'GDZ.png', 'SHZY1.jpg', 'SHZY2.jpg', 'SHZY3.jpg', 'SHZY4.jpg', 'SHZY5.jpg', 'SHZY6.jpg'
                    ]
                )
                img = Path('.') / 'ATRI' / 'data' / 'img' / 'niceIMG' / f'{img}'
                img = os.path.abspath(img)
                await session.send(f'[CQ:image,file=file:///{img}]')

        else:
            await session.send('该功能已被禁用...')


@on_command('change_setu_type', aliases = ['涩图导向'], only_to_me =False)
async def _(session: CommandSession):
    global setu_type
    if session.event.user_id == master:
        msg = session.event.raw_message.split(' ', 1)
        s_type = msg[1]
        
        if s_type == '数据库':
            setu_type = 1
        
        elif s_type == '接口':
            setu_type = 2
        
        else:
            pass
        
        await session.send('okay~~~~')