Blog

BetterCSU-Portal:讓正修訊息網變得更好用

專案 Chrome 擴充功能

擴充功能已上架!點這邊前往下載

GitHub repo 連結

學校訊息網的個人課表有時候是「一天一天往下列」的清單,

如果想知道禮拜三早上有沒有課,得自己在腦袋裡拼成一張表。

看了三年後我終於受不了了,就寫了這個擴充功能。

這是什麼

BetterCSU-Portal 是一個 Chrome / Edge 擴充功能,

只作用在你已經登入的 正修訊息網,

它不是另一個課表網站,沒有後端、沒有帳號系統、也沒有工具列的彈出視窗。

簡單講就是:你照常登入學校網站,只是頁面長得比較好看了!


三個功能

1. 週課表

最主要的功能,把逐日清單轉成星期 × 節次的週視圖。

週課表視圖

  • 「本學期」跟「下學期」兩個分頁都吃得到
  • 可以切上一週/下一週,或用上面的日期區間下拉選單直接跳
  • 「本週」會依台灣日期定位(不在學期範圍內時按鈕會停用)
  • 每門課有自己的顏色,卡片上直接寫起迄時間跟教室
  • 「放大視窗」可以讓課表脫離側欄,按 Esc 就收回去
  • 點課程可以看課號、課名、時間、教室
  • 想看學校原本的樣子,按「顯示原始表格」就好

對了,學校在課表頁給的課名有時候是縮寫,

所以它會用你已登入的狀態,去同一個網站的修課成績頁把完整課名撈回來對照,

只取學期、課號、課名三個欄位,不會儲存也不會外傳。

2. 課表篩選

週六沒課還要一直看到那一欄實在有點煩,所以加了篩選。

入口在課表右上角的「篩選」,只要有條件生效,按鈕就會變成「篩選(已套用)」,

不會發生自己藏了什麼卻忘記的狀況。

課表篩選對話框

裡面就三組東西:

  • 顯示星期:星期一到星期日各一個勾,取消勾選就把那一欄收起來
  • 隱藏無課日:這週整天沒課的星期自動收掉
  • 隱藏空白節次:已顯示的星期裡都沒課的那幾節自動收掉

上面第一張週課表的圖就是這樣調出來的 —— 週六日取消勾選、兩個自動隱藏都打開,

所以畫面上只剩週一到週五,而且第 1、5 節直接消失。

不小心全部藏起來的話,按「全部顯示」就會回來ㄌ,調好按「完成」關掉就行。

設定只套用在目前這個頁面,換週跟放大視窗時會保留,但重新整理會重設。

3. 功能釘選與歷年學分篩選

訊息網左邊的選單超長,常用的那幾個永遠要找。

所以在「熱門服務」上面加了一塊釘選區,

按學期別旁邊的「設定釘選功能」,把常用的勾一勾按儲存就好。

對話框裡是照訊息網原本的分類排的(熱門服務、教務資訊、學務資訊……),

勾錯了有「重置」跟「取消」可以反悔,右下角的「關於與回饋」就是丟 issue 給我的地方。

設定釘選功能對話框

另外歷年學分頁也加了篩選列,

可以依學期、課別、課名或課碼組合著篩,按右邊的「清除篩選」就整組還原。

篩完下面會即時寫出「顯示 5 / 82 筆課程紀錄;表列學分加總 15」這種統計,不用自己拿計算機加。

歷年學分篩選

這邊要特別講一下:上面學校算的實得學分跟平均成績我完全沒有動,

篩選只影響下面的表列,不會改到學校的數值!


怎麼安裝

👉 到 Chrome 線上應用程式商店安裝

按「加到 Chrome」裝完之後,用同一個瀏覽器登入訊息網、開個人課表,

如果頁面本來就開著,記得重新整理一次才會生效。

Edge 也是開上面那個連結,第一次會跳出「允許來自其他市集的擴充功能」,按下去就能裝。

之後有更新商店會自己推,不用再管他了。

想跑最新的原始碼

商店版會比 repo 慢一點(要等審核),想搶先測試最新版可以用開發人員模式:

  1. 到 GitHub repo clone 下來,或下載 Release 的 ZIP 解壓縮
  2. 開 chrome://extensions(Edge 是 edge://extensions)
  3. 打開右上角的「開發人員模式」
  4. 按「載入未封裝項目」,選那個含有 manifest.json 的資料夾或是 Release 的 ZIP 解壓縮
  5. 用同一個瀏覽器登入訊息網,開個人課表;如果頁面已經開著,記得重新整理一次

要更新的話,在擴充功能頁按「重新載入」再重整訊息網就好。


關於隱私

因為這東西會碰到課表跟成績頁,所以講清楚一點:

  • 它只要 storage 權限,而且只用來存你勾選的釘選項目 ID,存在這台電腦,不同步到雲端
  • 沒有帳號、沒有課表、沒有成績被存下來,解除安裝就清掉ㄌ
  • 補課名時只讀同一個網站的成績頁一次,只取三個欄位,不保存也不外傳
  • 不讀 Cookie 值,沒有任何對外部網域的請求,沒有分析追蹤

課表跟學分篩選全部都在你當下那個分頁的記憶體裡處理。

完整的隱私權政策放在 repo 的 PRIVACY.md。


最後

程式碼是開源的(非商業授權),

有興趣或想看看 Manifest V3 擴充功能怎麼寫的可以去 repo 逛逛,

有 bug 或想要什麼功能歡迎開 issue 戳我~