From e9f6263605cf0a4cf50c846796a7a027093a8045 Mon Sep 17 00:00:00 2001 From: emkael Date: Mon, 30 Dec 2019 00:07:18 +0100 Subject: Tournament results fetched from TC pages --- jfr_playoff/tournamentinfo/__init__.py | 1 - jfr_playoff/tournamentinfo/tcjson.py | 38 +++++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) (limited to 'jfr_playoff/tournamentinfo') diff --git a/jfr_playoff/tournamentinfo/__init__.py b/jfr_playoff/tournamentinfo/__init__.py index fa60d75..67cc8f6 100644 --- a/jfr_playoff/tournamentinfo/__init__.py +++ b/jfr_playoff/tournamentinfo/__init__.py @@ -20,7 +20,6 @@ class TournamentInfoClient(object): class TournamentInfo: - def __init__(self, settings, database): self.settings = settings from jfr_playoff.tournamentinfo.jfrdb import JFRDbTournamentInfo diff --git a/jfr_playoff/tournamentinfo/tcjson.py b/jfr_playoff/tournamentinfo/tcjson.py index ff5d6fa..3082cb0 100644 --- a/jfr_playoff/tournamentinfo/tcjson.py +++ b/jfr_playoff/tournamentinfo/tcjson.py @@ -1,5 +1,41 @@ +import json +import urlparse + +from jfr_playoff.remote import RemoteUrl as p_remote from jfr_playoff.tournamentinfo import TournamentInfoClient +FLAG_CDN_URL = 'https://cdn.tournamentcalculator.com/flags/' + class TCJsonTournamentInfo(TournamentInfoClient): - pass + def get_results_link(self, suffix): + return urlparse.urljoin(self.settings['link'], suffix) + + def is_finished(self): + settings_json = json.loads( + p_remote.fetch_raw(self.get_results_link('settings.json'))) + return (not settings_json['LiveResults']) \ + and (settings_json['LastPlayedRound'] > 0) \ + and (settings_json['LastPlayedSession'] > 0) + + def get_tournament_results(self): + results = [] + results_json = json.loads( + p_remote.fetch_raw(self.get_results_link('results.json'))) + for result in results_json['Results']: + participant = result['Participant'] + flag_url = None + flag = participant['_flag'] + if flag is not None: + flag_url = self.get_results_link( + flag['CustomFlagPath'] + if flag['IsCustom'] + else '%s/%s.png' % (FLAG_CDN_URL, flag['CountryNameCode'])) + results.append(( + result['ParticipantGroup'], result['Place'], + participant['_name'], participant['_shortName'], + flag_url)) + return [list(r[2:]) + [None] for r in sorted(results)] + + def get_exceptions(self, method): + return (TypeError, IndexError, KeyError, IOError, ValueError) -- cgit v1.2.3