Ejemplo n.º 1
0
def updateTeamsFinalBench():
    session = CreateSession()
    m = session.query(Managers).all()
    gw = GetGameweek(session)
    for i in m:
        fplid = i.fplId
        r = requests.get(
            f"https://fantasy.premierleague.com/api/entry/{fplid}/event/{gw}/picks/"
        )
        team = r.json()
        for p in team['picks']:
            if p['is_captain']:
                cap = 1
            else:
                cap = 0
            if not BenchBoost(session, i.id, gw):
                if p['position'] > 11:
                    bench = 1
                else:
                    bench = 0
            else:
                bench = 0
            plyr = session.query(Teams).filter_by(
                playerId=p['element']).filter_by(managerId=i.id).filter_by(
                    gameweek=gw).first()
            plyr.is_bench = bench
            session.add(plyr)
    session.commit()
    session.close()
Ejemplo n.º 2
0
def populatePlayers():
    bootstrapData = GetBootstrapData()
    playerData = bootstrapData['elements']
    session = CreateSession()
    session.query(Players).delete()
    for i in playerData:
        plyr = Players(jfpl=i['id'],
                       event_points=i['event_points'],
                       first_name=i['first_name'],
                       second_name=i['second_name'],
                       web_name=i['web_name'],
                       team=i['team'],
                       team_code=i['team_code'],
                       goals_scored=i['goals_scored'],
                       assists=i['assists'],
                       goals_conceded=i['goals_conceded'],
                       pen_saved=i['penalties_saved'],
                       pen_missed=i['penalties_missed'],
                       yellow_cards=i['yellow_cards'],
                       red_cards=i['red_cards'],
                       saves=i['saves'],
                       element_type=i['element_type'])
        session.add(plyr)
        session.commit()
    session.close()
Ejemplo n.º 3
0
def WeeklySetup():
    updateGameweeks()
    logger.info('gameweeks updated')
    session=CreateSession()
    gw=GetGameweek(session)
    session.close()
    if gw == 1:
        populateFixtures()
    logger.info('fixtures populated,for first week at least')
    getNewPlFixtures()
    logger.info('plfixtures updated')
    updatePlPlayers()
    logger.info('plplayers updated')
    updateTeams()
    logger.info('Teams updated')
    updateChips()
    logger.info('chips updated')
    checkDrops()
    logger.info('drops updated')
    checkReefs()
    logger.info('reefs updated')
    CreateMatchCronjobs()
    CreateWeeklyCronjob()
    CreateBonusCronjobs()
    CreateFinalCronjobs()   
    sendMsg("Data updated, the gameweek has begun!")
Ejemplo n.º 4
0
def updateJanCup():
    session = CreateSession()
    gw = GetJanCupWeek(session)
    if gw == 3:
        UpdateSemis()
    elif gw == 4:
        UpdateFinal
    session.close()
Ejemplo n.º 5
0
def DateToCron():
    session = CreateSession()
    q = session.query(Gameweeks) \
            .filter_by(is_next=1) \
            .first()

    dt = datetime.datetime.strptime(q.deadline, '%Y-%m-%dT%H:%M:%SZ')
    dt = dt.replace(tzinfo=tz.gettz('UTC'))
    return dt
Ejemplo n.º 6
0
def populatePlTeams():
    bootstrapData = GetBootstrapData()
    plTeamsData = bootstrapData['teams']
    session = CreateSession()
    session.query(PlTeams).delete()
    for i in plTeamsData:
        tm = PlTeams(id=i['id'], name=i['name'], shortname=i['short_name'])
        session.add(tm)
        session.commit()
    session.close()
Ejemplo n.º 7
0
def updateTeams():
    session = CreateSession()
    m = session.query(Managers).all()
    gw = GetGameweek(session)
    for i in m:
        fplid = i.fplId
        r = requests.get(
            f"https://fantasy.premierleague.com/api/entry/{fplid}/event/{gw}/picks/"
        )
        team = r.json()
        for p in team['picks']:
            if p['is_captain']:
                cap = 1
            else:
                cap = 0
            if not BenchBoost(session, i.id, gw):
                if p['position'] > 11:
                    bench = 1
                else:
                    bench = 0
            else:
                print("ay")
                bench = 0
            plyr = Teams(gameweek=gw,
                         managerId=i.id,
                         playerId=int(p['element']),
                         points=0,
                         is_captain=cap,
                         is_bench=bench)
            session.add(plyr)
    session.commit()
    session.close()
Ejemplo n.º 8
0
def CreateFinalCronjobs():
    cron = CronTab(user='******')
    session=CreateSession()
    gw=GetGameweek(session)
    q = session.query(PlFixtures.kickoff_time).filter_by(gameweek=gw).all()
    KO = max([datetime.datetime.strptime(j[0],'%Y-%m-%dT%H:%M:%SZ') for j in q])
    FT = KO + datetime.timedelta(hours=2)
    job  = cron.new(command=cronFinalCommand,comment='Final Points')
    job.setall(FT)
    cron.write()
    session.close()
Ejemplo n.º 9
0
def UpdateSemis():
    session = CreateSession()
    fixtures = session.query(JanCupFixtures).filter_by(isQuarterFinal=1).all()      
    ScoreString = ''
    for f in fixtures:
        score1 = getScore(f.managerId)
        score2 = getScore(f.opponentId)
        if score1 > score2:
            x = f.managerId
        else:
            x = f.opponentId
            
        insertSemiFixture(session,x,f.semiFinalDraw)
    session.close()
Ejemplo n.º 10
0
def createFPLClassicoTable():
    session = CreateSession()
    t = session.query(Table,
                      Managers).filter(Table.managerId == Managers.id).all()
    values = [(i[1].teamName, i[0].score) for i in t]
    session.close()
    df = pandas.DataFrame(values, columns=['Team', 'PlayerScore'])
    df = df.sort_values(['PlayerScore'], ascending=[False])
    df = df.reset_index()
    df.drop('index', axis=1, inplace=True)
    df['#'] = df.index + 1
    df['#'] = df['#'].apply(lambda x: "{}{}".format(x, (' ' * 15)))
    df = df[['#', 'Team', 'PlayerScore']]
    render_mpl_table(df, classicoPath)
Ejemplo n.º 11
0
def updateDeadlines():
    bootstrapData = GetBootstrapData()
    gameweekData = bootstrapData['events']
    for i in gameweekData:
        dbid = i['id']
        deadline = i['deadline_time']
        session = CreateSession()
        dl = session.query(Gameweeks).filter_by(id=dbid).first()
        dl.deadline = deadline
        session.add(dl)
        session.commit()
        session.close()
Ejemplo n.º 12
0
def createTable():
    session = CreateSession()
    t = session.query(Table,
                      Managers).filter(Table.managerId == Managers.id).all()
    values = [(i[1].teamName, i[0].score, i[0].points) for i in t]
    session.close()
    df = pandas.DataFrame(values, columns=['Team', 'PlayerScore', 'Points'])
    df = df.sort_values(['Points', 'PlayerScore'], ascending=[False, False])
    df = df.reset_index()
    df.drop('index', axis=1, inplace=True)
    df['#'] = df.index + 1
    df['#'] = df['#'].apply(lambda x: "{}{}".format(x, (' ' * 15)))
    df = df[['#', 'Team', 'PlayerScore', 'Points']]
    render_mpl_table(
        df,
        '/home/turner_prize/leagueolas/league-site/league-site/data/table.png')
Ejemplo n.º 13
0
def populateGameweeks():
    bootstrapData = GetBootstrapData()
    gameweekData = bootstrapData['events']
    session = CreateSession()
    session.query(Gameweeks).delete()
    for i in gameweekData:
        gw = Gameweeks(id=i['id'],
                       name=i['name'],
                       deadline=i['deadline_time'],
                       is_current=i['is_current'],
                       is_next=i['is_next'],
                       gameweek_start='test',
                       gameweek_end='test')
        session.add(gw)
        session.commit()
    session.close()
Ejemplo n.º 14
0
def UpdateFinal():
    session = CreateSession()
    fixtures = session.query(JanCupFixtures).filter_by(isSemiFinal=1).all()      
    ScoreString = ''
    for f in fixtures:
        score1 = getScore(f.managerId)
        score2 = getScore(f.opponentId)

        if score1 > score2:
            x = f.managerId
        else:
            x = f.managerId
            
        insertFinalFixture(session,x)
    session.close()
    print('complete')
Ejemplo n.º 15
0
def populatePlFixtures():
    session = CreateSession()
    session.query(PlFixtures).delete()
    r = requests.get(f"https://fantasy.premierleague.com/api/fixtures")
    fixtureData = r.json()
    for i in fixtureData:
        fxtr = PlFixtures(id=i['id'],
                          kickoff_time=i['kickoff_time'],
                          gameweek=i['event'],
                          away_team=i['team_a'],
                          home_team=i['team_h'],
                          started=i['started'],
                          finished=i['finished'])
        session.add(fxtr)
        session.commit()
    session.close()
Ejemplo n.º 16
0
def GetFixtures():
    session = CreateSession()
    gw = GetGameweek(session)
    q = session.query(PlFixtures.kickoff_time) \
        .distinct(PlFixtures.kickoff_time) \
        .order_by(PlFixtures.kickoff_time) \
        .filter_by(gameweek=gw) \
        .all()
    dtRanges = []
    for i in q:
        #timezone is UTC from database, need to change to current TZ
        KickoffTime = datetime.strptime(i.kickoff_time, '%Y-%m-%dT%H:%M:%SZ')
        GameEndTime = KickoffTime + timedelta(hours=2)
        rng = (KickoffTime, GameEndTime)
        dtRanges.append(rng)
    session.close()
    return LoopIt(dtRanges)
Ejemplo n.º 17
0
def updatedPointshit(gw):
    session = CreateSession()
    m = session.query(Managers).all()
    for i in m:
        fplid = i.fplId
        r = requests.get(
            f"https://fantasy.premierleague.com/api/entry/{fplid}/event/{gw}/picks/"
        )
        team = r.json()
        hit = team['entry_history']['event_transfers_cost']
        x = session.query(Fixtures).filter(Fixtures.managerId == i.id).filter(
            Fixtures.gameweek == gw).first()
        x.pointhit = hit
        session.add(x)
        session.commit()

    session.close()
Ejemplo n.º 18
0
def updatePlFixtures():
    session = CreateSession()
    gw = GetGameweek(session)
    r = requests.get(
        f"https://fantasy.premierleague.com/api/fixtures/?event={gw}")
    fixtureData = r.json()
    for games in fixtureData:
        j = session.query(PlFixtures).filter_by(
            away_team=games['team_a']).filter_by(gameweek=gw).first()
        if games['started']:
            j.started = 1
        if games['finished_provisional']:
            j.finished = 1
        session.add(j)
    session.commit()
    session.close()
Ejemplo n.º 19
0
def CreateBonusCronjobs():
    cron = CronTab(user='******')
    session = CreateSession()
    gw = GetGameweek(session)
    q = session.query(PlFixtures.kickoff_time).filter_by(gameweek=gw).all()
    gameDays = set([
        datetime.datetime.strptime(i[0], '%Y-%m-%dT%H:%M:%SZ').date()
        for i in q
    ])
    for i in gameDays:
        KO = max([
            datetime.datetime.strptime(j[0], '%Y-%m-%dT%H:%M:%SZ') for j in q
            if datetime.datetime.strptime(j[0], '%Y-%m-%dT%H:%M:%SZ').date() ==
            i
        ])
        FT = KO + datetime.timedelta(hours=2)
        job = cron.new(
            command=
            '/home/turner_prize/leagueolas/bot-env/bin/python3 /home/turner_prize/leagueolas/league-site/league-site/data/cronBonus.py',
            comment='Bonus Points')
        job.setall(FT)
        cron.write()
    session.close()
Ejemplo n.º 20
0
def updateViceCaptain():
    session = CreateSession()
    m = session.query(Managers).all()
    gw = GetGameweek(session)
    for i in m:
        fplid = i.fplId
        r = requests.get(
            f"https://fantasy.premierleague.com/api/entry/{fplid}/event/{gw}/picks/"
        )
        team = r.json()
        for p in team['picks']:
            if not BenchBoost(session, i.id, gw):
                if p['is_captain'] and p['multiplier'] in [0, 1]:
                    for q in team['picks']:
                        if q['is_vice_captain']:
                            plyr = session.query(Teams).filter_by(
                                playerId=q['element']).filter_by(
                                    managerId=i.id).filter_by(
                                        gameweek=gw).first()
                            plyr.is_captain = 1
                            session.add(plyr)
    session.commit()
    session.close()
Ejemplo n.º 21
0
def getOneScore(TelegramId):
    session = CreateSession()
    gw = session.query(Gameweeks.id).filter_by(is_current=1).first()
    gw = gw[0]
    manager = session.query(Managers).filter_by(telegramId=TelegramId).first()
    fixtures = session.query(Fixtures).filter_by(gameweek=gw).filter_by(
        managerId=manager.id).first()
    ScoreString = ''
    ss1 = getScoreString(session, fixtures.managerId, gw)
    ss2 = getScoreString(session, fixtures.opponentId, gw)
    ScoreString = f'{ss1} \nvs\n{ss2}'
    session.close()
    return ScoreString
Ejemplo n.º 22
0
def getNewPlFixtures():
    session = CreateSession()
    gw = GetGameweek(session)
    r = requests.get(
        f"https://fantasy.premierleague.com/api/fixtures/?event={gw}")
    fixtureData = r.json()
    for i in fixtureData:
        fxtr = PlFixtures(id=i['id'],
                          kickoff_time=i['kickoff_time'],
                          gameweek=i['event'],
                          away_team=i['team_a'],
                          home_team=i['team_h'],
                          started=i['started'],
                          finished=i['finished'])
        session.add(fxtr)
        session.commit()
    session.close()
Ejemplo n.º 23
0
def GetNextFixtures():
    session = CreateSession()
    gw = GetNextGameweek(session)
    session.close()
    session = CreateSession()
    f = getAllFixtures(session, gw)
    n = 0
    MyString = 'Next gameweeks fixtures:\n\n'
    for i in f:
        n = n + 1
        if n % 2 == 0:
            manager1 = GetManagerTeamName(session, i.managerId)[0]
            manager2 = GetManagerTeamName(session, i.opponentId)[0]

            if session.query(
                    Managers.KOTM).filter_by(id=i.managerId).first()[0] == 1:
                manager1 = manager1 + '*'

            if session.query(
                    Managers.KOTM).filter_by(id=i.opponentId).first()[0] == 1:
                manager2 = manager2 + '*'
            MyString = MyString + f"{manager1} v {manager2}\n"
    session.close()
    return MyString
Ejemplo n.º 24
0
def JanCup():
    session = CreateSession()
    gw = GetJanCupWeek(session)
    if gw > 0 and gw <=5:
        if gw == 1 or gw == 2:
            x = JanCupQualification(session)
            session.close()
            return x
        else:
            x =  JanCupScores(session,gw)
            session.close()
            return x
Ejemplo n.º 25
0
def GetMonster(monsterID):
    r = requests.get(f"http://www.dnd5eapi.co/api/monsters/{monsterID}")
    monster = r.json()
    session = CreateSession()
    x = session.query(Enemy).filter_by(name=monster['name']).first()
    if not x:
        if 'actions' in monster:
            enemiesTable(monster, session)
            specialAbilitiesTable(monster, session)
            actionsTextTable(monster, session)
            actionsTable(monster, session)
            ledgendaryActionsTable(monster, session)
            session.commit()
            session.close()
            print(f"{monster['name']} added!")
        else:
            print(f"{monster['name']} already exists!")
Ejemplo n.º 26
0
def getScore(id):
    session = CreateSession()
    gw = session.query(Gameweeks.id).filter_by(is_current=1).first()
    gw=gw.id
    scores = session.query(Teams).filter_by(managerId=id).filter_by(gameweek=gw).filter_by(is_bench=0).all()
    for i in scores:
        if i.is_captain==1:
            if TripleCaptain(session,id,gw):
                i.points = (i.points * 3)
            else:
                i.points = (i.points * 2)
    scoreList = [x.points for x in scores]
    points = sum(scoreList)
    pointhit = session.query(Fixtures).filter_by(managerId=id).filter_by(gameweek=gw).first()
    if pointhit.pointhit:
        points = points - pointhit.pointhit
    session.close()
    return points
Ejemplo n.º 27
0
def getAllScores():
    session = CreateSession()
    gw = session.query(Gameweeks.id).filter_by(is_current=1).first()
    gw = gw[0]
    fixtures = session.query(Fixtures).filter_by(gameweek=gw).all()
    fx = []
    ScoreString = ''
    for f in fixtures:
        manager1 = session.query(Managers).filter_by(id=f.managerId).first()
        if manager1.id in fx:
            continue
        else:
            ss1 = getScoreString(session, f.managerId, gw)
            ss2 = getScoreString(session, f.opponentId, gw)

            fx.append(f.managerId)
            fx.append(f.opponentId)
            ScoreString = ScoreString + '\n' + f'{ss1} \nvs\n{ss2}\n---'
    session.close()
    return ScoreString
Ejemplo n.º 28
0
def updateChips():
    session = CreateSession()
    m = session.query(Managers).all()
    gw = GetGameweek(session)
    for i in m:
        fplid = i.fplId
        r = requests.get(
            f"https://fantasy.premierleague.com/api/entry/{fplid}/event/{gw}/picks/"
        )
        team = r.json()
        if team['active_chip'] != 'null':
            if team['active_chip'] == '3xc':
                i.TC = gw
            if team['active_chip'] == 'bboost':
                i.BB = gw
            if team['active_chip'] == 'freehit':
                i.FH = gw
            if team['active_chip'] == 'wildcard':
                i.WC1 = gw

    session.commit()
    session.close()
Ejemplo n.º 29
0
def DraftList(pos=None):
    session = CreateSession()
    if pos:
        p = ElementType(pos)
        manager = session.query(Managers,DraftedPlayers,Players, PlTeams) \
                            .filter(Managers.id==DraftedPlayers.managerId) \
                            .filter(Players.jfpl==DraftedPlayers.playerId) \
                            .filter(Players.team==PlTeams.id) \
                            .filter(Players.element_type==p) \
                            .order_by(desc(Managers.id)) \
                            .order_by(Players.element_type) \
                            .all()
    else:
        manager = session.query(Managers,DraftedPlayers,Players, PlTeams) \
                            .filter(Managers.id==DraftedPlayers.managerId) \
                            .filter(Players.jfpl==DraftedPlayers.playerId) \
                            .filter(Players.team==PlTeams.id) \
                            .order_by(desc(Managers.id)) \
                            .order_by(Players.element_type) \
                            .all()
    dlist = {}
    for i in manager:
        if not i[0].teamName in dlist:
            dlist[i[0].teamName] = []
        pos = GetPos(i[2].element_type)
        draftString = f'{pos} - {i[2].web_name} - {i[3].shortname}'
        dlist[i[0].teamName].append(draftString)

    dString = ''
    for k, v in dlist.items():
        dString = dString + f"\n{k}:"
        for dl in v:
            dString = dString + f"\n\t{dl}"
        dString = dString + f'\n'
    session.close()
    return dString
Ejemplo n.º 30
0
def updateKOTM():
    session = CreateSession()
    k = session.query(Managers).filter_by(KOTM=1).first()
    gw = GetGameweek(session)
    kotm = session.query(Fixtures).filter(Fixtures.gameweek == gw).filter(
        Fixtures.managerId == k.id).first()
    challenger = session.query(Fixtures).filter(
        Fixtures.gameweek == gw).filter(
            Fixtures.managerId == kotm.opponentId).first()

    if challenger.score > kotm.score:
        j = session.query(Managers).filter_by(id=kotm.opponentId).first()
        sendMsg(f'{j.teamName} is the new King of The Mountain!')
        j.KOTM = 1
        k.KOTM = 0
        session.add(j)
        session.add(k)
        session.commit()
    else:
        sendMsg(f'{k.teamName} retains King of The Mountain...for now.')

    session.close()