"""广东公需课自测:用浏览器抓到的 cookie 走一遍 列表 → 发现 → 心跳。 用法:PYTHONPATH=src python script/test-gdgxk.py [课件id] """ import json import sys import uuid from study_tool.platforms import gdgxk cid = sys.argv[1] if len(sys.argv) > 1 else "" cookies = json.load(open("data/capture-jsglpt-cookies.json", encoding="utf-8")) s = gdgxk.new_session(cookies) courses = gdgxk.list_courses(s) print("课程数:", len(courses)) for c in courses: print(" ", c["plan_id"], c["name"]) if not cid and courses: cid = courses[0]["plan_id"] d = gdgxk.discover(s, cid, "") print("\n课程:", d["course"]) print("进度:", d["progress"]) print("视频:", d["info"]) cw = d["courseware"][0] print("课件:", cw["id"], "| 总长", cw["total"], "| 已看", cw["viewTime"]) sid = uuid.uuid4().hex sign = gdgxk._sign(s, {"aid": cw["aid"], "id": cw["id"], "sid": sid}, cw["uid"]) print("\n播放注册签名:", sign) print("服务端已看秒数:", gdgxk._view_time(s, cw, cw["uid"], sign)) r = gdgxk._xhr(s, "POST", gdgxk.X + "/" + cw["aid"] + "/study/video/user/" + cw["id"] + "/updateViewTime1", data={"_method": "PUT", "aid": cw["aid"], "isLimit": "false", "md5": sign["md5"], "expires": sign["time"], "md5Uid": cw["uid"], "lastViewTime": str(min(cw["viewTime"] + 60, cw["total"])), "playbackSessionId": sid}) print("\n心跳响应:", r.status_code, r.text[:300])