Я в школе, и мы используем ужасное школьное расписание (SWSCUST).Там нет никакого экспорта, поэтому я пытаюсь использовать некоторые коды, которые я нашел, только для того, чтобы он работал с моим собственным школьным расписанием.
Я пытался получить код, который нашел (спасибо https://github.com/xcellerator/swscust2ics)чтобы адаптировать его к моему собственному школьному расписанию. Я успешно изменил код, чтобы он соскребал мое собственное школьное расписание (это нидерландское), но мне не хватает дат в моем школьном расписании. Что у меня есть, так это номер недели + день(понедельник, вторник и т. д.) Итак, я хотел разобрать номера недель и заполнить пробелы питоном.
#!/usr/bin/python
from ics import Calendar, Event
from pathlib import Path
from collections import namedtuple
import pandas as pd
import sys
import arrow
import time
(...)
# Open the HTML file as a string
def importCalendarHTML(filename):
with open(filename, 'r') as inputfile:
data = inputfile.read()
return data
# Add a new event to the TimeTable
def AddTimeTableEvent(tt, day, start, end, desc, type, room, staff, dates):
tt.append(TimeTableEntry(day, start, end, desc, type, room, staff, dates))
# Split the raw HTML into tables via each day
def ParseDays():
raw_html = importCalendarHTML(sys.argv[1])
Days = []
for i in ["maandag", "dinsdag", "woensdag", "donderdag", "vrijdag"]:
try:
Days.append(pd.read_html(raw_html, header=0, match=i))
except:
continue
#print(pd.read_html(raw_html, header=0, match=i))
#print(Days)
return Days
def WeekDays(day):
today = datetime.now().date()
start = today - timedelta(days=today.weekday())
end = start + timedelta(days=day)
return end
# Pull out each entry from a table to and compile an entry
def BuildTimeTable(Days):
TimeTable = []
for i in range(len(Days)):
for j in range(len(Days[i])):
for k in range(len(Days[i][j])):
day = Days[i][j].get("Dag")[k]
start = Days[i][j].get("Begintijd")[k]
end = Days[i][j].get("Eindtijd")[k]
desc = Days[i][j].get("Opmerking")[k]
type = Days[i][j].get("Activiteit")[k]
room = Days[i][j].get("Locatie")[k]
staff = Days[i][j].get("Docent")[k]
dates = Days[i][j].get("Weken")[k]
dates = dates.split(";")
print(dates)
#dag = Days[i][j].WeekDays(day)[k]
AddTimeTableEvent(TimeTable, day, start, end, desc, type, room, staff, dates)
return TimeTable
(...)
Как вы можете видеть, идеальной ситуацией будет новый def, который получает номер недели, а затемприходит с датами, которые соответствуют этому дню. Я попробовал что-то вроде этого:
def WeekDays(day):
today = datetime.now().date()
start = today - timedelta(days=today.weekday())
end = start + timedelta(days=day)
return end
(понедельник, вторник и т. д.). Мои знания Python все еще являются базовыми, и поэтому мне нужна ваша помощь:) Расписание школы:
<p><span >21</span></p>
<table cellspacing='0' cellpadding='2%' border='1'>
<col /><col /><col /><col /><col /><col /><col /><col /><col /><col />
<tr >
<td>Weken</td>
<td>Dag</td>
<td>Begintijd</td>
<td>Eindtijd</td>
<td>Activiteit</td>
<td>Klas</td>
<td>Docent </td>
<td>Locatie</td>
<td>Externe Locatie</td>
<td>Opmerking</td>
</tr>
<tr>
<td>21</td>
<td>dinsdag</td>
<td>9:00</td>
<td>10:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
<tr>
<td>21</td>
<td>dinsdag</td>
<td>10:00</td>
<td>12:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
<tr>
<td>21</td>
<td>dinsdag</td>
<td>13:00</td>
<td>17:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
<tr>
<td>21</td>
<td>woensdag</td>
<td>8:00</td>
<td>12:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
<tr>
<td>21</td>
<td>woensdag</td>
<td>13:00</td>
<td>17:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
<tr>
<td>21</td>
<td>donderdag</td>
<td>8:00</td>
<td>12:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
<tr>
<td>21</td>
<td>donderdag</td>
<td>13:00</td>
<td>17:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
</table>
<p><span >22</span></p>
<table cellspacing='0' cellpadding='2%' border='1'>
<col /><col /><col /><col /><col /><col /><col /><col /><col /><col />
<tr >
<td>Weken</td>
<td>Dag</td>
<td>Begintijd</td>
<td>Eindtijd</td>
<td>Activiteit</td>
<td>Klas</td>
<td>Docent </td>
<td>Locatie</td>
<td>Externe Locatie</td>
<td>Opmerking</td>
</tr>
<tr>
<td>22</td>
<td>maandag</td>
<td>8:00</td>
<td>12:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
<tr>
<td>22</td>
<td>maandag</td>
<td>13:00</td>
<td>17:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
<tr>
<td>22</td>
<td>dinsdag</td>
<td>8:00</td>
<td>12:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
<tr>
<td>22</td>
<td>dinsdag</td>
<td>13:00</td>
<td>17:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
<tr>
<td>22</td>
<td>woensdag</td>
<td>8:00</td>
<td>12:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
<tr>
<td>22</td>
<td>woensdag</td>
<td>13:00</td>
<td>17:00</td>
<td>**Description</td>
<td>**CLASS</td>
<td>**Teacher name</td>
<td>**ROOM</td>
<td> </td>
<td>**Description</td>
</tr>
</table>