def get_problem(self, contest_id, pid): source_problem = "http://codeforces.com/contest/" r = list( filter( lambda x: x['contestId'] == contest_id and x['index'] == pid, self.parsed_problems['result']['problems'])) if len(r) != 1 and not self.up_to_date: self.update() return self.get_problem(contest_id, pid) if len(r) != 1: return None p = Problem(contest_id, pid, r[0]['name'], None, source_problem + str(contest_id) + "/problem/" + pid) # get test cases try: print "getting test cases for problem " + p.name html = urlopen(p.url.encode('utf-8')).read() except: print "Could not get test cases for problem " + p.name parser = TestCasesHTMLParser() parser.feed(html) [p.add_test(t) for t in parser.tests] return p