Aller au contenu

GeoNetwork

GeoNetwork : GN_API

Créez directement le client pour configurer les options propres à GeoNetwork :

from geOrchestra.meta_apis import GN_API

server = "https://demo.georchestra.org"
username = "testadmin"
password = "testadmin"

gn = GN_API(
    server,
    username,
    password,
    verifytls=True,
    prefix_gn_url="/geonetwork",
    xsrf_via_get=False,
)

La vérification des certificats TLS est activée par défaut. xsrf_via_get=True utilise /srv/api/me ; par défaut, le client utilise l’ancien endpoint /srv/fre/info?type=me pour obtenir le cookie XSRF.

Exemples

Les exemples suivants proviennent des blocs __main__ et des commentaires des sources.

Ajouter un mot-clé de thésaurus à un fichier de métadonnées et le téléverser

from geOrchestra.meta_apis import GN_API, Meta_manipulation

gn = GN_API("https://demo.georchestra.org", "testadmin", "testadmin", verifytls=False)

with open("sample_meta.xml") as f:
    metadata = f.read()

metadata = Meta_manipulation.add_thesaurus(
    metadata,
    title="Category",
    server="https://demo.georchestra.org",
    thesaurus_value="test1",
    local_thesaurus_name="exemple",
)

gn.upload_metadata(metadata=metadata, uuidprocessing="OVERWRITE", publish=True)

for thesaurus in gn.get_thesaurus_dict():
    print("Clé :", thesaurus["key"])

gn.closesession()

Lister les moissonnages « filesystem » actifs

all_harvests = geOr_api.gn.get_harvests()
filesystem = [h for h in all_harvests if h["@type"] == "filesystem"]
active = [h for h in filesystem if h["options"]["status"] == "active"]

Sauvegarder une fiche en conservant ses paramètres de partage

uuid = "4b5f8e1b-de37-47cd-9203-37a59f318b09"

zip_bytes = geOr_api.gn.get_metadata_mef_zip(uuid, with_related=True)
if zip_bytes:
    with open(f"{uuid}.zip", "wb") as f:
        f.write(zip_bytes)

# groupOwner et isPublishedToAll, à renvoyer lors d’un téléversement OVERWRITE
privileges = geOr_api.gn.get_record_privileges(uuid)

Modifier des fiches par lot à partir d’une sélection de recherche

Créez et alimentez d’abord une sélection, vérifiez son contenu, puis appliquez la modification :

results = geOr_api.gn.search_keyword("Mayotte")
uuids = [hit["_source"]["uuid"] for hit in results["hits"]["hits"]]

geOr_api.gn.feed_search_bucket("geoutilsbucket", uuids)
print(geOr_api.gn.get_search_bucket("geoutilsbucket"))

geOr_api.gn.batch_edit_search_and_replace(
    "geoutilsbucket", search="ancien texte", replace="nouveau texte", regex_flags="i"
)

geOr_api.gn.purge_search_bucket("geoutilsbucket")

Catalogue et métadonnées

Méthode Description Remarques sur le résultat
get_gnversion() Récupère les informations du site GeoNetwork et l’identifiant du nœud Objet JSON analysé
get_all_catalog(steps=100, portal=None) Récupère les UUID des fiches du catalogue avec la pagination CSW Liste d’UUID, ou None si aucune fiche ou en cas d’échec de la requête
get_metadataxml(uuid) Récupère le document XML d’une fiche Texte XML si la réponse HTTP est 200 ; sinon None
get_metadata_mef_zip(uuid, with_related=True, timeout=120) Télécharge une archive MEF ZIP Octets ZIP si la réponse HTTP est 200 ; sinon None
upload_metadata(metadata, groupid="100", uuidprocessing="GENERATEUUID", publish=False) Téléverse un objet fichier de métadonnées ; uuidprocessing accepte les valeurs GeoNetwork NOTHING, OVERWRITE et GENERATEUUID JSON analysé en cas de succès ; False en cas d’erreur gérée
get_record_privileges(uuid) Récupère le groupe propriétaire et la visibilité publique Dictionnaire en cas de succès ; sinon None

Thésaurus

Méthode Description
get_thesaurus_dict(thesaurus_key=None) Récupère les informations du thésaurus, éventuellement pour une clé donnée
searchin_thesaurus_dict(keyword="", thesaurus_key=False) Recherche des termes, éventuellement limitée à certaines clés de thésaurus
add_thesaurus_dict(filename) Téléverse un fichier de thésaurus ; l’implémentation est expérimentale et affiche les détails de la requête
delete_thesaurus_dict(name) Supprime un thésaurus par son nom ou sa clé

Moissonnage

Méthode Description Remarques sur le résultat
get_harvests() Liste les configurations de récolte JSON analysé en cas de succès ; "Error" sinon
make_harvest_local(uuid) Associe une récolte au nœud GeoNetwork local "Okay" ou False ; le délai d’attente peut atteindre une heure
delete_harvest(id) Supprime une configuration de récolte Réponse JSON analysée

Sélections de recherche et modifications par lot

Méthode Description
search_keyword(keywords) Recherche des fiches à l’aide de la requête GeoNetwork configurée
get_search_buckets() Liste les sélections de recherche enregistrées
get_search_bucket(name) Récupère une sélection par son nom
feed_search_bucket(name, uuid) Ajoute un ou plusieurs UUID de fiches à une sélection
purge_search_bucket(name, uuid=None) Retire les UUID indiqués ou supprime/efface la sélection si aucun UUID n’est fourni
batch_edit_search_and_replace(bucket_name, search, replace, regex_flags="", use_regex="false", update_date_stamp="false") Recherche et remplace des valeurs de métadonnées dans les fiches d’une sélection
batch_edit_xpath(bucket_name, xpath, value, update_timestamps=False, action="replace", condition="") Applique une modification par lot fondée sur XPath aux fiches d’une sélection

Les méthodes de modification par lot agissent sur les fiches d’une sélection de recherche. Vérifiez le contenu de la sélection avant d’appliquer des changements. Les réponses JSON sont renvoyées sans gestion d’erreur commune.

Appelez closesession() lorsque vous avez terminé avec un client GN_API autonome, afin de fermer sa session de requêtes.