Skip to content

Commit 3254a55

Browse files
committed
added highest rating and user details
1 parent a255b2e commit 3254a55

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

details_soup.py

+22-4
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,14 @@ def __codechef(self):
2727
soup = BeautifulSoup(page.text, 'html.parser')
2828

2929
try:
30-
rank = soup.find('div', class_='rating-number').text
30+
rating = soup.find('div', class_='rating-number').text
3131
except AttributeError:
3232
raise UsernameError('User not Found')
3333

34-
rating = soup.find('span', class_='rating').text
34+
stars = soup.find('span', class_='rating').text
35+
36+
highest_rating_container = soup.find('div', class_='rating-header')
37+
highest_rating = highest_rating_container.find_next('small').text.split()[-1].rstrip(')')
3538

3639
rating_ranks_container = soup.find('div', class_='rating-ranks')
3740
rating_ranks = rating_ranks_container.find_all('a')
@@ -117,9 +120,24 @@ def problems_solved_get():
117120

118121
return fully_solved, partially_solved
119122

123+
def user_details_get():
124+
header_containers = soup.find_all('header')
125+
name = header_containers[1].find('h2').text
126+
127+
user_details_section = soup.find('section', class_='user-details')
128+
user_details_list = user_details_section.find_all('li')
129+
130+
return {'name': name, 'username': user_details_list[0].text.split('★')[-1].rstrip('\n'),
131+
'country': user_details_list[1].text.split(':')[-1].strip(),
132+
'state': user_details_list[2].text.split(':')[-1].strip(),
133+
'city': user_details_list[3].text.split(':')[-1].strip(),
134+
'student/professional': user_details_list[4].text.split(':')[-1].strip(),
135+
'institution': user_details_list[5].text.split(':')[-1].strip()}
136+
120137
full, partial = problems_solved_get()
121-
details = {'status': 'Success', 'rank': int(rank), 'rating': rating, 'global_rank': int(global_rank),
122-
'country_rank': int(country_rank), 'contests': contests_details_get(),
138+
details = {'status': 'Success', 'rating': int(rating), 'stars': stars, 'highest_rating': int(highest_rating),
139+
'global_rank': int(global_rank), 'country_rank': int(country_rank),
140+
'user_details': user_details_get(), 'contests': contests_details_get(),
123141
'contest_ratings': contest_rating_details_get(), 'fully_solved': full, 'partially_solved': partial}
124142

125143
return details

0 commit comments

Comments
 (0)