def htmlfile_to_c2c(filename): html = TestParserMocked.read_file_to_html(filename) soup = BeautifulSoup(html, 'lxml') c2c = C2CParser(url=None) c2c.rawsoup = soup c2c.urlvoie = 'https://www.camptocamp.org/routes/171402/fr/presles-eliane-bim-bam-boum' return c2c
def test_filtre_doublon(self): logger.info("\nTest Filtrage des doublons...") liste_non_filtree = [ 'https://www.camptocamp.org/routes/53914', 'https://www.camptocamp.org/routes/53914' ] liste_filtree = C2CParser.filter_url(liste_non_filtree) self.assertCountEqual(liste_filtree, self.expected_liste)
def test_filtre_mauvais_baseurl(self): logger.info("\nTest Filtrage mauvais baseurl...") liste_non_filtree = [ 'https://www.camp.org/routes/53914', 'https://www.tocamp.org/routes/53914', 'https://www.camptocamp.org/routes/53914' ] liste_filtree = C2CParser.filter_url(liste_non_filtree) self.assertCountEqual(liste_filtree, self.expected_liste)
def process_list(self): """ Processing de tous les éléments d'une liste avec un thread par voie """ listaparser = C2CParser.init_with_list(self.userinput) with ThreadPoolExecutor(max_workers=nb_workers) as executor: # Start the load operations and mark each future with its URL future_to_url = {executor.submit(self.process_unit, url): url for url in listaparser} for future in as_completed(future_to_url): logger.info("Fin de traitement de {}".format(future_to_url[future]))
def process_unit(self, urlvoie): """ Processing unitaire d'une voie :param urlvoie: url de la voie à Parser :return: 0 si pas de parsing, 1 si parsing. """ urlmin = C2CParser.get_urlvoie(urlvoie) exist = InterfaceDAO.check_exists(urlmin, self.backends) # Si la voie n'existe pas ou si nous sommes en mode update if not exist or self.update: logger.info("Voie: {} existante id: {}, mode Update: {}".format(urlvoie, exist, self.update)) parser = C2CParser(urlmin) voie = Voie.from_c2cparser(parser) InterfaceDAO.persistance_voie(voie, self.backends) logger.info(voie) self.count_parsed = self.count_parsed + 1 voie = None return 1 else: logger.info("Voie déjà existante: {} et aucun reparsing demandé".format(urlmin)) return 0
def from_c2cparser(cls, c2cparser): """ Construction alternative de l'objet Voie à partir d'un parser camptocamp :param c2cparser: parser permettant de construire l'objet :return: objet Voie """ url = C2CParser.get_urlvoie(c2cparser.urlvoie) titre = c2cparser.get_titre() area = c2cparser.get_area() approche = c2cparser.get_approche() longueurs = c2cparser.get_details_longueurs() difficultes = c2cparser.get_alt_difficultes() commentaires = c2cparser.get_commentaires() cotations = c2cparser.get_cotations() sorties = c2cparser.get_outings() return cls(url, titre, area, approche, longueurs, difficultes, commentaires, cotations, sorties)
def test_get_urlvoie(self): inputurl = 'https://www.camptocamp.org/routes/171402/fr/presles-eliane-bim-bam-boum' expected = 'https://www.camptocamp.org/routes/171402' output = C2CParser.get_urlvoie(inputurl) self.assertEqual(output, expected)
def test_get_baseurl(self): logger.info("\nTest fonction get_baseurl()...") baseurl = C2CParser.get_baseurl( 'https://www.camptocamp.org/routes/53914') self.assertEqual(baseurl, self.expected_baseurl)
def setUpClass(cls): cls.expected_liste = ['https://www.camptocamp.org/routes/53914'] cls.expected_baseurl = C2CParser.baseurl cls.c2c = C2CParser('https://www.camptocamp.org/routes/171402')
def test_get_baseurl(self): baseurl = C2CParser.get_baseurl('https://www.camptocamp.org/routes/53914') self.assertEqual(baseurl, self.expected_baseurl)
def test_filtre_doublon(self): liste_non_filtree = ['https://www.camptocamp.org/routes/53914', 'https://www.camptocamp.org/routes/53914'] liste_filtree = C2CParser.filter_url(liste_non_filtree) self.assertCountEqual(liste_filtree, self.expected_liste)