@@ -216,27 +216,31 @@ def return_timetable(session):
216
216
return {"error" : "no data" }
217
217
218
218
def gradeMap (grade ):
219
- grade_score_map = {
220
- 'O' :10 ,
221
- 'A+' :9 ,
222
- 'A' :8 ,
223
- 'B+' :7 ,
224
- 'B' :6 ,
225
- 'C+' :5 ,
226
- 'C' :4 ,
227
- 'W' :0 ,
228
- 'RA' :0 ,
229
- 'SA' :0
230
- }
231
- return grade_score_map [grade ]
219
+ grade_score_map = {
220
+ 'O' :10 ,
221
+ 'A+' :9 ,
222
+ 'A' :8 ,
223
+ 'B+' :7 ,
224
+ 'B' :6 ,
225
+ 'C+' :5 ,
226
+ 'C' :4 ,
227
+ 'W' :0 ,
228
+ 'RA' :0 ,
229
+ 'SA' :0
230
+ }
231
+
232
+ if grade not in grade_score_map .keys ():
233
+ return 0
234
+
235
+ return grade_score_map [grade ]
232
236
233
237
def return_cgpa (session ):
234
238
resultspage = 'https://ecampus.psgtech.ac.in/studzone2/FrmEpsStudResult.aspx'
235
239
236
240
page = session .get (resultspage )
237
241
soup = BeautifulSoup (page .text ,"html.parser" )
238
242
239
- lastest_sem_data = []
243
+ latest_sem_data = []
240
244
table = soup .find ('table' , attrs = {'id' :"DgResult" })
241
245
242
246
if table != None :
@@ -246,11 +250,9 @@ def return_cgpa(session):
246
250
247
251
cols = row .find_all ('td' )
248
252
cols = [ele .text .strip () for ele in cols ]
249
- lastest_sem_data .append ([ele for ele in cols if ele ])
253
+ latest_sem_data .append ([ele for ele in cols if ele ])
250
254
except :
251
- lastest_sem_data = {"error" : "no data" }
252
- else :
253
- lastest_sem_data = {"error" : "no data" }
255
+ print ("No results available !!" )
254
256
255
257
coursepage = 'https://ecampus.psgtech.ac.in/studzone2/AttWfStudCourseSelection.aspx'
256
258
@@ -273,22 +275,17 @@ def return_cgpa(session):
273
275
else :
274
276
return {"error" : "no data" }
275
277
276
- latest_sem_no = lastest_sem_data [1 ][0 ]
277
-
278
278
cols = data .pop (0 )
279
279
df = pd .DataFrame (data , columns = cols )
280
280
281
- # Add latest sem results of not available
282
- if latest_sem_no not in df ['COURSE SEM' ]:
283
- latest_sem_record = {
284
- 'COURSE CODE' :lastest_sem_data [1 ][1 ],
285
- 'COURSE TITLE' :lastest_sem_data [1 ][2 ],
286
- 'COURSE SEM' :lastest_sem_data [1 ][0 ],
287
- 'GRADE' :lastest_sem_data [1 ][4 ].split ()[1 ],
288
- 'CREDITS' :lastest_sem_data [1 ][3 ]
289
- }
290
- df = df .append (latest_sem_record , ignore_index = True )
281
+ # Add latest sem results if available
282
+ if len (latest_sem_data ) != 0 :
283
+ latest_sem_data .pop (0 )
284
+ latest_sem_records = pd .DataFrame (latest_sem_data , columns = ['COURSE SEM' , 'COURSE CODE' , 'COURSE TITLE' , 'CREDITS' , 'GRADE' , 'RESULT' ])
285
+ latest_sem_records ['GRADE' ] = latest_sem_records ['GRADE' ].str .split ().str [- 1 ]
291
286
287
+ df = df .append (latest_sem_records , ignore_index = True )
288
+ df .drop_duplicates (subset = "COURSE CODE" , keep = "last" , inplace = True )
292
289
293
290
# CPGA calculation
294
291
latest_sem = df ['COURSE SEM' ].max ()
0 commit comments