Пример #1
0
async def get_recent_links_by_team(app_link: AppLinkModel, team_name: str,
                                   last_date: str):
    """
    View for news based on country and filtered by league
    :param app_link: Country name
    :param team_name: league name
    :param last_date: last date string from frontend
    :return: list of News
    """
    links_collection = DBConnection.create_main_connection(app_link)
    news = []
    teams = [team_name]
    parsed_date = arrow.get(last_date).datetime

    documents = links_collection.find({
        "visible":
        True,
        "publishing_date": {
            "$gt": parsed_date
        },
        "$or": [{
            "team_name": team_name
        }, {
            "secondary_team_names": {
                "$in": teams
            }
        }]
    }).sort('publishing_date')

    async for doc in documents:
        news.append(doc)

    return news
Пример #2
0
async def get_recent_links(app_link: AppLinkModel,
                           last_date: str,
                           lang: str = Query(None)):
    """
    Get most recent news for country/date
    :param lang: Optional language
    :param app_link: Country name
    :param last_date: date string 
    :return: List of News
    """
    collection = DBConnection.create_main_connection(app_link)
    parsed_date = arrow.get(last_date).datetime
    if lang:
        documents = collection.find({
            "visible": True,
            'language': lang,
            "publishing_date": {
                "$gt": parsed_date
            }
        }).sort('publishing_date')
    else:
        documents = collection.find({
            "visible": True,
            "publishing_date": {
                "$gt": parsed_date
            }
        }).sort('publishing_date')
    news = []
    async for doc in documents:
        news.append(doc)

    return news
Пример #3
0
async def get_all_links(app_link: AppLinkModel,
                        page: int = Query(None),
                        lang: str = Query(None)):
    """
    Main view for news links based on country
    :param lang: Optional language
    :param app_link: Country name
    :param page: query param for pagination
    :return: List of News
    """
    collection = DBConnection.create_main_connection(app_link)
    if lang:
        documents = collection.find({
            "visible": True,
            'language': lang
        }).sort('publishing_date', -1)
    else:
        documents = collection.find({
            "visible": True
        }).sort('publishing_date', -1)
    if page and page > 1:
        skip_counter = 25 * (page - 1)
        documents.skip(skip_counter)
    news = []
    async for doc in documents.limit(25):
        news.append(doc)

    return news
Пример #4
0
async def get_links_by_team(app_link: AppLinkModel,
                            team_name: str,
                            page: Optional[int] = None):
    """
    View for news based on country and filtered by league
    :param app_link: Country name
    :param team_name: league name
    :param page: query param for pagination
    :return: list of News
    """
    links_collection = DBConnection.create_main_connection(app_link)
    news = []
    teams = [team_name]
    documents = links_collection.find({
        "visible":
        True,
        "$or": [{
            "team_name": team_name
        }, {
            "secondary_team_names": {
                "$in": teams
            }
        }]
    }).sort('publishing_date', -1)

    if page and page > 1:
        skip_counter = 25 * (page - 1)
        documents.skip(skip_counter)

    async for doc in documents.limit(25):
        news.append(doc)

    return news
Пример #5
0
async def next_round_events(app_link: AppLinkModel, league: LeaguesModel):
    """
        Get next round for given country/league/year
    :param app_link: country
    :param league: League name based uppon SofaScore naming
    :return: List of the next round events(matches) based on the current date
    """
    season_year = LeaguesModel.get_league_year(league_name=league)
    collection = DBConnection.create_events_connection(app_link)
    events = []

    next_round = await collection.find_one({
        'tournament_name': SofaScoreTournamentModel[league],
        'season_year': season_year,
        'start_time': {'$gte': datetime.now()}
    })

    if next_round:
        documents = collection.find({
            'tournament_name': SofaScoreTournamentModel[league],
            'season_year': season_year,
            'round': next_round['round']
        }).sort('start_time')
        async for doc in documents:
            events.append(doc)

    return events
Пример #6
0
async def get_links_by_league(app_link: AppLinkModel,
                              league: str,
                              page: Optional[int] = None):
    """
    View for news based on country and filtered by league
    :param app_link: Country name
    :param league: league name
    :param page: query param for pagination
    :return: list of News
    """
    teams_collection = DBConnection.create_teams_connection(app_link)
    links_collection = DBConnection.create_main_connection(app_link)
    names = []
    news = []
    if app_link.value == 'brazil' or app_link.value == 'espana':
        league_name = league
    else:
        league_name = league.title()

    teams = teams_collection.find({'league': league_name})

    async for team in teams:
        names.append(team['intl_name'])

    documents = links_collection.find({
        "visible":
        True,
        "$or": [{
            "team_name": {
                "$in": names
            }
        }, {
            "secondary_team_names": {
                "$in": names
            }
        }],
    }).sort('publishing_date', -1)

    if page and page > 1:
        skip_counter = 25 * (page - 1)
        documents.skip(skip_counter)

    async for doc in documents.limit(25):
        news.append(doc)

    return news
Пример #7
0
async def get_recent_links_by_league(app_link: AppLinkModel, league: str,
                                     last_date: str):
    """
    View for news based on country and filtered by league
    :param app_link: Country name
    :param league: league name
    :param last_date: last date string
    :return: list of News
    """
    teams_collection = DBConnection.create_teams_connection(app_link)
    links_collection = DBConnection.create_main_connection(app_link)
    names = []
    news = []
    parsed_date = arrow.get(last_date).datetime

    if app_link.value == 'brazil' or app_link.value == 'espana':
        league_name = league
    else:
        league_name = league.title()

    teams = teams_collection.find({'league': league_name})

    async for team in teams:
        names.append(team['intl_name'])

    documents = links_collection.find({
        "visible":
        True,
        "publishing_date": {
            "$gt": parsed_date
        },
        "$or": [{
            "team_name": {
                "$in": names
            }
        }, {
            "secondary_team_names": {
                "$in": names
            }
        }],
    }).sort('publishing_date')

    async for doc in documents:
        news.append(doc)

    return news
Пример #8
0
async def root(app_link: AppLinkModel, league: LeaguesModel):
    """
        Get all events based on country, league and season year
    :param app_link: Country
    :param league: League name from SofaScore
    :return: List of all events(matches) for the given league/season
    """
    season_year = LeaguesModel.get_league_year(league_name=league)
    collection = DBConnection.create_events_connection(app_link)
    documents = collection.find({
        'tournament_name': SofaScoreTournamentModel[league],
        'season_year': season_year
    }).sort('start_time')
    events = []
    async for doc in documents:
        events.append(doc)

    return events
Пример #9
0
async def events_by_round_id(app_link: AppLinkModel, league: LeaguesModel, league_round_id: int):
    """
        Get events(matches) by Country, league, year for especific round based on its id
    :param league_round_id:  Round number
    :param app_link: Country
    :param league: league name from SofaScore
    :param league_round_id: round id number
    :return: List of matches for given league/year/round
    """
    season_year = LeaguesModel.get_league_year(league_name=league)
    collection = DBConnection.create_events_connection(app_link)
    documents = collection.find({
        'tournament_name': SofaScoreTournamentModel[league],
        'season_year': season_year,
        'round': league_round_id
    }).sort('start_time')
    events = []
    async for doc in documents:
        events.append(doc)

    return events
Пример #10
0
async def root(app_link: AppLinkModel, league: str):
    """
        Get the list of clubs based on given country and league
    :param app_link: Country name
    :param league: League name
    :return: List of football clubs
    """
    collection = DBConnection.create_teams_connection(app_link)
    if app_link.value == 'brazil' or app_link.value == 'espana':
        league_name = league
    elif league == "postnord":
        league_name = "PostNord"
    else:
        league_name = league.title()

    documents = collection.find({"league": league_name})
    teams = []
    async for doc in documents:
        teams.append(doc)

    return teams