diff --git a/spojbackup.py b/spojbackup.py index f8e9ae4..d85054f 100644 --- a/spojbackup.py +++ b/spojbackup.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # -*- coding: utf-8 -*- ''' @@ -74,14 +74,17 @@ def getSolutions (path_prefix, path_proxy): # authenticate the user print "Authenticating " + username - br.open ("http://spoj.pl") - br.select_form (name="login") + br.open ("http://spoj.com") + for form in br.forms(): + if form.attrs['id'] == 'login-form': + br.form = form + break br["login_user"] = username br["password"] = password # sign in for a day to avoid timeouts br.find_control(name="autologin").items[0].selected = True - br.form.action = "http://www.spoj.pl" + br.form.action = "http://www.spoj.com" response = br.submit() verify = response.read() @@ -91,7 +94,7 @@ def getSolutions (path_prefix, path_proxy): # grab the signed submissions list print "Grabbing siglist for " + username - siglist = br.open("http://www.spoj.pl/status/" + username + "/signedlist") + siglist = br.open("http://www.spoj.com/status/" + username + "/signedlist") # dump first nine useless lines in signed list for formatting for i in xrange(9): @@ -121,6 +124,14 @@ def getSolutions (path_prefix, path_proxy): print "Done !!!" return mysublist +def getExt(ext): + X={"C99":"c", "C":"c", "C++":"cpp", "PYT":"py", "BAS":"sh", "AWK":"awk", "ASM":"asm", "BF":"bf", "TEX":"txt", "PAS":"pas"} + try: + return X[ext] + except: + return ext + + def downloadSolutions(mysublist): totalsubmissions = len(mysublist) @@ -128,22 +139,18 @@ def downloadSolutions(mysublist): progress = 0 for entry in mysublist: - existing_files = glob.glob(os.path.join(path_prefix, "%s-%s*" % \ - (entry[3],entry[1]))) + existing_files = glob.glob(os.path.join(path_prefix, "%s-%s-%s*" % \ + (entry[3],entry[4], entry[1]))) progress += 1 if len(existing_files) == 1: print "%d/%d - %s skipped." % (progress, totalsubmissions, entry[3]) else: - source_code = br.open("http://www.spoj.pl/files/src/save/" + \ + source_code = br.open("http://www.spoj.com/files/src/save/" + \ entry[1]) header = dict(source_code.info()) - filename = "" - try: - filename = header['content-disposition'].split('=')[1] - filename = entry[3] + "-" + filename - except: - filename = entry[3] + "-" + entry[1] + filename = "-".join([entry[3],entry[4], entry[1]]) + filename = filename + "." + getExt(entry[7]) fp = open( os.path.join(path_prefix, filename), "w") fp.write (source_code.read())