在咱們北林,期末考試後,我們往往不知道具體什麼時候出成績,以致我們隔三岔五地就要登一次系統,看看成績是否更新,甚是麻煩。
為了緩解同學們反覆查詢的苦惱和焦慮的心情,我用python編寫了一個小程序「成績小助手」,在此分享給大家。
註:效果圖僅供參考
北林成績小助手是一款在windows系統上運行的的小程序,不需要運行瀏覽器就可查詢並監測成績是否更新,並在第一時間將成績信息發送給使用者。小程序的原理是網絡爬蟲,在監測過程中程序向伺服器發送請求的時間間隔是20分鐘,不會給伺服器帶來負擔。
程序第一次運行的時候需要輸入帳號密碼,帳號密碼將會保存在與程序相同文件夾的一個隱藏文件裡。
其中密鑰的作用是及時將消息推送到個人微信,便於用戶第一時間獲取通知。如何獲取密鑰將在後文提到。
左下角有三個按鈕,其中「後臺監測」的作用是讓程序轉入後臺進行持續監測,每20分鐘向教務系統查詢一次成績是否有更新。「開機啟動目錄」的作用是打開開機啟動文件夾,把本程序複製到這個文件夾下就可以實現開機啟動。
在複製和首次啟動的過程中安全軟體可能會報錯,放行即可。
或許有更好地實現開機啟動的方式,奈何我道行尚淺,只好取其下策,如有大佬,還望指點。如果監測到有更新,程序就會彈出提示框,手機也會收到通知。
在初次運行的時候,除了需要登錄教務系統的帳號和密碼,還需要一個用來通知手機的密鑰,我們可以前往這個網站獲取:
http://sc.ftqq.com在網站主頁點擊界面右上角的
「登入」,會出現以下界面,第一次沒有帳號,點擊
創建,如圖所示。這裡創建的帳號實質上是一個
Github帳號,已有帳號的話可以直接登錄,Github網站相當於「世界程式設計師之家」。
按照流程使用郵箱註冊後,點擊登錄(Sign in)並選擇授權(Authorize)。
綁定後,點擊右上角的
「發送消息」即可獲取
密鑰(SCKEY),複製並保存它。
搭建好伺服器後,將本程序複製到伺服器上直接運行就可以了。
程序和源碼可以點擊
閱讀原文獲取,如果有更新我會把新版本放在評論區並頂置,大家也可以在我的Github倉庫上查看。https://github.com/xzy103/BjfuScore之前我做「北林選課小助手」的時候曾有同學在後臺給我留言,擔心我會偷偷藉此收集大家的帳號密碼等信息。
我認為這種擔憂是可以理解且值得提倡的,因為這體現了在網絡資訊時代的個人隱私保護意識。對於我分享的程序而言,大家不必有此顧慮,我是一個普普通通的在校大學生,我沒有竊取他人隱私的必要和動機,更重要的是,我就在北林上學,就讀於我校金融系,
既跑不了和尚也跑不了廟,斷不會作出此種高風險無收益且有違道德的事。因此在這次分享中,我選擇
公開源碼,供大家學習和參考,源碼中沒有涉及竊取用戶個人信息的內容,
用戶的帳號、密碼和成績信息將會保存在用戶自己的電腦上。exe文件是小程序本體,py文件是程序的源碼,jwxtinfo文件保存了用戶的帳號信息,score.txt保存了用戶的最新成績。後面三個文件都可以用記事本打開和編輯。
圖中第282行表示將用戶的輸入信息寫入本地文件。成績信息也是同理,寫入完成後文件將會被隱藏。
源碼中爬蟲登錄部分使用了我們學校某位信息院大佬的代碼,其項目地址為https://github.com/Koonchung/BJFU_login,向他表示感謝!在程序執行的過程中,如遇到斷網的情況,可能會彈出一個報錯窗口,內容為「Failed to execute script BjfuScoreGUI」,此時需要聯網並重新登陸。如果有大佬能解決此問題,還望不吝賜教!
歡迎關注「小林的雜貨鋪」