Skip to content

Commit 2dd09ab

Browse files
committed
Update
2 parents ecc8c86 + 8c5681a commit 2dd09ab

1 file changed

Lines changed: 51 additions & 36 deletions

File tree

‎duolingo-active.py‎

Lines changed: 51 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
>>>>>>> 8c5681afd968a206133996f6a3c026d203773172
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
118125
def 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+
>>>>>>> 8c5681afd968a206133996f6a3c026d203773172
123140

124141

125142
def get_lessons_counts(skills):
@@ -152,8 +169,7 @@ def print_line(is_html, line):
152169

153170
class 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

206209
if __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+
>>>>>>> 8c5681afd968a206133996f6a3c026d203773172
284299

285300
for row in rows:
286301
row.print()

0 commit comments

Comments
 (0)