Skip to content
Extraits de code Groupes Projets
Valider 662ccf62 rédigé par Bastien Le Querrec's avatar Bastien Le Querrec
Parcourir les fichiers

RAAspotter: ajoute la possibilité de ne pas analyser les RAA anciens

parent 1b697127
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -3,6 +3,7 @@ import subprocess ...@@ -3,6 +3,7 @@ import subprocess
import logging import logging
import requests import requests
import time import time
import datetime
from selenium import webdriver from selenium import webdriver
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
...@@ -25,7 +26,7 @@ logger = logging.getLogger(__name__) ...@@ -25,7 +26,7 @@ logger = logging.getLogger(__name__)
class RAAspotter: class RAAspotter:
class RAA: class RAA:
url = "" url = ""
date = "" date = datetime.datetime(1970, 1, 1)
name = "" name = ""
filename = "" filename = ""
sha256 = "" sha256 = ""
...@@ -56,6 +57,7 @@ class RAAspotter: ...@@ -56,6 +57,7 @@ class RAAspotter:
self.tor_enabled = False self.tor_enabled = False
self.tor_max_requests = 0 self.tor_max_requests = 0
self.tor_requests = 0 self.tor_requests = 0
self.not_before = datetime.datetime(1970, 1, 1)
self.update_user_agent(user_agent) self.update_user_agent(user_agent)
...@@ -230,8 +232,9 @@ class RAAspotter: ...@@ -230,8 +232,9 @@ class RAAspotter:
def parse_raa(self, elements, keywords): def parse_raa(self, elements, keywords):
for raa in elements: for raa in elements:
# Si le fichier n'a pas déjà été parsé, on le télécharge et on le parse # Si le fichier n'a pas déjà été parsé et qu'il est postérieur à la date maximale d'analyse,
if not os.path.isfile(f'{self.data_dir}{raa.get_sha256()}.txt'): # on le télécharge et on le parse
if (raa.date > self.not_before) and (not os.path.isfile(f'{self.data_dir}{raa.get_sha256()}.txt')):
logger.info(f'Nouveau fichier : {raa.name} ({raa.date}). URL : {raa.url}') logger.info(f'Nouveau fichier : {raa.name} ({raa.date}). URL : {raa.url}')
self.download_file(raa) self.download_file(raa)
self.ocr(raa, True) self.ocr(raa, True)
......
import datetime
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from urllib.parse import unquote from urllib.parse import unquote
...@@ -35,7 +37,7 @@ class RAAspotter_ppparis(RAAspotter): ...@@ -35,7 +37,7 @@ class RAAspotter_ppparis(RAAspotter):
url = a['href'] url = a['href']
name = a.find('span').get_text() name = a.find('span').get_text()
date = a.find('div', class_="field--type-datetime").get_text() date = datetime.datetime.strptime(a.find('div', class_="field--type-datetime").get_text().strip(), '%d/%m/%Y')
filename = unquote(url.split('/')[-1]) filename = unquote(url.split('/')[-1])
......
import os, sys import os, sys
import datetime
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from urllib.parse import unquote from urllib.parse import unquote
...@@ -44,7 +45,7 @@ class RAAspotter_pref13(RAAspotter): ...@@ -44,7 +45,7 @@ class RAAspotter_pref13(RAAspotter):
url = a['href'] url = a['href']
name = a.find('span').previous_sibling.replace('Télécharger ', '').strip() name = a.find('span').previous_sibling.replace('Télécharger ', '').strip()
date = a.find('span').get_text().split(' - ')[-1].strip() date = datetime.datetime.strptime(a.find('span').get_text().split(' - ')[-1].strip(), '%d/%m/%Y')
filename = unquote(url.split('/')[-1]) filename = unquote(url.split('/')[-1])
raa = RAAspotter.RAA(url, date, name, filename) raa = RAAspotter.RAA(url, date, name, filename)
......
import os, sys import os, sys
import datetime
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from urllib.parse import unquote from urllib.parse import unquote
...@@ -44,7 +45,7 @@ class RAAspotter_pref35(RAAspotter): ...@@ -44,7 +45,7 @@ class RAAspotter_pref35(RAAspotter):
url = a['href'] url = a['href']
name = a.find('span').previous_sibling.replace('Télécharger ', '').strip() name = a.find('span').previous_sibling.replace('Télécharger ', '').strip()
date = a.find('span').get_text().split(' - ')[-1].strip() date = datetime.datetime.strptime(a.find('span').get_text().split(' - ')[-1].strip(), '%d/%m/%Y')
filename = unquote(url.split('/')[-1]) filename = unquote(url.split('/')[-1])
raa = RAAspotter.RAA(url, date, name, filename) raa = RAAspotter.RAA(url, date, name, filename)
......
import os import os
import argparse import argparse
import logging import logging
import datetime
from RAAspotter import RAAspotter from RAAspotter import RAAspotter
from RAAspotter_ppparis import RAAspotter_ppparis from RAAspotter_ppparis import RAAspotter_ppparis
...@@ -25,10 +26,15 @@ if os.getenv('SMTP_SSL'): ...@@ -25,10 +26,15 @@ if os.getenv('SMTP_SSL'):
__SMTP_SSL = True __SMTP_SSL = True
else: else:
__SMTP_SSL = False __SMTP_SSL = False
if os.getenv('NOT_BEFORE'):
__NOT_BEFORE = datetime.datetime.strptime(os.getenv('NOT_BEFORE'), '%Y-%m-%d')
else:
__NOT_BEFORE = datetime.datetime(1970, 1, 1)
# Début du script # Début du script
parser = argparse.ArgumentParser(prog='ppparis.py', description='Télécharge les RAA de la Préfecture de police de Paris et recherche des mots-clés') parser = argparse.ArgumentParser(prog='ppparis.py', description='Télécharge les RAA de la Préfecture de police de Paris et recherche des mots-clés')
parser.add_argument('-k', '--keywords', action='store', help='liste des termes recherchés, séparés par une virgule (par défaut : vidéoprotection,caméras,captation,aéronef)') parser.add_argument('-k', '--keywords', action='store', help='liste des termes recherchés, séparés par une virgule (par défaut : vidéoprotection,caméras,captation,aéronef)')
parser.add_argument('--not-before', action='store', help='n\'analyse pas les RAA datant d\'avant la date indiquée, au format YYYY-MM-DD (par défaut : analyse tous les RAA)')
parser.add_argument('--smtp-hostname', action='store', help='nom d\'hôte SMTP (par défaut : localhost)') parser.add_argument('--smtp-hostname', action='store', help='nom d\'hôte SMTP (par défaut : localhost)')
parser.add_argument('--smtp-username', action='store', help='nom d\'utilisateur SMTP (par défaut : vide)') parser.add_argument('--smtp-username', action='store', help='nom d\'utilisateur SMTP (par défaut : vide)')
parser.add_argument('--smtp-password', action='store', help='mot de passe SMTP (par défaut : vide)') parser.add_argument('--smtp-password', action='store', help='mot de passe SMTP (par défaut : vide)')
...@@ -50,6 +56,9 @@ if args.vv or os.getenv('VVERBOSE'): ...@@ -50,6 +56,9 @@ if args.vv or os.getenv('VVERBOSE'):
if args.keywords: if args.keywords:
__KEYWORDS = args.keywords __KEYWORDS = args.keywords
if args.not_before:
__NOT_BEFORE = datetime.datetime.strptime(args.not_before, '%Y-%m-%d')
if args.smtp_hostname: if args.smtp_hostname:
__SMTP_HOSTNAME = args.smtp_hostname __SMTP_HOSTNAME = args.smtp_hostname
...@@ -78,6 +87,7 @@ if args.email_to: ...@@ -78,6 +87,7 @@ if args.email_to:
os.makedirs(__DATA_DIR, exist_ok=True) os.makedirs(__DATA_DIR, exist_ok=True)
raa_spotter = RAAspotter_ppparis(__DATA_DIR) raa_spotter = RAAspotter_ppparis(__DATA_DIR)
raa_spotter.not_before = __NOT_BEFORE
raa_spotter.get_raa(__KEYWORDS) raa_spotter.get_raa(__KEYWORDS)
if raa_spotter.found == True and __SMTP_HOSTNAME and __SMTP_USERNAME and __SMTP_PASSWORD and __SMTP_PORT and __EMAIL_TO and __EMAIL_FROM: if raa_spotter.found == True and __SMTP_HOSTNAME and __SMTP_USERNAME and __SMTP_PASSWORD and __SMTP_PORT and __EMAIL_TO and __EMAIL_FROM:
......
import os import os
import argparse import argparse
import logging import logging
import datetime
from RAAspotter import RAAspotter from RAAspotter import RAAspotter
from RAAspotter_pref13 import RAAspotter_pref13 from RAAspotter_pref13 import RAAspotter_pref13
...@@ -25,10 +26,15 @@ if os.getenv('SMTP_SSL'): ...@@ -25,10 +26,15 @@ if os.getenv('SMTP_SSL'):
__SMTP_SSL = True __SMTP_SSL = True
else: else:
__SMTP_SSL = False __SMTP_SSL = False
if os.getenv('NOT_BEFORE'):
__NOT_BEFORE = datetime.datetime.strptime(os.getenv('NOT_BEFORE'), '%Y-%m-%d')
else:
__NOT_BEFORE = datetime.datetime(1970, 1, 1)
# Début du script # Début du script
parser = argparse.ArgumentParser(prog='pref13.py', description='Télécharge les RAA de la préfecture des Bouches-du-Rhône et recherche des mots-clés') parser = argparse.ArgumentParser(prog='pref13.py', description='Télécharge les RAA de la préfecture des Bouches-du-Rhône et recherche des mots-clés')
parser.add_argument('-k', '--keywords', action='store', help='liste des termes recherchés, séparés par une virgule (par défaut : vidéoprotection,caméras,captation,aéronef)') parser.add_argument('-k', '--keywords', action='store', help='liste des termes recherchés, séparés par une virgule (par défaut : vidéoprotection,caméras,captation,aéronef)')
parser.add_argument('--not-before', action='store', help='n\'analyse pas les RAA datant d\'avant la date indiquée, au format YYYY-MM-DD (par défaut : analyse tous les RAA)')
parser.add_argument('--smtp-hostname', action='store', help='nom d\'hôte SMTP (par défaut : localhost)') parser.add_argument('--smtp-hostname', action='store', help='nom d\'hôte SMTP (par défaut : localhost)')
parser.add_argument('--smtp-username', action='store', help='nom d\'utilisateur SMTP (par défaut : vide)') parser.add_argument('--smtp-username', action='store', help='nom d\'utilisateur SMTP (par défaut : vide)')
parser.add_argument('--smtp-password', action='store', help='mot de passe SMTP (par défaut : vide)') parser.add_argument('--smtp-password', action='store', help='mot de passe SMTP (par défaut : vide)')
...@@ -50,6 +56,9 @@ if args.vv or os.getenv('VVERBOSE'): ...@@ -50,6 +56,9 @@ if args.vv or os.getenv('VVERBOSE'):
if args.keywords: if args.keywords:
__KEYWORDS = args.keywords __KEYWORDS = args.keywords
if args.not_before:
__NOT_BEFORE = datetime.datetime.strptime(args.not_before, '%Y-%m-%d')
if args.smtp_hostname: if args.smtp_hostname:
__SMTP_HOSTNAME = args.smtp_hostname __SMTP_HOSTNAME = args.smtp_hostname
...@@ -78,6 +87,7 @@ if args.email_to: ...@@ -78,6 +87,7 @@ if args.email_to:
os.makedirs(__DATA_DIR, exist_ok=True) os.makedirs(__DATA_DIR, exist_ok=True)
raa_spotter = RAAspotter_pref13(__DATA_DIR) raa_spotter = RAAspotter_pref13(__DATA_DIR)
raa_spotter.not_before = __NOT_BEFORE
raa_spotter.get_raa(__KEYWORDS) raa_spotter.get_raa(__KEYWORDS)
if raa_spotter.found == True and __SMTP_HOSTNAME and __SMTP_USERNAME and __SMTP_PASSWORD and __SMTP_PORT and __EMAIL_TO and __EMAIL_FROM: if raa_spotter.found == True and __SMTP_HOSTNAME and __SMTP_USERNAME and __SMTP_PASSWORD and __SMTP_PORT and __EMAIL_TO and __EMAIL_FROM:
......
import os import os
import argparse import argparse
import logging import logging
import datetime
from RAAspotter import RAAspotter from RAAspotter import RAAspotter
from RAAspotter_pref35 import RAAspotter_pref35 from RAAspotter_pref35 import RAAspotter_pref35
...@@ -25,10 +26,15 @@ if os.getenv('SMTP_SSL'): ...@@ -25,10 +26,15 @@ if os.getenv('SMTP_SSL'):
__SMTP_SSL = True __SMTP_SSL = True
else: else:
__SMTP_SSL = False __SMTP_SSL = False
if os.getenv('NOT_BEFORE'):
__NOT_BEFORE = datetime.datetime.strptime(os.getenv('NOT_BEFORE'), '%Y-%m-%d')
else:
__NOT_BEFORE = datetime.datetime(1970, 1, 1)
# Début du script # Début du script
parser = argparse.ArgumentParser(prog='pref35.py', description='Télécharge les RAA de la préfecture d\'Ille-et-Vilaine et recherche des mots-clés') parser = argparse.ArgumentParser(prog='pref35.py', description='Télécharge les RAA de la préfecture d\'Ille-et-Vilaine et recherche des mots-clés')
parser.add_argument('-k', '--keywords', action='store', help='liste des termes recherchés, séparés par une virgule (par défaut : vidéoprotection,caméras,captation,aéronef)') parser.add_argument('-k', '--keywords', action='store', help='liste des termes recherchés, séparés par une virgule (par défaut : vidéoprotection,caméras,captation,aéronef)')
parser.add_argument('--not-before', action='store', help='n\'analyse pas les RAA datant d\'avant la date indiquée, au format YYYY-MM-DD (par défaut : analyse tous les RAA)')
parser.add_argument('--smtp-hostname', action='store', help='nom d\'hôte SMTP (par défaut : localhost)') parser.add_argument('--smtp-hostname', action='store', help='nom d\'hôte SMTP (par défaut : localhost)')
parser.add_argument('--smtp-username', action='store', help='nom d\'utilisateur SMTP (par défaut : vide)') parser.add_argument('--smtp-username', action='store', help='nom d\'utilisateur SMTP (par défaut : vide)')
parser.add_argument('--smtp-password', action='store', help='mot de passe SMTP (par défaut : vide)') parser.add_argument('--smtp-password', action='store', help='mot de passe SMTP (par défaut : vide)')
...@@ -50,6 +56,9 @@ if args.vv or os.getenv('VVERBOSE'): ...@@ -50,6 +56,9 @@ if args.vv or os.getenv('VVERBOSE'):
if args.keywords: if args.keywords:
__KEYWORDS = args.keywords __KEYWORDS = args.keywords
if args.not_before:
__NOT_BEFORE = datetime.datetime.strptime(args.not_before, '%Y-%m-%d')
if args.smtp_hostname: if args.smtp_hostname:
__SMTP_HOSTNAME = args.smtp_hostname __SMTP_HOSTNAME = args.smtp_hostname
...@@ -78,6 +87,7 @@ if args.email_to: ...@@ -78,6 +87,7 @@ if args.email_to:
os.makedirs(__DATA_DIR, exist_ok=True) os.makedirs(__DATA_DIR, exist_ok=True)
raa_spotter = RAAspotter_pref35(__DATA_DIR) raa_spotter = RAAspotter_pref35(__DATA_DIR)
raa_spotter.not_before = __NOT_BEFORE
raa_spotter.get_raa(__KEYWORDS) raa_spotter.get_raa(__KEYWORDS)
if raa_spotter.found == True and __SMTP_HOSTNAME and __SMTP_USERNAME and __SMTP_PASSWORD and __SMTP_PORT and __EMAIL_TO and __EMAIL_FROM: if raa_spotter.found == True and __SMTP_HOSTNAME and __SMTP_USERNAME and __SMTP_PASSWORD and __SMTP_PORT and __EMAIL_TO and __EMAIL_FROM:
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter