MikuMonitoring: 一個簡陋的比賽信息獲取器
讓 LLM 幫忙寫的大部分代碼。
也算是把 UOJ 系統的前端結構摸清了。
License
沒有任何協議限制。你可以隨意對此軟件進行修改和分發,以及用于任何用途。
Features
--Version 1.0--
目前僅適用于 oj.daimayuan.top 。理論上可以快速適配到所有沒有自定義密碼加密規則的 UOJ 系 Online Judge。
- 通過賬戶和明文密碼進行登錄。
- 獲取指定 ID 且登錄賬號擁有查看排名權限的多個比賽的排名信息。
- arena 功能:對比兩名指定用戶名的平均分等信息,計算 battle 勝率!
- (todo) export 功能:獲取的比賽成績導出為 Excel/CSV 。
- (todo) statistics 功能:查看自己的比賽情況統計,助你找到自己的心理弱點并制定更優秀的比賽策略。
- (todo) customRanking 功能:自定義用戶列表和排序方法,關注你該關注的對手。
Relies
為了你的數據安全,請僅在本地使用 python3 運行代碼。
運行前請檢查你的環境變量和依賴庫,如果缺少對應的庫請使用 pip install 進行安裝。
requests, pandas, re, json, hashlib, hmac, typing, bs4
Login
請按照提示輸入用戶名和密碼。
密碼使用 hmac-md5 加鹽處理,salt 固定,理論上只在本地進行明文處理。
您需要在 login 頁面的源代碼獲取本機的 salt 并在代碼中進行更改。
作者承諾絕不以任何方式收集您的用戶名與密碼。您可以檢查源代碼來確保個人數據的安全性。
密碼會在命令行中以明文方式顯示,請確保沒有其他人能夠獲取您的屏幕。
密碼僅在運行時在內存中短暫存儲,軟件不會以任何方式在本地存儲您的密碼。
DaimayuanRankingScraper
用于爬取比賽數據。
scrape_contest(self, contest_id: int) -> List[Dict] : 爬取指定比賽ID的排行榜。
print_sample_data(self, rankings: List[Dict], count: int) : 對于一個排行榜數據輸出指定數量的樣本數據以便調試。
get_raw_data(self) -> List[Dict] : 保存原始數據列表。你可以通過修改代碼訪問這個列表來對數據做你想要的操作。
Arena
arena(rawData: List[Dict], userid1: str, userid2: str) -> Dict[str, Any] : 將兩個用戶進行對比。具體用法詳見代碼調用。

浙公網安備 33010602011771號