Arthals

Arthals

bilibili
github

北京大学医学部の時間割をWakeUpのカリキュラム表に変換してインポートする

前言#

Wakeup のカリキュラム表は医学部のカリキュラム表のオンラインインポートをサポートしていないため、このスクリプトを作成し、医学部のカリキュラム表を 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("マイスケジュール.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()

注意事項#

  • このスクリプトは、組み込みライブラリ以外にも、xlsx ファイルの読み書きのためにopenpyxlライブラリのインストールが必要です。実行中にこのライブラリが見つからないというエラーが発生した場合は、ターミナルまたは Windows ターミナルでpip3 install openpyxlを使用してインストールしてください。
  • CSV ファイルを Wakeup のカリキュラム表にインポートする方法については、Wakeup のカリキュラム表の公式チュートリアルを参照してください。
  • 筆者はポータル上のカリキュラム表とクラスのカリキュラム表には実際にはいくつかの違いがあることに気付きましたが、これは教務の問題だと考えていますので、皆さんも実際の状況に応じて確認して修正してください。
  • 何か問題があれば、筆者に連絡するか、この記事のコメント欄にコメントしてください。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。