import requests
from bs4 import BeautifulSoup
import pymysql
import time
import random

from datetime import datetime
now1 = datetime.now()
print("ws 시작 시점: "+str(now1))

def check_category(category_number):
    cookies = {
        'NNB': '4ALAOQCWVEIGO',
        'SHP_BUCKET_ID': '8',
        'ASID': 'daeec2280000019299abaaac0000006a',
        '_fwb': '483MAGGpQIU0PEmDHbL2xs.1729500414751',
        'nstore_session': 'gI9ulNb43KSY95BvBmjwca3R',
        '_fbp': 'fb.1.1732834849613.718811848905901864',
        '_gcl_au': '1.1.771596919.1732834850',
        'nstore_pagesession': 'i3zvowqlv5E/GdsLaDK-336677',
        'NAC': '0XQxBYQWOUSK',
        'ncpa': '526937|m5m1cpcg|0579b21912c552b0016ebcb7def87b852e96cddb|s_2f3cbab994ce|ae7ca7e295fa228129c0081c4a595ee2d6bd9ca4:300094|45a21ffbaa59a2daaf8c694e9a238edf270f6eb1|m5nmi58w|s_595203204546180226|8891f13719c2b65e38f12e76db802d3fdc97a1cd:95694|m5nmi7k8|48b4e9f61316fbacab17f899624b6d089771a66a|95694|01f025dda9abaa9c6b67052e2681390d59715e7f',
        'NACT': '1',
        '066c80626d06ffa5b32035f35cabe88d': '%DE%DBk%9AN%05%60%D2n%1D%F70%99R%E0%17%0A%F6%1B%7E%BCn%EC%D5%C0W%14%C9%40%B8%08%B5%09%18%26%A0d%98%DA%B7%EA%93-%7FF%80%94%CD%81%AFO%07%B6%10%0E%C5e%03RB%CC+%2A%F0%D82%05%CD%8B%96cn%B0%8F%93%28x%7E%1F%EBv%90G%A50%82k%9294%96%C8l%93%2B%9A%AD%DD6%5E3%C6%14%04%27%A8%C0%E9%3B%03x%FC%CB%92%11%D0%9BP%E6%C2%C9%24%DDp%B8%CF%FEB%3DS%A9%F8%9D%CE%8D%AA%11%83%E5i%A4%97Dn',
        '1a5b69166387515780349607c54875af': '%22%9E%93z%F6+X%0B',
        'SRT30': '1736395259',
        'CBI_SES': 'Xz4sDGhmIqC47+NvSiGkwNXViOD7T3mjYHskbqd6WSugqjCd3ryymLySnp3Lg+nWdXGOGKIjPY/V2l1/c8s+UJuebIS7Li7L8YKwKv5NVrMTh27mTJPa/IsR+7Ii9Dp7KNwbMBsxhUGKfVdh6ZEBpmfow+qIigJWGcV0DaJdzJeEqpur7Npl92u/EDQAeAaBnnXkl8ii/SlJvMkvVoBtxmtJebf2ss0hkb4IbUcV/yco23ZKU6+UFNqc1Mtmba1jJvsRP1Gb4tzSPIByvIJRm1+ezy66XhQvGLGzcq3u2M10CFWbSFrbOGli7FKITZBLuSF7eyw86alMWDuHtenzOVlNfBCUt18FFnYaWtEoOMpIfouNXDBPTDLELdUnGgg7hHNx1sfxaLmf4jNMz8Fh4Ncd8grTvnORn4Gdq3p6+f9CvIMH8AsHEv6tlttceav7ZghmHeKHRL8vcHWycKmngOp+eLyGOj9onFCJElIs9cc=',
        'SRT5': '1736397450',
        'CBI_CHK': '"r5V0mf9uRUZHZ/vmLGy3ez7f4/k4aqWXL5o03eN68focGPmUa4TzZLEd/QU9s59nKebKdKc2WtVV5teKX2l7LwgK2OqN5oi8DGuYYFXqW8ViXu9ofXajMy+J7K/vJ5RYUcGJ+/v/HVLDCwZ0Sbf0FkvGzD29Ll/gQjUKN5J1W2U="',
        '_naver_usersession_': 'as4wPaQMyoNsNLoQtQYSpRf2',
        'page_uid': 'i39U6lqo15wsshifjqGssssstF4-173523',
        'sus_val': 'A6MvBIBt0bhfipvAW/vpVXbb',
        'NX_BT_ID': '-1',
        'BUC': 'nVXs43irGD4RRDAMpa95aZ1LuECWNqrqaL6x6ah2Rv4=',
    }

    headers = {
        'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
        'accept-language': 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7',
        'cache-control': 'max-age=0',
        'priority': 'u=0, i',
        'referer': 'https://search.shopping.naver.com/catalog/44247594325',
        'sec-ch-ua': '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
        'sec-ch-ua-arch': '"x86"',
        'sec-ch-ua-bitness': '"64"',
        'sec-ch-ua-form-factors': '"Desktop"',
        'sec-ch-ua-full-version-list': '"Google Chrome";v="131.0.6778.264", "Chromium";v="131.0.6778.264", "Not_A Brand";v="24.0.0.0"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-model': '""',
        'sec-ch-ua-platform': '"Windows"',
        'sec-ch-ua-platform-version': '"10.0.0"',
        'sec-ch-ua-wow64': '?0',
        'sec-fetch-dest': 'document',
        'sec-fetch-mode': 'navigate',
        'sec-fetch-site': 'same-origin',
        'sec-fetch-user': '?1',
        'upgrade-insecure-requests': '1',
        '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',
    }

    response = requests.get('https://search.shopping.naver.com/catalog/'+str(category_number), cookies=cookies, headers=headers)

    if response.status_code == 418:
        print("418에러입니다. 대기 후에 다시 시작합니다. 5분대기합니다.")
        # time.sleep(600)
        time.sleep(random.randint(300, 600))
        return check_category(str(rows[i][1]));
    else:
        pass

    soup = BeautifulSoup(response.text, 'html.parser')
    div_tag = soup.find('div', class_='top_summary_title__ViyrM')
    try:
        h2_tag = div_tag.find('h2')  # div 내부의 h2 태그 찾기
        cate_name_extracted = h2_tag.text.strip()
    except:
        print(category_number)
        print(response)
        print("카테고리넘버 오류")
        cate_name_extracted = "-ERROR-"

    print(response)
    print(cate_name_extracted)


    conn = pymysql.connect(host="58.227.42.5", user="phpmyadminuser", password="yourpassword", database="naver_auto_price", charset='utf8')
    cursor = conn.cursor()
    sql = "UPDATE products SET cate_name = '"+str(cate_name_extracted)+"' WHERE catalog_num = '"+str(category_number)+"';"
    cursor.execute(sql)
    conn.commit()
    conn.close()

    # 텍스트 추출




conn = pymysql.connect(host="58.227.42.5", user="phpmyadminuser", password="yourpassword", database="naver_auto_price", charset='utf8')
cursor = conn.cursor()
sql = "SELECT * FROM products;"
cursor.execute(sql)
rows = cursor.fetchall()
cursor.close()
conn.close()


i = 0
for a in reversed(rows):
    # time.sleep(15)
    time.sleep(random.randint(10, 20))
    check_category(str(rows[i][1]))
    i = i+1


now2 = datetime.now()
print("ws 종료 시점: "+str(now2))
print("프로그램 가동 시간: "+str(now2-now1))
print("\n\n\n\n")
