forked from Olav63/outils_OSM
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
|
||||
### 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 :
|
||||
- clic-droit dans la zone concernée
|
||||
- interroger les objets
|
||||
@ -30,6 +30,15 @@ Examples :
|
||||
### Log
|
||||
`-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 :
|
||||
### urls ressources
|
||||
- https://towardsdatascience.com/loading-data-from-openstreetmap-with-python-and-the-overpass-api-513882a27fd0
|
||||
|
@ -36,12 +36,12 @@ class Utils:
|
||||
|
||||
overpass_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.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()):
|
||||
"""Sauvegarde de data dans un classeur ods"""
|
||||
@ -71,14 +71,14 @@ class Utils:
|
||||
|
||||
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")
|
||||
|
||||
def save_as_json(self, export_json, nom_req):
|
||||
"""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.close()
|
||||
|
||||
@ -233,23 +233,22 @@ class Utils:
|
||||
|
||||
return data
|
||||
|
||||
def archivage(self):
|
||||
def archivage(self, dossier_archive):
|
||||
"""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():
|
||||
return
|
||||
|
||||
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
|
||||
[
|
||||
shutil.move(
|
||||
self.dossier_sauvegarde + file,
|
||||
self.dossier_sauvegarde + str(datetime.date.today()),
|
||||
self.dossier_resultats + file, dossier_archive + str(date_fichier)
|
||||
)
|
||||
for file in os.listdir(self.dossier_sauvegarde)
|
||||
if not os.path.isdir(self.dossier_sauvegarde + file)
|
||||
for file in os.listdir(self.dossier_resultats)
|
||||
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"
|
||||
GEO_API_URL = "https://api-adresse.data.gouv.fr"
|
||||
DOSSIER_SAUVEGARDE = "resultats/"
|
||||
|
||||
# nombre maxi de retries quand echec API
|
||||
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"
|
||||
)
|
||||
|
||||
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
|
||||
|
||||
|
||||
@ -121,9 +145,10 @@ def main():
|
||||
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 ######")
|
||||
|
||||
@ -152,7 +177,7 @@ def main():
|
||||
)
|
||||
|
||||
# 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)
|
||||
|
||||
utils.save_as_json(export_json, req.nom)
|
||||
|
Loading…
Reference in New Issue
Block a user