fix #10 options pour les répertoires de résultats et d'archive
This commit is contained in:
parent
55d61164b2
commit
4431913f6e
11
README.md
11
README.md
@ -11,7 +11,7 @@ Un géocodage inverse permet de transformer latitude et longitude en adresses.
|
|||||||
|
|
||||||
## Options
|
## Options
|
||||||
### Zone géographique
|
### Zone géographique
|
||||||
`-z, --zone,` définit la zone cible du script, par défaut le Puy-de-Dôme.
|
`-z, --zone`, définit la zone cible du script, par défaut le Puy-de-Dôme.
|
||||||
L'identifiant des objets s'obtient depuis la carte openstreetmap.org :
|
L'identifiant des objets s'obtient depuis la carte openstreetmap.org :
|
||||||
- clic-droit dans la zone concernée
|
- clic-droit dans la zone concernée
|
||||||
- interroger les objets
|
- interroger les objets
|
||||||
@ -30,6 +30,15 @@ Examples :
|
|||||||
### Log
|
### Log
|
||||||
`-l, --log-level`, choisir le niveau de log (INFO par défaut)
|
`-l, --log-level`, choisir le niveau de log (INFO par défaut)
|
||||||
|
|
||||||
|
### Dossiers de résultats et d'archivage
|
||||||
|
`-r, --dossier-resultats`, pour indiquer le dossier d'enregistrement des JSON et ods (par défaut `resultats/`)
|
||||||
|
|
||||||
|
`-a, --dossier-archive`, pour indiquer le dossier d'archivage des JSON et ods (par défaut `resultats/archives/`). L'archivage crée un sous-dossier daté de la date des fichiers à archiver.
|
||||||
|
|
||||||
|
Ces chemins sont relatifs à `rdoo.py`, il est possible de passer des chemins absolus comme `/home/user/rdoo/archives/`. Attention à ne pas oublier le `/` final !
|
||||||
|
|
||||||
|
Il est possible de ne pas archiver en passant l'argument `-na, --no-archive`.
|
||||||
|
|
||||||
## Inspirations / ressources :
|
## Inspirations / ressources :
|
||||||
### urls ressources
|
### urls ressources
|
||||||
- https://towardsdatascience.com/loading-data-from-openstreetmap-with-python-and-the-overpass-api-513882a27fd0
|
- https://towardsdatascience.com/loading-data-from-openstreetmap-with-python-and-the-overpass-api-513882a27fd0
|
||||||
|
@ -36,12 +36,12 @@ class Utils:
|
|||||||
|
|
||||||
overpass_url: str
|
overpass_url: str
|
||||||
geo_api_url: str
|
geo_api_url: str
|
||||||
dossier_sauvegarde: str
|
dossier_resultats: str
|
||||||
|
|
||||||
def __init__(self, overpass_url, geo_api_url, dossier_sauvegarde):
|
def __init__(self, overpass_url, geo_api_url, dossier_resultats):
|
||||||
self.overpass_url = overpass_url
|
self.overpass_url = overpass_url
|
||||||
self.geo_api_url = geo_api_url
|
self.geo_api_url = geo_api_url
|
||||||
self.dossier_sauvegarde = dossier_sauvegarde
|
self.dossier_resultats = dossier_resultats
|
||||||
|
|
||||||
def save_as_ods(self, fields, data, nom_req, ods_data_sheet=OrderedDict()):
|
def save_as_ods(self, fields, data, nom_req, ods_data_sheet=OrderedDict()):
|
||||||
"""Sauvegarde de data dans un classeur ods"""
|
"""Sauvegarde de data dans un classeur ods"""
|
||||||
@ -71,14 +71,14 @@ class Utils:
|
|||||||
|
|
||||||
ods_data_sheet.update({f"{nom_req}": ods_data})
|
ods_data_sheet.update({f"{nom_req}": ods_data})
|
||||||
|
|
||||||
save_data(self.dossier_sauvegarde + "resultats.ods", ods_data_sheet)
|
save_data(self.dossier_resultats + "resultats.ods", ods_data_sheet)
|
||||||
|
|
||||||
logging.info("Sauvegarde résultats format ODS")
|
logging.info("Sauvegarde résultats format ODS")
|
||||||
|
|
||||||
def save_as_json(self, export_json, nom_req):
|
def save_as_json(self, export_json, nom_req):
|
||||||
"""Enregistrement du JSON"""
|
"""Enregistrement du JSON"""
|
||||||
|
|
||||||
json_file = open(self.dossier_sauvegarde + nom_req + ".json", "w")
|
json_file = open(self.dossier_resultats + nom_req + ".json", "w")
|
||||||
json_file.write(json.dumps(export_json))
|
json_file.write(json.dumps(export_json))
|
||||||
json_file.close()
|
json_file.close()
|
||||||
|
|
||||||
@ -233,23 +233,22 @@ class Utils:
|
|||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def archivage(self):
|
def archivage(self, dossier_archive):
|
||||||
"""Archivage des données précédentes"""
|
"""Archivage des données précédentes"""
|
||||||
|
|
||||||
fichier = pathlib.Path(self.dossier_sauvegarde + "resultats.ods")
|
fichier = pathlib.Path(self.dossier_resultats + "resultats.ods")
|
||||||
|
|
||||||
if not fichier.exists():
|
if not fichier.exists():
|
||||||
return
|
return
|
||||||
|
|
||||||
date_fichier = datetime.date.fromtimestamp(fichier.stat().st_ctime)
|
date_fichier = datetime.date.fromtimestamp(fichier.stat().st_ctime)
|
||||||
os.makedirs(self.dossier_sauvegarde + str(date_fichier), exist_ok=True)
|
os.makedirs(dossier_archive + str(date_fichier), exist_ok=True)
|
||||||
|
|
||||||
# pylint: disable=W0106
|
# pylint: disable=W0106
|
||||||
[
|
[
|
||||||
shutil.move(
|
shutil.move(
|
||||||
self.dossier_sauvegarde + file,
|
self.dossier_resultats + file, dossier_archive + str(date_fichier)
|
||||||
self.dossier_sauvegarde + str(datetime.date.today()),
|
|
||||||
)
|
)
|
||||||
for file in os.listdir(self.dossier_sauvegarde)
|
for file in os.listdir(self.dossier_resultats)
|
||||||
if not os.path.isdir(self.dossier_sauvegarde + file)
|
if not os.path.isdir(self.dossier_resultats + file)
|
||||||
]
|
]
|
||||||
|
33
rdoo.py
33
rdoo.py
@ -37,7 +37,6 @@ from osm_vc63.utils import Utils
|
|||||||
|
|
||||||
OVERPASS_URL = "http://overpass-api.de/api/interpreter"
|
OVERPASS_URL = "http://overpass-api.de/api/interpreter"
|
||||||
GEO_API_URL = "https://api-adresse.data.gouv.fr"
|
GEO_API_URL = "https://api-adresse.data.gouv.fr"
|
||||||
DOSSIER_SAUVEGARDE = "resultats/"
|
|
||||||
|
|
||||||
# nombre maxi de retries quand echec API
|
# nombre maxi de retries quand echec API
|
||||||
MAX_RETRY = 4
|
MAX_RETRY = 4
|
||||||
@ -106,6 +105,31 @@ def init_argparse() -> argparse.ArgumentParser:
|
|||||||
"-l", "--log-level", type=str, help="Définir le niveau de log.", default="INFO"
|
"-l", "--log-level", type=str, help="Définir le niveau de log.", default="INFO"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"-r",
|
||||||
|
"--dossier-resultats",
|
||||||
|
type=str,
|
||||||
|
help="Définir le dossier d'archive",
|
||||||
|
default="resultats/",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"-a",
|
||||||
|
"--dossier-archive",
|
||||||
|
type=str,
|
||||||
|
help="Définir le dossier d'archive",
|
||||||
|
default="resultats/archives/",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"-na",
|
||||||
|
"--no-archivage",
|
||||||
|
dest="archivage",
|
||||||
|
action="store_false",
|
||||||
|
help="Désactiver l'archivage'",
|
||||||
|
)
|
||||||
|
parser.set_defaults(archivage=True)
|
||||||
|
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
@ -121,9 +145,10 @@ def main():
|
|||||||
handlers=[logging.FileHandler("rdoo.log"), logging.StreamHandler(sys.stdout)],
|
handlers=[logging.FileHandler("rdoo.log"), logging.StreamHandler(sys.stdout)],
|
||||||
)
|
)
|
||||||
|
|
||||||
utils = Utils(OVERPASS_URL, GEO_API_URL, DOSSIER_SAUVEGARDE)
|
utils = Utils(OVERPASS_URL, GEO_API_URL, args.dossier_resultats)
|
||||||
|
|
||||||
utils.archivage()
|
if args.archivage:
|
||||||
|
utils.archivage(args.dossier_archive)
|
||||||
|
|
||||||
logging.info("##### Nouvelle récupération ######")
|
logging.info("##### Nouvelle récupération ######")
|
||||||
|
|
||||||
@ -152,7 +177,7 @@ def main():
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Sauvegarde
|
# Sauvegarde
|
||||||
os.makedirs(DOSSIER_SAUVEGARDE, exist_ok=True)
|
os.makedirs(args.dossier_resultats, exist_ok=True)
|
||||||
export_json = utils.nettoyage_json_pour_umap(data, req.champs)
|
export_json = utils.nettoyage_json_pour_umap(data, req.champs)
|
||||||
|
|
||||||
utils.save_as_json(export_json, req.nom)
|
utils.save_as_json(export_json, req.nom)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user