9
9
10
10
class Crawler :
11
11
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'
12
13
login_url = base_url + 'auth/login'
13
14
submissions_url = base_url + 'rest/contests/master/submissions/?offset={}&limit={}'
14
15
challenge_url = base_url + 'rest/contests/master/challenges/{}/submissions/{}'
@@ -40,11 +41,13 @@ def __init__(self):
40
41
self .options = {}
41
42
42
43
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' ]
48
51
49
52
def parse_script (self ):
50
53
p = configargparse .ArgParser (default_config_files = ['./user.yaml' ])
@@ -128,7 +131,7 @@ def update_readmes(self, domain_name, subdomain_name, domain_url, subdomain_url,
128
131
subdomain_readme_path , domain_readme_path , root_readme_path )
129
132
130
133
problem_url = self .problem_url .format (challenge_slug )
131
-
134
+
132
135
file_path_relative_to_subdomain = './' + file_name_with_extension
133
136
file_path_relative_to_domain = '{}/{}' .format (subdomain_name , file_name_with_extension )
134
137
file_path_relative_to_root = '{}/{}/{}' .format (domain_name , subdomain_name , file_name_with_extension )
@@ -173,7 +176,7 @@ def get_submissions(self, submissions):
173
176
data = resp .json ()['model' ]
174
177
code = data ['code' ]
175
178
track = data ['track' ]
176
-
179
+
177
180
# Default should be empty
178
181
file_extension = ''
179
182
file_name = challenge_slug
@@ -189,7 +192,7 @@ def get_submissions(self, submissions):
189
192
subdomain_name = track ['name' ].strip ().replace (' ' , '' )
190
193
domain_slug = track ['track_slug' ]
191
194
subdomain_slug = track ['slug' ]
192
-
195
+
193
196
domain_url = self .domain_url .format (domain_slug )
194
197
subdomain_url = self .subdomain_url .format (domain_slug , subdomain_slug )
195
198
@@ -206,7 +209,7 @@ def get_submissions(self, submissions):
206
209
if self .make_language_folder :
207
210
file_path = os .path .join (self .base_folder_name , domain_name , subdomain_name , language , file_name_with_extension )
208
211
self .store_submission (file_path , code )
209
-
212
+
210
213
self .update_readmes (domain_name , subdomain_name , domain_url , subdomain_url ,
211
214
challenge_name , challenge_slug , language , file_name_with_extension )
212
215
0 commit comments