def _parseProblem(self, data): problem = Problem() problem.id = data[0] problem.title = data[1] problem.accepted = data[2] problem.submitted = data[3] problem.ratio = data[4] problem.source = data[5] return problem
def parseProblems(volume): url = "http://%s/toj/list%d.html" % (TOJ_HOST, volume) html = _readURL(url) lines = html.split('\n') problems = list() for line_pos in xrange(28, len(lines)): token = lines[line_pos] if token.find("p") != 0: break problem = Problem() token2 = token[ : : -1] endRatio = token2.find('"') startRatio = token2.find('"', endRatio+1) endTitle = token2.find('"', startRatio+1) startTitle = token.find('"') endTitle = len(token) - endTitle - 1 endRatio = len(token) - endRatio - 1 startRatio = len(token) - startRatio - 1 problem.title = token[startTitle+1:endTitle].replace("\\", "") ratio = token[startRatio+1:endRatio] try: problem.ratio = float(ratio) / 100.0 except: None token = token[0:startTitle] + token[endTitle+1:startRatio] + token[endRatio+1:len(token)-1] params = token.split(",") problem.id = int(params[2]) problem.accepted = int(params[5]) problem.submitted = int(params[6]) problems.append(problem) return problems