Skip to content
Extraits de code Groupes Projets

Comparer les révisions

Les modifications sont affichées comme si la révision source était fusionnée avec la révision cible. En savoir plus sur la comparaison des révisions.

Source

Sélectionner le projet cible
No results found
Sélectionner une révision Git
  • main
  • pref19
2 résultats

Cible

Sélectionner le projet cible
  • skhwiz/Attrap
  • la-quadrature-du-net/Attrap
  • mverdeil/Attrap
  • ketsapiwiq/Attrap
  • Guinness/Attrap
  • precambrien/Attrap
  • kr1p/attrap-pref-12
  • foggyfrog/Attrap
  • astroidgritty/attrap-pref-84
  • Joseki/Attrap
  • davinov/Attrap
  • olpo/Attrap
  • kr1p/attrap-pi
  • kr1p/attrap-pref-46
  • maettellite/attrap-pref-01
  • m242/Attrap
  • multi/Attrap
17 résultats
Sélectionner une révision Git
  • feat/pref-88-vosges
  • main
2 résultats
Afficher les modifications
......@@ -18,14 +18,6 @@ pip3 install -r requirements.txt
Vous devez avoir installé les données `eng` et `fra` de Tesseract et le démon Tor.
### Configuration du démon Tor
Il faut que le port de contrôle 9051 du démon Tor soit ouvert pour permettre à Attrap de s'y connecter. Vous pouvez exécuter la ligne suivante pour faire cela :
```bash
sed -i '/^#ControlPort 9051/s/^#//' /etc/tor/torrc
```
## Utilisation
Pour lancer la récupération de toutes les administrations supportées :
......@@ -45,7 +37,7 @@ Les options suivantes peuvent être précisées, par un paramètre si l'utilitai
| CLI | Variable d'environnement | Signification | Valeur par défaut |
|---|---|---|---|
| `--keywords`, `-k` | `KEYWORDS` | Liste des mots-clés recherchés, séparés par une virgule. | Aucune |
| `--not-before` | `NOT_BEFORE` | Date (format YYYY-MM-DD) avant laquelle les RAA ne sont pas analysés. | `2024-01-01` |
| `--not-before` | `NOT_BEFORE` | Date (format relatif `1 week` ou `YYYY-MM-DD`) avant laquelle les RAA ne sont pas analysés. | `2024-01-01` |
| `--smtp-hostname` | `SMTP_HOSTNAME` | Nom d'hôte SMTP. | `localhost` |
| `--smtp-username` | `SMTP_USERNAME` | Nom d'utilisateur SMTP. | Aucun |
| `--smtp-password` | `SMTP_PASSWORD` | Mot de passe SMTP. | Aucun |
......@@ -60,38 +52,64 @@ Les options suivantes peuvent être précisées, par un paramètre si l'utilitai
| `-v` | `VERBOSE` | Si spécifié, relève le niveau de verbosité à INFO. | Non-spécifié |
| `-vv` | `VVERBOSE` | Si spécifié, relève le niveau de verbosité à DEBUG. | Non-spécifié |
Vous pouvez également activer le safe mode en spécifiant la variable d'environnement `SAFE_MODE`. Cela désactive Tor et limite les requêtes à une toutes les 30 secondes. Cette option ne doit être utilisée qu'en cas de blocage généralisé de Tor. Attention : avec le safe mode, la CI se connecte directement au serveur, et son IP risque d'être bloquée si trop de requêtes sont lancées. Pensez donc à limiter le nombre de jobs qui s'exécutent en parallèle si vous devez activer ce mode. Les requêtes via Selenium ne sont pas impactées par le safe mode.
## Administrations supportées
- Préfecture de police de Paris (identifiant : `ppparis`)
- Préfecture de l'Ain (identifiant : `pref01`)
- Préfecture de l'Aisne (identifiant : `pref02`)
- Préfecture de l'Allier (identifiant : `pref03`)
- Préfecture des Alpes-de-Haute-Provence (identifiant : `pref04`)
- Préfecture des Hautes-Alpes (identifiant : `pref05`)
- Préfecture des Alpes-Maritimes (identifiant : `pref06`)
- Préfecture de l'Ariège (identifiant : `pref09`)
- Préfecture de l'Aube (identifiant : `pref10`)
- Préfecture de l'Aude (identifiant : `pref11`)
- Préfecture des Bouches-du-Rhône (identifiant : `pref13`)
- Préfecture de la Corse-du-Sud (identifiant : `pref2a`)
- Préfecture de Haute-Corse (identifiant : `pref2b`)
- Préfecture du Doubs (identifiant : `pref25`)
- Préfecture du Finistère (identifiant : `pref29`)
- Prefecture du Gard (identifiant : `pref30`)
- Préfecture de la Haute-Garonne (identifiant : `pref31`)
- Préfecture de la Gironde (identifiant : `pref33`)
- Préfecture de l'Hérault (identifiant : `pref34`)
- Préfecture d'Ille-et-Vilaine (identifiant : `pref35`)
- Préfecture de l'Isère (identifiant : `pref38`)
- Préfecture du Jura (identifiant : `pref39`)
- Préfecture de la Loire (identifiant : `pref42`)
- Préfecture de la Loire-Atlantique (identifiant : `pref44`)
- Préfecture de Maine-et-Loire (identifiant : `pref49`)
- Préfecture de la Manche (identifiant : `pref50`)
- Préfecture de la Haute-Marne (identifiant : `pref52`)
- Préfecture de Meurthe-et-Moselle (identifiant : `pref54`)
- Préfecture de la Meuse (identifiant : `pref55`)
- Préfecture du Nord (identifiant : `pref59`)
- Préfecture de l'Orne (identifiant : `pref61`)
- Préfecture du Pas-de-Calais (identifiant : `pref62`)
- Préfecture du Puy-de-Dôme (identifiant : `pref63`)
- Préfecture des Pyrénées-Atlantiques (identifiant : `pref64`)
- Préfecture des Hautes-Pyrénées (identifiant : `pref65`)
- Préfecture des Pyrénées-Orientales (identifiant : `pref66`)
- Préfecture du Rhône (identifiant : `pref69`)
- Préfecture de la Savoie (identifiant : `pref73`)
- Préfecture de la Haute-Savoie (identifiant : `pref74`)
- Préfecture de Paris (identifiant : `pref75`)
- Préfecture de la Seine-Maritime (identifiant : `pref76`)
- Préfecture de Seine-et-Marne (identifiant : `pref77`)
- Préfecture de la Somme (identifiant : `pref80`)
- Préfecture du Tarn (identifiant : `pref81`)
- Préfecture du Var (identifiant : `pref83`)
- Préfecture de la Haute-Vienne (identifiant : `pref87`)
- Préfecture de l'Essonne (identifiant : `pref91`)
- Préfecture des Hauts-de-Seine (identifiant : `pref92`)
- Préfecture de Seine-Saint-Denis (identifiant : `pref93`)
- Préfecture du Val-de-Marne (identifiant : `pref94`)
- Préfecture de Mayotte (identifiant : `pref976`)
- Préfecture d'Île-de-France (identifiant : `prefIdf`)
- 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`)
## Contributions
......
......@@ -4,6 +4,7 @@ import os
import argparse
import logging
import datetime
import dateparser
import importlib
from Attrap import Attrap
......@@ -29,9 +30,13 @@ if os.getenv('SMTP_SSL'):
else:
__SMTP_SSL = False
if os.getenv('NOT_BEFORE'):
__NOT_BEFORE = datetime.datetime.strptime(
os.getenv('NOT_BEFORE'), '%Y-%m-%d'
)
try:
relative_date = dateparser.parse(os.getenv('NOT_BEFORE'))
__NOT_BEFORE = datetime.datetime(year=relative_date.year, month=relative_date.month, day=relative_date.day)
except Exception as exc:
__NOT_BEFORE = datetime.datetime.strptime(
os.getenv('NOT_BEFORE'), '%Y-%m-%d'
)
else:
__NOT_BEFORE = datetime.datetime(2024, 1, 1)
__MASTODON_ACCESS_TOKEN = os.getenv('MASTODON_ACCESS_TOKEN')
......@@ -40,20 +45,36 @@ __MASTODON_INSTANCE = os.getenv('MASTODON_INSTANCE')
# Liste des administrations supportées
available_administrations = [
'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',
'pref61',
'pref62',
'pref63',
'pref64',
......@@ -61,15 +82,22 @@ available_administrations = [
'pref66',
'pref69',
'pref73',
'pref74',
'pref75',
'pref76',
'pref77',
'pref80',
'pref81',
'pref83',
'pref87',
'pref91',
'pref92',
'pref93',
'pref94',
'pref976',
'prefIdf'
'prefbretagne',
'prefidf',
'prefpaca'
]
# Début du script
......@@ -166,7 +194,7 @@ parser.add_argument(
)
args = parser.parse_args()
if args.v or os.getenv('VERBOSE'):
if (args.v or os.getenv('VERBOSE')) and not args.vv and not os.getenv('VVERBOSE'):
logging.basicConfig(level=logging.INFO)
logging.getLogger("stem").setLevel(logging.WARNING)
......@@ -178,7 +206,11 @@ if args.keywords:
__KEYWORDS = args.keywords
if args.not_before:
__NOT_BEFORE = datetime.datetime.strptime(args.not_before, '%Y-%m-%d')
try:
relative_date = dateparser.parse(args.not_before)
__NOT_BEFORE = datetime.datetime(year=relative_date.year, month=relative_date.month, day=relative_date.day)
except Exception as exc:
__NOT_BEFORE = datetime.datetime.strptime(args.not_before, '%Y-%m-%d')
if args.smtp_hostname:
__SMTP_HOSTNAME = args.smtp_hostname
......
......@@ -30,8 +30,8 @@ pref16
pref17
pref18
pref19
pref2A
pref2B
pref2a
pref2b
pref21
pref22
pref23
......@@ -111,7 +111,9 @@ pref971
pref972
pref973
pref974
pref976"
pref976
prefidf
prefpaca"
if test -z "$s3_key" || test -z "$s3_secret" || test -z "$s3_host" || test -z "$s3_bucket" || test -z "$dest"; then
echo "Usage: ${0} <s3_key> <s3_secret> <s3_host> <s3_bucket> <dest>"
......
Fichier déplacé
#!/usr/bin/env python3
import argparse
import json
import os
import re
from urllib.parse import unquote
import hashlib
parser = argparse.ArgumentParser(
prog='./misc/fix-pref75-prefidf-url.py',
description='Met à jour les URL des RAA de Paris et d\'Idf'
)
parser.add_argument(
'--data-dir',
action='store',
help='dossier de données (par défaut: data/)'
)
parser.add_argument(
'--dry-run',
action='store_true',
help='ne modifie aucun fichier, affiche seulement les modifications nécessaires (par défaut: false)'
)
args = parser.parse_args()
if args.data_dir:
data_dir = args.data_dir
else:
data_dir = 'data/'
dry_run = args.dry_run
if data_dir.startswith('/'):
data_dir = os.path.abspath(data_dir)
else:
data_dir = os.path.abspath(os.path.dirname(os.path.abspath(__file__)) + '/../' + data_dir)
for administration in os.listdir(data_dir):
# On ne cherche que les dossiers prefidf et pref75
if administration == 'prefidf' or administration == 'pref75':
administration_path = os.path.abspath(data_dir + '/' + administration + '/raa/')
for raa in os.listdir(administration_path):
if raa.endswith('.json'):
raa_id = re.sub('\\.json$', '', raa)
fixed = False
raa_path = os.path.abspath(administration_path + '/' + raa)
txt_path = re.sub('\\.json$', '.txt', raa_path)
raa_file_read = open(raa_path, 'r')
raa_json = json.load(raa_file_read)
raa_file_read.close()
url = raa_json.get('url')
if url.startswith('https://www.prefectures-regions.gouv.fr/ile-de-france/ile-de-france/ile-de-france/irecontenu/telechargement/'):
raa_json['url'] = url.replace('https://www.prefectures-regions.gouv.fr/ile-de-france/ile-de-france/ile-de-france/irecontenu/telechargement/', 'https://www.prefectures-regions.gouv.fr/ile-de-france/irecontenu/telechargement/')
fixed_raa_json = {}
for key in raa_json:
fixed_raa_json[key] = raa_json[key]
fixed_raa_id = hashlib.sha256(unquote(raa_json['url']).encode('utf-8')).hexdigest()
fixed_raa_path = raa_path.replace(raa_id, fixed_raa_id)
fixed_txt_path = txt_path.replace(raa_id, fixed_raa_id)
print(f'{raa_id} -> {fixed_raa_id}:')
print(f" {raa_json['url']}")
print('')
if not dry_run:
raa_file_write = open(fixed_raa_path, 'w')
raa_file_write.write(json.dumps(fixed_raa_json))
raa_file_write.close()
os.remove(raa_path)
os.rename(txt_path, fixed_txt_path)
Ce diff est replié.
......@@ -30,8 +30,8 @@ pref16
pref17
pref18
pref19
pref2A
pref2B
pref2a
pref2b
pref21
pref22
pref23
......@@ -111,7 +111,9 @@ pref971
pref972
pref973
pref974
pref976"
pref976
prefidf
prefpaca"
if test -z "$s3_key" || test -z "$s3_secret" || test -z "$s3_host" || test -z "$s3_bucket" || test -z "$data"; then
echo "Usage: ${0} <s3_key> <s3_secret> <s3_host> <s3_bucket> <data>"
......
Fichier déplacé
......@@ -2,10 +2,10 @@ beautifulsoup4>=4.12.3
dateparser>=1.2.0
ftfy>=6.2.0
Mastodon.py>=1.8.1
ocrmypdf>=16.3.1
ocrmypdf<16.4.0
pycodestyle>=2.11.1
pypdf>=4.2.0
pytz>=2024.2
PyVirtualDisplay>=3.0
requests>=2.31.0
selenium>=4.19.0
stem>=1.8.2