def parse_competition(competition, sport="football", *sites):
    """
    Retourne les cotes d'une competition donnée pour un ou plusieurs sites de
    paris. Si aucun site n'est choisi, le parsing se fait sur l'ensemble des
    bookmakers reconnus par l'ARJEL
    """
    if sportsbetting.ABORT:
        raise sportsbetting.AbortException
    try:
        _id, formatted_name = get_id_formatted_competition_name(
            competition, sport)
    except TypeError:
        print("Competition inconnue")
        return
    print(formatted_name, *sites)
    if not sites:
        sites = [
            'betclic', 'betstars', 'bwin', 'france_pari', 'joa', 'netbet',
            'parionssport', 'pasinobet', 'pmu', 'unibet', 'winamax', 'zebet'
        ]
    res_parsing = {}
    for site in sites:
        if len(sites) > 1:
            print(site)
        url = get_competition_by_id(_id, site)
        try:
            if url:
                try:
                    res_parsing[site] = parse(site, url)
                except urllib3.exceptions.MaxRetryError:
                    selenium_init.DRIVER[site].quit()
                    print("Redémarrage de selenium")
                    selenium_init.start_selenium(site, timeout=20)
                    res_parsing[site] = parse(site, url)
                except sqlite3.OperationalError:
                    print(
                        "Erreur dans la base de données, redémarrage en cours")
                    res_parsing[site] = parse(site, url)
        except urllib.error.URLError:
            print("{} non accessible sur {} (délai écoulé)".format(
                competition, site))
        except KeyboardInterrupt:
            res_parsing[site] = {}
        except selenium.common.exceptions.TimeoutException:
            print("Element non trouvé par selenium ({} sur {})".format(
                competition, site))
        except sportsbetting.UnavailableCompetitionException:
            print("{} non disponible sur {}".format(competition, site))
        except socket.timeout:
            print("{} non accessible sur {} (timeout socket)".format(
                competition, site))
        except selenium.common.exceptions.StaleElementReferenceException:
            print("StaleElement non trouvé par selenium ({} sur {})".format(
                competition, site))
        except selenium.common.exceptions.WebDriverException:
            print("Connection closed ({} sur {})".format(competition, site))
    res = format_team_names(res_parsing, sport, competition)
    out = valid_odds(merge_dict_odds(res), sport)
    if inspect.currentframe().f_back.f_code.co_name != "<module>":
        return out
예제 #2
0
def parse_competition(competition, sport="football", *sites):
    """
    Retourne les cotes d'une competition donnée pour un ou plusieurs sites de
    paris. Si aucun site n'est choisi, le parsing se fait sur l'ensemble des
    bookmakers reconnus par l'ARJEL
    """
    try:
        _id, formatted_name = get_id_formatted_competition_name(competition, sport)
    except TypeError:
        print("Competition inconnue")
        return
    print(formatted_name, *sites)
    if not sites:
        sites = ['betclic', 'betstars', 'bwin', 'france_pari', 'joa', 'netbet',
                 'parionssport', 'pasinobet', 'pmu', 'unibet', 'winamax', 'zebet']
    selenium_sites = {"betstars", "bwin", "joa", "parionssport", "pasinobet", "unibet"}
    selenium_required = (inspect.currentframe().f_back.f_code.co_name == "<module>"
                         and (selenium_sites.intersection(sites) or not sites))
    if selenium_required:
        selenium_init.start_selenium()
    res_parsing = {}
    for site in sites:
        if len(sites) > 1:
            print(site)
        url = get_competition_by_id(_id, site)
        try:
            if url:
                try:
                    res_parsing[site] = parse(site, url)
                except urllib3.exceptions.MaxRetryError:
                    selenium_init.DRIVER.quit()
                    print("Redémarrage de selenium")
                    selenium_init.start_selenium()
                    res_parsing[site] = parse(site, url)
        except urllib.error.URLError:
            print("Site non accessible (délai écoulé)")
        except KeyboardInterrupt:
            res_parsing[site] = {}
        except selenium.common.exceptions.TimeoutException:
            print("Element non trouvé par selenium")
        except sportsbetting.UnavailableCompetitionException:
            print("Compétition non disponible")
    #         sportsbetting.PROGRESS += 100/(len(sites)*sportsbetting.SUBPROGRESS_LIMIT)
    if selenium_required:
        selenium_init.DRIVER.quit()
    #     if len(sites) > 1:
    res = format_team_names(res_parsing, sport)
    out = valid_odds(merge_dict_odds(res), sport)
    #     else:
    #         out = valid_odds(res_parsing[sites[0]], sport)
    if inspect.currentframe().f_back.f_code.co_name != "<module>":
        return out
    sportsbetting.ODDS[sport] = out
예제 #3
0
def parse_competition(competition, sport, *sites):
    """
    Retourne les cotes d'une competition donnée pour un ou plusieurs sites de
    paris. Si aucun site n'est choisi, le parsing se fait sur l'ensemble des
    bookmakers reconnus par l'ARJEL
    """
    if sb.ABORT:
        raise sb.AbortException
    try:
        _id = get_id_from_competition_name(competition, sport)
    except TypeError:
        print("Competition inconnue")
        return
    print(competition, *sites)
    if not sites:
        sites = [
            'betclic', 'betstars', 'bwin', 'france_pari', 'joa', 'netbet',
            'parionssport', 'pasinobet', 'pmu', 'unibet', 'winamax', 'zebet'
        ]
    res_parsing = {}
    for site in sites:
        if len(sites) > 1:
            print(site)
        url = get_competition_by_id(_id, site)
        try:
            if url:
                res_parsing[site] = parse(site, url)
            else:
                print("Pas d'url en base pour {} sur {}".format(
                    competition, site))
        except urllib.error.URLError:
            print("{} non accessible sur {} (délai écoulé)".format(
                competition, site))
        except KeyboardInterrupt:
            res_parsing[site] = {}
        except selenium.common.exceptions.TimeoutException:
            print("Element non trouvé par selenium ({} sur {})".format(
                competition, site))
        except sb.UnavailableCompetitionException:
            print("{} non disponible sur {}".format(competition, site))
        except socket.timeout:
            print("{} non accessible sur {} (timeout socket)".format(
                competition, site))
        except selenium.common.exceptions.StaleElementReferenceException:
            print("StaleElement non trouvé par selenium ({} sur {})".format(
                competition, site))
        except selenium.common.exceptions.WebDriverException:
            print("Connection closed ({} sur {})".format(competition, site))
    res = format_team_names(res_parsing, sport, competition)
    out = valid_odds(merge_dict_odds(res), sport)
    return out