@@ -59,11 +59,18 @@ def get_xp_gains(self):
5959 return self ._language_data ['calendar' ]
6060
6161 def get_total_lessons_for_skill (self , skill ):
62+ < << << << HEAD
6263 return int (skill ['num_sessions_for_level' ] * self .LESSONS_TOTAL [len (self .LESSONS_TOTAL ) - 1 ])
6364
6465 def get_num_finished_lessons (self , skill ):
6566 level = skill ['levels_finished' ]
6667 return self .LESSONS_TOTAL [level ] * skill ['num_sessions_for_level' ] + skill ['level_sessions_finished' ]
68+ == == == =
69+ return skill ['num_sessions_for_level' ] * skill ['num_levels' ]
70+
71+ def get_num_finished_lessons (self , skill ):
72+ return skill ['levels_finished' ] * skill ['num_sessions_for_level' ] + skill ['level_sessions_finished' ]
73+ >> >> >> > 8 c5681afd968a206133996f6a3c026d203773172
6774
6875 def get_data (self ):
6976 return self ._data
@@ -118,8 +125,18 @@ def update_sheet(spreadsheet_id, date, lessons_xp, bonus_xp, stories_xp, finishe
118125def is_skill_finished (skill ):
119126 levels = skill ['num_levels' ]
120127 finished_levels = skill ['levels_finished' ]
128+ < << << << HEAD
121129 finished_lessons = skill ['level_sessions_finished' ]
122130 return finished_levels == levels
131+ == == == =
132+ return finished_levels == levels
133+
134+
135+ def is_skill_almost_finished (skill ):
136+ finished_levels = skill ['levels_finished' ]
137+ finished_lessons = skill ['level_sessions_finished' ]
138+ return finished_levels == 4 and 20 > finished_lessons >= _almost_finished (skill )
139+ >> >> >> > 8 c5681afd968a206133996f6a3c026d203773172
123140
124141
125142def get_lessons_counts (skills ):
@@ -152,8 +169,7 @@ def print_line(is_html, line):
152169
153170class Row :
154171 def __init__ (self , skill , index , name , finished_levels , finished_lessons , lessons , total_finished_levels ,
155- total_lessons_for_skill , strength , is_html ,
156- is_next ):
172+ total_lessons_for_skill , is_html ):
157173 self .skill = skill
158174 self .index = index
159175 self .name = name
@@ -162,45 +178,32 @@ def __init__(self, skill, index, name, finished_levels, finished_lessons, lesson
162178 self .lessons = lessons
163179 self .total_finished_levels = total_finished_levels
164180 self .total_lessons_for_skill = total_lessons_for_skill
165- self .strength = strength
166181 self ._is_html = is_html
167- self .is_next = is_next
168- self .remaining = self .total_lessons_for_skill * 10 / 12 - self .total_finished_levels
182+ self .remaining = self .total_lessons_for_skill - self .total_finished_levels
169183
170184 def print (self ):
171185 lessons = self .lessons
172186 # lessons = int(self.lessons if self.finished_levels < 4 else _almost_finished(self.skill))
173187 if is_html :
174- print ('<tr style="background: %s; font-weight: %s ">' % (
175- LEVEL_COLOR [self .finished_levels ], 'bold' if self . is_next else 'normal' ))
188+ print ('<tr style="background: %s">' % (
189+ LEVEL_COLOR [self .finished_levels ]))
176190 print (' <td style="padding:0 10px">%s</td>' % self .index )
177191 print (' <td style="padding"0 10px">%s</td>' % self .name )
178192 # print(' <td style="padding"0 10px">Level %s</td>' % self.finished_levels)
179193 print (' <td style="padding:0 10px">%s/%s</td>' % (self .finished_lessons , lessons ))
180- print (' <td style="padding:0 10px">%s%%</td>' % self .strength )
181194 print (' <td style="padding:0 0px, 0, 10px; text-align: right">%d</td>' % (self .total_finished_levels ))
182195 print (' <td style="padding:0 3px">/</td>' )
183196 print (' <td style="padding:0 10px 0 0px">%d</td>' % (self .total_lessons_for_skill ))
184- print (' <td style="padding:0 10px 0 0px">%d</td>' % (self .remaining ))
185- if self .is_next :
186- text = '<====='
187- href = 'https://www.duolingo.com/skill/%s/%s/%d' % (
188- self .skill ['language' ], self .skill ['url_title' ], self .finished_lessons + 1 )
189-
190- print (
191- ' <td style="background: #ffffff; padding:0 10px;"><a href="%s" style="text-decoration: none;">%s</a></td>' % (
192- href , text ))
197+ print (' <td style="padding:0 10px 0 0px; text-align: right">%d</td>' % (self .remaining ))
193198 print ('</tr>' )
194199 else :
195- print (' %-3d: %-40s Level %d Lesson %2d/%02d %-8s %3d%% %s ' % (
200+ print (' %-3d: %-40s Level %d Lesson %2d/%02d %-8s' % (
196201 self .index ,
197202 self .name ,
198203 self .finished_levels ,
199204 self .finished_lessons ,
200205 lessons ,
201- '%4d/%d' % (self .total_finished_levels , self .total_lessons_for_skill ),
202- self .strength ,
203- ' <====' if self .is_next else '' ))
206+ '%4d/%d' % (self .total_finished_levels , self .total_lessons_for_skill )))
204207
205208
206209if __name__ == '__main__' :
@@ -261,26 +264,38 @@ def print(self):
261264 strength = int (skill ['strength' ] * 100 )
262265 total_finished_levels = duo .get_num_finished_lessons (skill )
263266 total_lessons_for_skill = duo .get_total_lessons_for_skill (skill )
264- if n == 0 :
265- is_next = True
266- else :
267- is_next = False
268- first_row = rows [0 ]
269- for i in range (1 , n + 1 , 1 ):
270- if (i == 1 or first_row .is_next ) and rows [n - i ].total_finished_levels == total_finished_levels + 4 * i + 1 :
271- is_next = True
272- first_row .is_next = False
273- if next_row :
274- next_row .is_next = False
275- break
276267
277268 row = Row (skill , index , name , finished_levels , finished_lessons , lessons , total_finished_levels ,
278- total_lessons_for_skill , strength , is_html , is_next )
269+ total_lessons_for_skill , is_html )
279270 rows .append (row )
280- if is_next :
281- next_row = row
282271
283272 total_remaining = 0
273+ < << << << HEAD
274+ == == == =
275+ rows = []
276+
277+ if len (rows ) == 0 :
278+ active = 0
279+ next_row = None
280+ for index , skill in enumerate (skills ):
281+ n = len (rows )
282+ levels = skill ['num_levels' ]
283+ finished_levels = skill ['levels_finished' ]
284+ finished_lessons = skill ['level_sessions_finished' ]
285+ if finished_levels == levels :
286+ continue
287+
288+ active += 1
289+ name = skill ['title' ]
290+ lessons = skill ['num_sessions_for_level' ]
291+ strength = int (skill ['strength' ] * 100 )
292+ total_finished_levels = duo .get_num_finished_lessons (skill )
293+ total_lessons_for_skill = duo .get_total_lessons_for_skill (skill )
294+
295+ row = Row (skill , index , name , finished_levels , finished_lessons , lessons , total_finished_levels ,
296+ total_lessons_for_skill , is_html )
297+ rows .append (row )
298+ > >> >> >> 8 c5681afd968a206133996f6a3c026d203773172
284299
285300 for row in rows :
286301 row .print ()
0 commit comments