Skip to content

Commit

Permalink
core: temporary fix for KartikTalwar/Duolingo#112 (points_rank no lon…
Browse files Browse the repository at this point in the history
…ger available)
  • Loading branch information
lidiaCirrone committed Dec 30, 2021
1 parent 3093665 commit 6ad826f
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 4 deletions.
31 changes: 30 additions & 1 deletion duolingo/duolingo.py
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,35 @@ def get_languages(self, abbreviations=False):
data.append(lang['language_string'])
return data



def get_all_languages(self):
"""
Get practiced languages, considering all possible combinations, from
``https://www.duolingo.com/2017-06-30/users/<user_id>?fields=courses
:return: List of languages
:rtype: dictionary of dict
"""
url = 'https://www.duolingo.com/2017-06-30/users/{}?fields=courses'
url = url.format(self.user_data.id)

results = self._make_req(url).json()
data = {}

for course in results['courses']:
learningLanguage = course['learningLanguage']
fromLanguage = course['fromLanguage']
language_id = f"{learningLanguage}_{fromLanguage}"
xp = course['xp']
crowns = course['crowns']
data[language_id] = {
'fromLanguage': fromLanguage,
'xp': xp,
'crowns': crowns
}
return data

def get_language_from_abbr(self, abbr):
"""Get language full name from abbreviation."""
for language in self.user_data.languages:
Expand Down Expand Up @@ -410,7 +439,7 @@ def get_language_progress(self, lang):

fields = ['streak', 'language_string', 'level_progress',
'num_skills_learned', 'level_percent', 'level_points',
'points_rank', 'next_level', 'level_left', 'language',
'next_level', 'level_left', 'language',
'points', 'fluency_score', 'level']

return self._make_dict(fields, self.user_data.language_data[lang])
Expand Down
1 change: 0 additions & 1 deletion duolingo/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,6 @@ def test_get_language_progress(self):
assert "next_level" in response
assert "num_skills_learned" in response
assert "points" in response
assert "points_rank" in response
assert "streak" in response

def test_get_known_topics(self):
Expand Down
9 changes: 7 additions & 2 deletions pw-load-api.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,18 @@
learning_language_abbr = lang

language_progress = duo_user.get_language_progress(learning_language_abbr)
xp = language_data[learning_language_abbr]['points_ranking_data_dict'][str(userid)]['points_data']['total']
current_languages = duo_user.get_languages(abbreviations=True)

# xp = language_data[learning_language_abbr]['points_ranking_data_dict'][str(userid)]['points_data']['total']
all_current_languages = duo_user.get_all_languages()
total_points = 0
for lang in all_current_languages.values():
total_points += lang['xp']

user_object = {
'username': username,
'streak': language_progress['streak'],
'xp': xp,
'xp': total_points,
'learning_language': {
'string': language_progress['language_string'],
'level': language_progress['level'],
Expand Down

0 comments on commit 6ad826f

Please sign in to comment.