Arthals

Arthals

bilibili
github

北京大學醫學部課表轉 Wakeup 課程表導入

前言#

由於 Wakeup 課程表並未支援醫學部課表的線上匯入,故摸此魚,寫了一個 python 腳本來完成轉換,從而完成醫學部課表匯入到 Wakeup 課程表的功能:

使用方法#

  1. 登入 醫學部門戶,然後選擇服務大廳 - 我的課表,點選 列表模式,然後依次點選 匯出匯出檔案列表,下載 我的課表.xlsx

image

image

image

  1. 下載 Converter.py ,或直接使用以下程式碼,將其移動至和課表檔案同一目錄下,然後執行即可。
# -*- encoding:utf-8 -*-
#@Time		:	2022/08/30 02:01:39
#@File		:	converter.py
#@Author	:	Arthals
#@Contact	:	[email protected]
#@Software	:	Visual Studio Code

from openpyxl import Workbook, load_workbook
import os
import re

# wb = Workbook()
# ws = wb.create_sheet('mysheet', 0)
# wb.save('test.xlsx')
# wb.close()

wb = load_workbook('我的課表.xlsx')
ws = wb['sheet1']

maxRow = ws.max_row
maxCol = ws.max_column


def extractInterger(strin):
    return int(re.findall(r'\d+', strin)[0])


def extractWeek(strin):
    strin = re.sub(r"[周()]", "", strin)
    weeks = re.sub(r",", r"、", strin)
    return weeks


def extractDay(strin):
    dayDic = {
        "星期一": 1,
        "星期二": 2,
        "星期三": 3,
        "星期四": 4,
        "星期五": 5,
        "星期六": 6,
        "星期日": 7
    }
    return dayDic[strin]


courseList = []
for row in range(2, maxRow + 1):
    courseName = ws.cell(row=row, column=2).value
    courseStart = extractInterger(ws.cell(row=row, column=8).value)
    courseEnd = extractInterger(ws.cell(row=row, column=9).value)
    courseWeek = extractWeek(ws.cell(row=row, column=6).value)
    courseDay = extractDay(ws.cell(row=row, column=7).value)
    courseLocation = ws.cell(row=row, column=11).value
    courseTeacher = ws.cell(row=row, column=10).value
    courseList.append([
        courseName, courseDay, courseStart, courseEnd, courseTeacher,
        courseLocation, courseWeek
    ])

# print(courseList)

wb.close()

output = open("mySchedule.csv", "w+")
output.write("課程名稱,星期,開始節數,結束節數,老師,地點,週數\n")
for course in courseList:
    for info in range(len(course)):
        course[info] = f'"{course[info]}"'
    print(course)
    output.write(",".join('%s' % id for id in (course)) + "\n")
output.close()

注意事項#

  • 本腳本除了內建庫外,需要安裝 openpyxl 庫來讀寫 xlsx 檔案,如果你在執行過程中報錯沒有此庫,可以在終端機 / Windows Terminal 中使用 pip3 install openpyxl 來安裝。
  • 關於如何將 csv 檔案匯入到 Wakeup 課程表中,可以參見 Wakeup 課程表的 官方教程
  • 筆者發現門戶上的課表與班群裡的課表實際上有一些出入,並不完全相同,但我認為這是教務的問題,所以也提醒下各位記得檢查一下,根據實際情況修改。
  • 如果有任何問題,歡迎與筆者聯繫,或在本文下留言。
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。