Skip to content

jschang19/ntu-course-review-extension

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

台大課程評價小幫手

這是一個幫台大生更方面搜集課程評價的 Chrome 擴充程式,不用另開好幾個分頁 Google,只要進入課程的個別頁面、點小工具 icon,即可快速查看 PTT、Dcard 與 NTU Rating 的課程評價!

目錄


使用框架

  • Bootstrap 5.0.2
  • jQuery 3.6.3

Set Up

如果你想在本機端開發並測試自己的版本,可依照以下步驟,安裝到你的瀏覽器做測試:

  1. 開啟瀏覽器擴充功能頁面 -> 管理擴充功能 step_1
  2. 打開「 開發人員選項 」 step_2
  3. 點選「 載入解壓縮 」開啟你 clone 下來的資料夾,即可完成安裝 step_3

重點功能

  • 快速查看 PTT、Dcard 與 NTU Rating 的課程評價

To do

  • 新增台大課程交流 Facebook 社團資料

專案架構

  • dist/:JS & CSS 檔案
    • popup.js:小工具的前端 JS
    • popup.css:小工具的前端 CSS
  • popup.html:小工具的前端頁面
  • manifest.json:小工具的 Extension 設定檔

如果你只想調整前端頁面,可沿用原本我寫的 API,然而如果你想自訂評價的來源跟資料,你可以自行建立後端 API,並調整 dist/popup.js 的 API 網址和對於 response 的處理。


後端 API Reference

以下是小工具後端 API 的使用說明與注意事項,供沒有要另建後端 API 的人參考:

取得課程資料與評價

  • URL
    • https://ntucourse-api.jcshawn.com/api/course/:課程流水號
  • Method
    • GET
  • Response
    • type

      • application/json
    • Content

      • success:是否成功取得資料
      • id:課程流水號
      • class_name:課程名稱
      • teacher:教師名稱
      • reviews:評價來源:
        • ptt:PTT 評價 article
          • title:評價標題
          • link:評價網址
          • snippet:評價內容簡述
        • dcard:Dcard 評價
        • ntu_rating:NTU Rating 評價
    • Example

      https://ntucourse-api.jcshawn.com/api/course/68350
      
      {
          "success": true,
          "id": "68350",
          "class_name": "會計學甲一下",
          "teacher": "陳坤志",
          "reviews": {
              "ptt": [
                  {
                      "title": "[評價] 105全陳坤志中級會計學- 看板NTUcourse - 批踢踢實業坊",
                      "link": "https://www.ptt.cc/bbs/NTUcourse/M.1501747221.A.1F1.html",
                      "snippet": "本文是否可提供臺大同學轉作其他非營利用途?(須保留原作者ID) (是/否/其他條件):是哪一學年度修課:105全學年ψ 授課教師(若為多人合授請寫 ..."
                  },
                  {
                      "title": "[評價] 105全陳坤志中級會計學上下- 看板NTUcourse - 批踢踢實業坊",
                      "link": "https://www.ptt.cc/bbs/NTUcourse/M.1498716827.A.DDA.html",
                      "snippet": "本文是否可提供臺大同學轉作其他非營利用途?(須保留原作者ID) (是/否/其他條件): 是哪一學年度修課:105-1 105-2 ψ 授課教師(若為多人合授請 ..."
                  }
              ],
              "dcard": [], // 如果沒有評價,則會是空陣列
              "ntu_rating": [
                  {
                      "title": "台大課程評價:會計學甲一上Financial Accounting (A)(I)(1) –– 想鑑你 ...",
                      "link": "https://rating.myntu.me/course-overview?_id=62e6c86644b8e1922ab54f42&instructor=陳坤志&courseName=會計學甲一上#Financial+Accounting+(A)(I)(1)",
                      "snippet": "會計學甲一上. Financial Accounting (A)(I)(1). Course Information. Instructor. 陳坤志. Latest Semester. 111-1. Department. 7011 7012 ..."
                  }
              ]
          }
      }

API 注意事項

Rate-limit

  • 由於後端是使用我個人 VM,規格不大,為避免影響我其他 VM 上的專案,此 API 設有 Rate-limit,對於非正常使用的請求速率會回傳 429 Error。

    如果你要建立自己的 Database ,需要課程流水號、教師、與課程名稱資料,可以 email 跟我拿我爬的資料( 我可以給你 )請不要透過程式頻繁呼叫後端 API 來大量取得課程資料

評價結果可能不準確

  • 由於評價結果是程式自動化搜集,所以可能會有資料不準確的情況,也因為 Google API 費用較貴的關係,無法收錄完整的網路評價,我只搜集前 10 筆資料。

    如果你發現有錯誤的資料,或是想補充,可以 email 跟我說,我會盡快修正。


Thanks

這個小工具是我應用 2022 年所學的後端而做的 side project,透過 Chrome Extension 快速建立前端頁面,並透過 Node.js 建立傳送課程資料的後端 API,達到即時更新資料的效果。

特別感謝實習公司的 Guang 學長跟 William,在去年給我很多 full-stack 開發的觀念、建議跟機會,讓我在這次的 side project 中多了一個使用後端的技能。

References

本專案並未使用 content script 與 background.js 這兩個 Extension 的核心程式,個人推薦閱讀上面的文章與官方文件,可以更完整的知道開發 Chrome Extension 的流程。

License

MIT License, feel free to use it for your own project.

About

台大課程評價小幫手原始碼,免開分頁即可查詢 NTU 課程網路評價

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages