diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2fb196ddaca1c194b16c155a2d0966df640303a4..151238ce6bb785bb3560e97cccbef80d4aa3eb50 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -334,6 +334,11 @@ test_pref976: PREF: "pref976" extends: .default_pref +test_prefbretagne: + variables: + PREF: "prefbretagne" + extends: .default_pref + test_prefidf: variables: PREF: "prefidf" diff --git a/Attrap_prefbretagne.py b/Attrap_prefbretagne.py new file mode 100644 index 0000000000000000000000000000000000000000..c3222db7b2bfb9d3c9d1ca34c153f413fd1d7f2d --- /dev/null +++ b/Attrap_prefbretagne.py @@ -0,0 +1,58 @@ +import datetime +import time + +from bs4 import BeautifulSoup +from urllib.parse import unquote + +from Attrap import Attrap + + +class Attrap_prefbretagne(Attrap): + + # Config + hostname = 'https://www.prefectures-regions.gouv.fr' + raa_page = f'{hostname}/bretagne/Documents-publications/Recueils-des-actes-administratifs/Recueil-des-actes-administratifs' + user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0' + full_name = 'Préfecture de la région Bretagne' + short_code = 'prefbretagne' + timezone = 'Europe/Paris' + + def __init__(self, data_dir): + super().__init__(data_dir, self.user_agent) + self.enable_tor(10) + self.set_sleep_time(10) + + def get_raa(self, keywords): + # page_content = self.get_page(self.raa_page, 'get').content + page_content = self.get_session(self.raa_page, 'main', 6) + elements = self.get_raa_elements(page_content) + + time.sleep(10) + + self.parse_raa(elements, keywords) + self.mailer() + + def get_raa_elements(self, page_content): + elements = [] + # On charge le parser + soup = BeautifulSoup(page_content, 'html.parser') + + # Pour chaque balise a, on regarde si c'est un PDF, et si oui on le parse + for a in soup.select('main div.container.main-container div.col-main article.article div.texte div a.link-download'): + if a.get('href') and a['href'].endswith('.pdf'): + if a['href'].startswith('/'): + url = f"{self.hostname}{a['href']}" + else: + url = a['href'] + url = unquote(url) + name = a.find('span').get_text().strip() + # On devine la date du RAA à partir du nom de fichier + guessed = Attrap.guess_date(name, '((?:[0-9]{2}|[0-9]{1})(?:er){0,1}[ _](?:[a-zéû]{3,9})[ _](?:[0-9]{4}|[0-9]{2}))') + if (guessed == datetime.datetime(9999, 1, 1, 0, 0)): + date = None + else: + date = guessed + + raa = Attrap.RAA(url, date, name, timezone=self.timezone) + elements.append(raa) + return elements diff --git a/Makefile b/Makefile index 41c149e67523c837edffe48f2facbcc7bf81203d..8744cf4fdd8e732657487a257f2f75be8e7f64e7 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -make: ppparis pref01 pref02 pref03 pref04 pref05 pref06 pref09 pref10 pref11 pref13 pref2a pref2b pref25 pref29 pref30 pref31 pref33 pref34 pref35 pref38 pref39 pref42 pref44 pref49 pref50 pref52 pref54 pref55 pref59 pref62 pref63 pref64 pref65 pref66 pref69 pref73 pref75 pref77 pref80 pref81 pref83 pref87 pref91 pref92 pref93 pref94 pref976 prefidf prefpaca +make: ppparis pref01 pref02 pref03 pref04 pref05 pref06 pref09 pref10 pref11 pref13 pref2a pref2b pref25 pref29 pref30 pref31 pref33 pref34 pref35 pref38 pref39 pref42 pref44 pref49 pref50 pref52 pref54 pref55 pref59 pref62 pref63 pref64 pref65 pref66 pref69 pref73 pref75 pref77 pref80 pref81 pref83 pref87 pref91 pref92 pref93 pref94 pref976 prefbretagne prefidf prefpaca ppparis: bin/python3 cli.py ppparis pref01: @@ -95,6 +95,8 @@ pref94: bin/python3 cli.py pref94 pref976: bin/python3 cli.py pref976 +prefbretagne: + bin/python3 cli.py prefbretagne prefidf: bin/python3 cli.py prefidf prefpaca: diff --git a/README.md b/README.md index 23e98a73864ad3e3001e00c59e439a89f4a9c3ba..88e4cc2bae3e99865540f4bd124a6f4ffce6125b 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,7 @@ Vous pouvez également activer le safe mode en spécifiant la variable d'environ - Préfecture de Seine-Saint-Denis (identifiant : `pref93`) - Préfecture du Val-de-Marne (identifiant : `pref94`) - Préfecture de Mayotte (identifiant : `pref976`) +- Préfecture de la région Bretagne (identifiant : `prefbretagne`) - Préfecture de la région Île-de-France (identifiant : `prefidf`) - Préfecture de la région Provence-Alpes-Côte-d'Azur (identifiant : `prefpaca`) diff --git a/cli.py b/cli.py index 421ce0d51d02d25c6d2b2d9628cccd3acb4e63f3..3d8adfae002575e181990261a194aed5a8a0a0f8 100755 --- a/cli.py +++ b/cli.py @@ -92,6 +92,7 @@ available_administrations = [ 'pref93', 'pref94', 'pref976', + 'prefbretagne', 'prefidf', 'prefpaca' ]