Skip to content

Commit e2488b5

Browse files
Merge pull request #44 from Nullifiers/fixLogin
Fix login
2 parents 0d7cca2 + 74a5de2 commit e2488b5

File tree

4 files changed

+19
-12
lines changed

4 files changed

+19
-12
lines changed

hsc/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
from .crawler import Crawler
1+
from .crawler import Crawler

hsc/__main__.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from hsc.crawler import main
2+
3+
if __name__ == "__main__":
4+
main()

hsc/crawler.py

+12-9
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
class Crawler:
1111
base_url = 'https://www.hackerrank.com/'
12+
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0'
1213
login_url = base_url + 'auth/login'
1314
submissions_url = base_url + 'rest/contests/master/submissions/?offset={}&limit={}'
1415
challenge_url = base_url + 'rest/contests/master/challenges/{}/submissions/{}'
@@ -40,11 +41,13 @@ def __init__(self):
4041
self.options = {}
4142

4243
def login(self, username, password):
43-
resp = self.session.get(self.login_url, auth=(username, password))
44-
self.cookies = self.session.cookies.get_dict()
45-
self.headers = resp.request.headers
46-
self.get_number_of_submissions()
47-
return self.total_submissions != 0
44+
resp = self.session.post(self.login_url, auth=(username, password), headers={'user-agent': self.user_agent})
45+
data = resp.json()
46+
if data['status']:
47+
self.cookies = self.session.cookies.get_dict()
48+
self.headers = resp.request.headers
49+
self.get_number_of_submissions()
50+
return data['status']
4851

4952
def parse_script(self):
5053
p = configargparse.ArgParser(default_config_files=['./user.yaml'])
@@ -128,7 +131,7 @@ def update_readmes(self, domain_name, subdomain_name, domain_url, subdomain_url,
128131
subdomain_readme_path, domain_readme_path, root_readme_path)
129132

130133
problem_url = self.problem_url.format(challenge_slug)
131-
134+
132135
file_path_relative_to_subdomain = './' + file_name_with_extension
133136
file_path_relative_to_domain = '{}/{}'.format(subdomain_name, file_name_with_extension)
134137
file_path_relative_to_root = '{}/{}/{}'.format(domain_name, subdomain_name, file_name_with_extension)
@@ -173,7 +176,7 @@ def get_submissions(self, submissions):
173176
data = resp.json()['model']
174177
code = data['code']
175178
track = data['track']
176-
179+
177180
# Default should be empty
178181
file_extension = ''
179182
file_name = challenge_slug
@@ -189,7 +192,7 @@ def get_submissions(self, submissions):
189192
subdomain_name = track['name'].strip().replace(' ', '')
190193
domain_slug = track['track_slug']
191194
subdomain_slug = track['slug']
192-
195+
193196
domain_url = self.domain_url.format(domain_slug)
194197
subdomain_url = self.subdomain_url.format(domain_slug, subdomain_slug)
195198

@@ -206,7 +209,7 @@ def get_submissions(self, submissions):
206209
if self.make_language_folder:
207210
file_path = os.path.join(self.base_folder_name, domain_name, subdomain_name, language, file_name_with_extension)
208211
self.store_submission(file_path, code)
209-
212+
210213
self.update_readmes(domain_name, subdomain_name, domain_url, subdomain_url,
211214
challenge_name, challenge_slug, language, file_name_with_extension)
212215

setup.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setup(
77
name='hsc',
8-
version='1.2.1',
8+
version='1.2.2',
99
author='Nullifiers',
1010
author_email='[email protected]',
1111
description='Hackerrank Solution Crawler',
@@ -21,7 +21,7 @@
2121
],
2222
entry_points={
2323
'console_scripts': [
24-
'hsc=hsc.crawler:main',
24+
'hsc=hsc.__main__:main',
2525
],
2626
},
2727
install_requires=['progress', 'requests', 'configargparse']

0 commit comments

Comments
 (0)