@@ -21,6 +21,8 @@ def dst(self,dt):
21
21
RECESS_WEEK = 7
22
22
TOTAL_WEEKS = 14
23
23
WEEK2ACTUAL = [1 ,2 ,3 ,4 ,5 ,6 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ]
24
+ WEEKDAY = ['MO' ,'TU' ,'WE' ,'TH' ,'FR' ,'SA' ,'SU' ]
25
+
24
26
week = timedelta (days = 7 )
25
27
day = timedelta (days = 1 )
26
28
hour = timedelta (hours = 1 )
@@ -62,16 +64,16 @@ def process_item(self, item, spider):
62
64
ts_hr ,ts_min = ts / 100 , ts % 100
63
65
te_hr ,te_min = te / 100 , te % 100
64
66
65
- combstr = ',' .join ([str (WEEK2ACTUAL [i - 1 ]+ startweek ) for i in lec ['occurence' ]])
67
+ combstr = ',' .join ([str (WEEK2ACTUAL [i - 1 ]+ startweek - 1 ) for i in lec ['occurence' ]])
66
68
67
69
lectureday = SEM_START + (dow - 1 )* day
68
70
lecture = Event ()
69
71
lecture .add ('summary' , '%s %s' % (item ['code' ],l ['name' ]))
70
72
setstartend (lecture ,
71
73
lectureday + ts_hr * hour + ts_min * minute ,
72
74
lectureday + te_hr * hour + te_min * minute )
73
- lecture ['RRULE ' ] = 'FREQ=YEARLY;BYWEEKNO=%s;' % combstr
74
-
75
+ lecture ['rrule ' ] = 'FREQ=YEARLY;BYWEEKNO=%s;BYDAY=%s' % ( combstr , WEEKDAY [ lec [ 'day' ] - 1 ])
76
+ lecture [ 'location' ] = lec [ 'location' ]
75
77
cal .add_component (lecture )
76
78
77
79
if item ['tutorial_time_table' ] != 'null' :
@@ -83,21 +85,28 @@ def process_item(self, item, spider):
83
85
ts_hr ,ts_min = ts / 100 , ts % 100
84
86
te_hr ,te_min = te / 100 , te % 100
85
87
86
- combstr = ',' .join ([str (WEEK2ACTUAL [i - 1 ]+ startweek ) for i in tut ['occurence' ]])
88
+ combstr = ',' .join ([str (WEEK2ACTUAL [i - 1 ]+ startweek - 1 ) for i in tut ['occurence' ] if i != 1 ]) #precautionary check
87
89
88
- tutday = SEM_START + (dow - 1 )* day
90
+ tutday = SEM_START + (dow - 1 )* day + (WEEK2ACTUAL [
91
+ (tut ['occurence' ][0 ] if tut ['occurence' ][0 ] != 1 else tut ['occurence' ][1 ]) - 1 #another stupid check, tutorials really shouldn't start on 1st week.
92
+ ]- 1 )* week
89
93
tutorial = Event ()
90
94
tutorial .add ('summary' , '%s %s' % (item ['code' ],t ['name' ]))
91
95
setstartend (tutorial ,
92
96
tutday + ts_hr * hour + ts_min * minute ,
93
97
tutday + te_hr * hour + te_min * minute )
94
- tutorial ['RRULE' ] = 'FREQ=YEARLY;BYWEEKNO=%s;' % combstr
98
+ tutorial ['rrule' ] = 'FREQ=YEARLY;BYWEEKNO=%s;BYDAY=%s' % (combstr ,WEEKDAY [tut ['day' ]- 1 ])
99
+ tutorial ['location' ] = tut ['location' ]
95
100
cal .add_component (tutorial )
96
101
97
- f = open (os .path .join ('ics' ,'%s.ics' % item ['code' ]),'wb' )
102
+ f = open (os .path .join ('ics' ,( '%s.ics' % item ['code' ]. split ()[ 0 ]) ),'wb' )
98
103
f .write (cal .as_string ())
99
104
f .close ()
100
105
return item
101
106
def setstartend (event ,start ,end ):
102
107
event ['dtstart' ] = vDatetime (start ).ical ()
103
108
event ['dtend' ] = vDatetime (end ).ical ()
109
+ event ['dtstamp' ] = vDatetime (datetime .now ()).ical ()
110
+ #event['uid'] = '%s/shawn@wtf.sg'%vDatetime(datetime.now()).ical()
111
+ event ['sequence' ] = 0
112
+
0 commit comments