sync.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import requests
  2. import json
  3. import pymysql
  4. import datetime
  5. # def getHeader():
  6. # return {
  7. # "User-Agent":"Mozilla/5.0 (Linux; Android 10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36 MMWEBID/1122 MicroMessenger/7.0.20.1781(0x27001439) Process/toolsmp WeChat/arm64 NetType/4G Language/zh_CN ABI/arm64"
  8. # }
  9. db = pymysql.connect(host="localhost", user="root", password="password", db="zk")
  10. # json时间问题和bytes问题解决
  11. class JsonEncoder(json.JSONEncoder):
  12. def default(self, obj):
  13. if isinstance(obj,datetime.datetime):
  14. return obj.strftime("%Y-%m-%d %H:%M:%S")
  15. elif isinstance(obj,bytes):
  16. return str(obj, 'utf-8')
  17. else:
  18. return json.JSONEncoder.default(self,obj)
  19. def start():
  20. session = requests.session()
  21. f_login(session)
  22. def f_login(session):
  23. session.post("https://sdjrzk.xuanyun.tech/api/auth/user/login/", {"username":"ZK_USER","password":"ZK_PASSWORD"})
  24. f_getCourse(session)
  25. def f_getCourse(session):
  26. r = session.get("https://sdjrzk.xuanyun.tech/api/course/course/?page_size=100")
  27. data = json.loads(r.text)
  28. res = data["results"]
  29. cursor = db.cursor()
  30. sql="call insert_course(%s)"
  31. cursor.execute(sql, r.text)
  32. db.commit()
  33. #ids = []e
  34. for i in res:
  35. #ids.append(i["id"])
  36. f_getQuestionList(session, str(i["id"]))
  37. def f_getQuestionList(session, id):
  38. r = session.get("https://sdjrzk.xuanyun.tech/api/exam/paper/?owner_type=50&relation_limit=course.course&page_size=300&owner_id="+id)
  39. data = json.loads(r.text)
  40. res = data["results"]
  41. cursor = db.cursor()
  42. sql="call insert_question_list(%s, %s)"
  43. cursor.execute(sql, (id, r.text))
  44. db.commit()
  45. for i in res:
  46. f_getQuestionContent(session, str(i["id"]))
  47. def f_getQuestionContent(session, id):
  48. r = session.get("https://sdjrzk.xuanyun.tech/api/exam/paper/"+id+"/")
  49. print(id)
  50. data = json.loads(r.text)
  51. content = data["content"]
  52. content_object = json.dumps(data["content_object"], cls=JsonEncoder, ensure_ascii=False)
  53. cursor = db.cursor()
  54. sql="call insert_question_content(%s, %s, %s)"
  55. cursor.execute(sql, (id, content, content_object))
  56. db.commit()
  57. # print(r.text)
  58. if __name__ == '__main__':
  59. start()