import os,json,hashlib from datetime import datetime,timezone import requests from bs4 import BeautifulSoup URL="https://cet.neea.edu.cn/" STATE="data/state.json" def category(t): if "ๆŠฅๅ" in t:return "๐Ÿ“ ๆŠฅๅ" if "ๆˆ็ปฉ" in t:return "๐Ÿ“Š ๆˆ็ปฉ" if "ๅ‡†่€ƒ่ฏ" in t:return "๐ŸŽซ ๅ‡†่€ƒ่ฏ" if "่€ƒ่ฏ•" in t:return "๐Ÿ“ ่€ƒ่ฏ•ๅฎ‰ๆŽ’" return "๐Ÿ“ข ๅ…ถไป–" def fetch(): r=requests.get(URL,headers={"User-Agent":"Mozilla/5.0"},timeout=20) r.encoding="utf-8" soup=BeautifulSoup(r.text,"lxml") out=[] for a in soup.find_all("a"): t=a.get_text(strip=True) if t and any(k in t for k in ["ๅ››ๅ…ญ็บง","CET","ๆˆ็ปฉ","ๆŠฅๅ","่€ƒ่ฏ•","ๅ‡†่€ƒ่ฏ"]): out.append({"title":t,"url":a.get("href"),"category":category(t)}) return out[:20] def load(): if not os.path.exists(STATE): return [] return json.load(open(STATE,encoding="utf-8")).get("items",[]) def save(items): os.makedirs("data",exist_ok=True) json.dump({"items":items,"last_check":datetime.now(timezone.utc).isoformat()},open(STATE,"w",encoding="utf-8"),ensure_ascii=False,indent=2) def h(x): return hashlib.sha256((x["title"]+str(x["url"])).encode()).hexdigest() def push(items): token=os.getenv("PUSH_TOKEN") if not token:return msg="๐Ÿ“ข CETๅ››ๅ…ญ็บงๆ–ฐ้€š็Ÿฅ\n\n" for x in items: msg+=f"{x['category']}\n{x['title']}\n{x['url']}\n\n" requests.post("https://push.showdoc.com.cn/server/api/push", data={"title":"ๅ››ๅ…ญ็บงๆ–ฐ้€š็Ÿฅ","content":msg,"token":token},timeout=10) def main(): current=fetch() old={x.get("hash") for x in load()} fresh=[] saved=[] for x in current: x["hash"]=h(x) saved.append(x) if x["hash"] not in old: fresh.append(x) if fresh: push(fresh) save(saved) if __name__=="__main__": main()