def get_onedays(session=None): """ Get oneday records from ONEDAYS page """ if session is None: session = get_session() return get_page_data(ONEDAYS, GetOnedayInfo(), session=session)
def collect_onedays(year=-1, session=None): """ Year is a keyword argument. Default is collect all. """ if session is None: session = get_session() return get_page_data(ONEDAYS, GetOneDayQuiz(year), session=session)
def get_rundles(season, league, session=get_session()): """ Get a list of rundles for the season and league specified. """ main_data = LLSTANDINGS + "%d&%s" % (season, league) return get_page_data(main_data, GetRundles(season, league), session=session)
def get_leagues(season, session=None): """ Get a list of leagues for the season specified. """ if session is None: session = get_session() main_data = LLSTANDINGS + "%d" % season return get_page_data(main_data, GetLeagueNames(season), session=session)
def get_qhist(player, session=get_session()): """ Extract player's question history. Returns a dict indexed by categories. Each dict entry consists of a 'correct' list and a 'wrong' list of questions asked. """ pname = player.lower() main_data = QHIST % pname return get_page_data(main_data, GetQhist(pname), session=session)
def get_season(session=get_session()): """ Find the season number Input: session request Returns most recent season number """ return int(get_page_data(LLHEADER, GetSeasonNumber(), session=session))
def get_matchcount(session=get_session()): """ Find matches in current season Input: session request """ return get_page_data(ARUNDLE % (get_season(), 'Pacific'), GetCurrentlyFinishedCount(), session=session)
def get_personal_data(person, session=get_session()): """ Get information on a person Input: person -- LL id. session request Returns: dictionary of user's metadata (Location, Gender, College) """ page = "%s/profiles.php?%s" % (LLHEADER, person.lower()) return get_page_data(page, GetPersonalInfo(), session=session)
def parse_oneday_get_date(oneday, session=get_session()): """ Find the date of a oneday event. Returns a date value """ urlv = "%s.php?%s" % (ONEDAYS, oneday) one_day_str = get_page_data(urlv, GetDateFromUrl(), session=session) extract = one_day_str.strip() if not extract: return date.today() + timedelta(days=1) extdate = extract.split(':')[0] return datetime.strptime(extdate, "%B %d, %Y").date()
def get_rundle_members(season, rundle, session=get_session()): """ Get players in a rundle Input: season -- season number rundle -- rundle name (B_Pacific, for example) session request Returns list of user names of players in the rundle """ page = "%s%d&%s" % (LLSTANDINGS, season, rundle) return get_page_data(page, GetRundleMembers(), session=session)
def get_user_data(player, session=get_session()): """ Return information about a user: Tuple of two dicts: first Dict -- indexed by season, list of scores as 2 x 2 tuples. second Dict -- indexed by season, list of W-L-T records as tuples All values are integers Input: player -- player name session request """ return get_page_data(USER_DATA % player.lower(), GetUserData(), session=session)
def __init__(self, season, match_day, rundle, session=get_session()): self.info = {} self.info['season'] = season self.info['day'] = match_day parts = rundle.split('_') self.info['rundle'] = parts[0] self.info['league'] = parts[1] self.info['division'] = 0 self.result = {} if len(parts) > 2: self.info['division'] = int(parts[-1]) page = '&'.join([str(season), str(match_day), rundle]) self.url = MATCH_DATA % page self.raw_data = get_page_data(self.url, GetMatchDay(), session) if len(self.raw_data) % MatchDay.INFO_PER_USER != 0: raise ValueError('LL Parsing Error') self.num_folks = len(self.raw_data) // MatchDay.INFO_PER_USER
def get_matchresult(season, day, rundle, session=get_session()): """ Extract match day results Input: season -- season number day -- match day number in range 1 to 25 rundle -- name of rundle (R_Pacific_Div_2, for example) Returns: A list of match results. Each entry consists of a dictionary whose values are: players -- list of players (2 in a match) score -- list of corresponding match scores (strings) """ page = '&'.join([str(season), str(day), rundle]) this_url = MATCH_DATA % page return get_page_data(this_url, GetMatchResult(), session=session)
def ll_oneday_players(oneday, session=get_session()): """ Extract a list of players from the oneday passed in """ dval = parse_oneday_get_date(oneday, session=session) indx = 0 for boundary in DATE_BOUNDARIES: if dval < boundary: break indx += 1 if indx == ERROR_BOUNDARY: return [] if indx == CSV_BOUNDARY: return get_csv_oneday_players(oneday, session=session) ostr = ONEDAYS + FILE_PATTERNS[indx] % oneday odata = get_page_data(ostr, GetOldOnedayData(indx), session=session) retval = [] for entry in odata: if entry == 'LearnedLeague': continue retval.append(entry[0]) return list(set(retval))