mirror of
https://github.com/tgbot-collection/YYeTsBot.git
synced 2025-11-25 03:15:05 +08:00
108 lines
3.3 KiB
Python
108 lines
3.3 KiB
Python
#!/usr/local/bin/python3
|
|
# coding: utf-8
|
|
|
|
# BagAndDrag - bag.py
|
|
# 1/10/21 15:29
|
|
#
|
|
|
|
__author__ = "Benny <benny.think@gmail.com>"
|
|
|
|
import contextlib
|
|
import json
|
|
import logging
|
|
import os
|
|
import pickle
|
|
import sys
|
|
import time
|
|
import traceback
|
|
|
|
import pymysql
|
|
import requests
|
|
|
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(filename)s [%(levelname)s]: %(message)s')
|
|
|
|
COOKIES = os.path.join(os.path.dirname(__file__), 'cookies.dump')
|
|
USERNAME = os.environ.get("USERNAME") or "321"
|
|
PASSWORD = os.environ.get("PASSWORD") or "xa31sge"
|
|
|
|
GET_USER = "http://www.rrys2020.com/user/login/getCurUserTopInfo"
|
|
AJAX_LOGIN = "http://www.rrys2020.com/User/Login/ajaxLogin"
|
|
RESOURCE = "http://www.rrys2020.com/resource/{id}"
|
|
SHARE_URL = "http://www.rrys2020.com/resource/ushare"
|
|
# http://got002.com/api/v1/static/resource/detail?code=9YxN91
|
|
API_DATA = "http://got002.com/api/v1/static/resource/detail?code={code}"
|
|
ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
|
|
|
|
|
|
def save_cookies(requests_cookiejar):
|
|
with open(COOKIES, 'wb') as f:
|
|
pickle.dump(requests_cookiejar, f)
|
|
|
|
|
|
def load_cookies():
|
|
with contextlib.suppress(Exception):
|
|
with open(COOKIES, 'rb') as f:
|
|
return pickle.load(f)
|
|
|
|
|
|
def login():
|
|
data = {"account": USERNAME, "password": PASSWORD, "remember": 1}
|
|
logging.info("login in as %s", data)
|
|
r = requests.post(AJAX_LOGIN, data=data, headers={"User-Agent": ua})
|
|
resp = r.json()
|
|
if resp.get('status') == 1:
|
|
logging.info("Login success! %s", r.cookies)
|
|
save_cookies(r.cookies)
|
|
else:
|
|
logging.error("Login failed! %s", resp)
|
|
sys.exit(1)
|
|
r.close()
|
|
|
|
|
|
def is_cookie_valid() -> bool:
|
|
cookie = load_cookies()
|
|
r = requests.get(GET_USER, cookies=cookie, headers={"User-Agent": ua})
|
|
return r.json()['status'] == 1
|
|
|
|
|
|
def insert_db(data: dict):
|
|
try:
|
|
# INSERT INTO resource VALUE(id,url,name,expire,data)
|
|
sql = "INSERT INTO resource VALUE(%s,%s,%s,%s,%s,%s)"
|
|
con = pymysql.Connect(host="127.0.0.1", user="root", password="root", database="yyets", charset="utf8mb4")
|
|
cur = con.cursor()
|
|
info = data["data"]["info"]
|
|
id = info["id"]
|
|
url = RESOURCE.format(id=id)
|
|
name = '{cnname}\n{enname}\n{alias}'.format(cnname=info["cnname"], enname=info["enname"],
|
|
alias=info["aliasname"])
|
|
expire = info["expire"]
|
|
date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(expire)))
|
|
d = json.dumps(data, ensure_ascii=False, indent=2)
|
|
|
|
cur.execute(sql, (id, url, name, expire, date, d))
|
|
con.commit()
|
|
except Exception as e:
|
|
logging.error("insert error %s", e)
|
|
logging.error(traceback.format_exc())
|
|
|
|
|
|
def insert_error(rid, tb):
|
|
logging.warning("Logging error into database %s", rid)
|
|
sql = "INSERT INTO failure VALUE (%s,%s)"
|
|
con = pymysql.Connect(host="127.0.0.1", user="root", password="root", database="yyets", charset="utf8mb4")
|
|
cur = con.cursor()
|
|
cur.execute(sql, (rid, tb))
|
|
con.commit()
|
|
|
|
|
|
def __load_sample():
|
|
with open("sample.json") as f:
|
|
return json.load(f)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
d = __load_sample()
|
|
insert_db(d)
|
|
insert_error(2331, "eeeeee")
|