python自己做课程表_Python 大学生课表 iCalendar (.ics) 生成
Python 大學生課表 iCalendar (.ics) 生成
簡介
大一新生第一次接觸大學生課表,在有 Mac、iPhone 和 Apple Watch 設備的情況下希望能將自己的課表導入內置日歷應用,以更方便的隨時查看課表和規(guī)劃行程。由于沒有找到比較合適的 app 故自己寫了這一代碼。推薦使用 Python 3 運行。
[限定] 重慶郵電大學學生
如果你是重慶郵電大學學生,直接使用 timetable_cqupt_automatic.py,就可以自動獲取并生成來自教務在線的課表和考試安排。
如果將代碼配合 crontab 任務,即可在你的服務器上創(chuàng)建 ics 訂閱,隨時獲得最新的包含調停課(部分)的課表和考試安排。
直接修改代碼中的學號,并修改代碼最后的 ics 文件保存位置即可,課表和考試安排數據由重慶郵電大學紅巖網校所開發(fā)掌上重郵 app (cyxbsmobile) 提供。
功能
支持錄入課程名稱,教師,必修/選修,學分,上課地點,星期幾,周數和第幾節(jié)課及一個附加信息
支持單獨周數,范圍周數,奇偶周數,如 "第2周,5-11單數周,13-17 周"
支持 Apple Maps GPS 信息(需手動補充,后續(xù)說明),在日歷中添加教室位置,并可利用 iOS 的 Siri 分析功能在多個 App 中獲得附加功能
你可以獲得 Apple 軟件中的特別功能:例如向 Siri 問:我今天有什么事情?我下周五有什么安排?例如在 Apple Watch 表盤上獲得下節(jié)課的時間和地點…… 添加 GPS 信息后,你還可以獲得 Apple Maps 出發(fā)時間提醒,Siri 與搜索自動聯(lián)想等功能。
使用
請調整代碼中的以下內容以適配自己的課表:
maxWeek 為本學期最大周數,有 20 周即寫 20 周,為了方便后續(xù)代碼將自動 +1,也可以去掉代碼中的 maxWeek += 1,然后填寫已經 + 1 后的周數。
classTime 為每節(jié)課的上課時間,以元組形保存。為了方便后續(xù)第 n 節(jié)課直接為[n],預留了第 0 項為None,可以不做修改。直接填寫每節(jié)課的 24 小時制上課時間:例如 8:00 上課,則錄入(8, 0);下午 7:50 上課,則錄入(19, 50)。
修改 starterDay 為本學期第一周星期一的日期。
修改 classes 中的課程信息,由于不同學校課表可能含有不同信息,請參考源代碼中的課表填寫,并直接在后續(xù)定義中作出相應修改:
在 for Class in classes: 后,定義了不同的變量,均可進行自定義。最終,Title變量為日歷項的標題,Description變量為日歷項的備注,均可根據自己喜好修改。您只需要一點點 Python 基礎即可看懂源代碼并作出修改。
如何設置周數? 單獨周:請改為數組形式,例如 [2]; 范圍周:請使用rgWeek,例如 rgWeek(3, 7) 代表第三周到第七周; 奇數周:請使用oeWeek,例如 oeWeek(2, 9, 1) 代表第二周到第九周的單數周,將 1 改為 0 即為偶數周。
如何設置課程節(jié)數? 一節(jié)課:請改為數組形式,例如 [2]; 范圍課,請使用rgWeek,例如 rgWeek(3, 7) 代表第三節(jié)一直上到第七節(jié);
如果周數、節(jié)數是由多項組成,請使用加法。例如,第2周,5-11單數周,13-17 周,則為:
[2] + oeWeek(5, 11, 1) + rgWeek(13, 17)
在classEndTime.append行末尾將 "+ 45" 修改為加每節(jié)課的時長,一節(jié)課 40 分鐘則為 "+ 40"。
更改 jWrite 中的文件目錄為合適的位置以便輸出最終結果
庫中的 timetable_cqupt.py 是重慶郵電大學同學的一個版本,timetable_cqu.py 是重慶大學同學的一個版本,供你參考兩種不同的 classes 和 Class 的變量內容。
添加 Apple Maps GEO
這一功能僅在 Apple 設備上進行測試,在 iCalendar 標準中,似乎定義 GEO 項并輸入坐標即可確定位置,但在 iOS 和 macOS 上驗證不通過。
Apple 日歷使用了X-APPLE-STRUCTURED-LOCATION,X-APPLE-MAPKIT-HANDLE來記錄 Apple Maps 位置信息,這一項包含位置文字和坐標。一個樣例內容如下:
LOCATION:重慶郵電大學綜合實驗大樓\n南山路新力村
X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-APPLE-MAPKIT-HANDLE=;X-APPLE-RADIUS=500;X-TITLE=重慶郵電大學綜合實驗大樓\\n南山路新力村:geo:29.524289,106.605595
其中,LOCATION和X-TITLE中的地址必須一字不差的和 Apple Maps 結果對應,不得修改。geo 項則為坐標。
為了保證可用性,這一段文本只能手動創(chuàng)建日歷項并導出提取。
導出方法
打開 macOS 日歷 app,創(chuàng)建一個空白日歷項(請盡量在一個沒有太多日歷項的日歷中創(chuàng)建,因為稍后需要導出整個日歷),并輸入想要添加的位置保存。
點擊日歷 -> 文件 -> 導出 -> 導出,保存 ics 文件。
用文本編輯器打開 ics 文件,找到BEGIN:VEVENT中你剛剛建立的包含位置的 VEVENT 項目。
你將可找到類似以下兩個文段:
LOCATION:重慶大學虎溪校區(qū)\n大學城南路55號
X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-APPLE-MAPKITHANDLE=一大串文字;X-APPLE-RADIUS=925.4324489259043;X-TITLE=重慶大學虎溪校區(qū)\\n大學城南路5號:geo:29.592566,106.299150
直接將 <一大串文字> 全部去掉,注意不要刪除后面的分號,RADIUS 可以不修改,TITLE 中的文字請勿修改。
最后,將這一段文字替換代碼中的 customGEO(代碼中有重慶大學虎溪校區(qū)和重慶郵電大學部分樓棟信息作為參考,你也可以以這樣的方式處理不同的教學樓)。注意在 Python 文段中保留 \n 需要多加一個斜線,保留雙斜線 n 則需要四斜線。
聯(lián)系作者
直接提交 Issue
— 重慶郵電大學國際學院
總結
以上是生活随笔為你收集整理的python自己做课程表_Python 大学生课表 iCalendar (.ics) 生成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: libvirt简介
- 下一篇: php两个问号??表示什么意思