Closed tgrandje closed 9 months ago
r = requests.Session()
url = "https://wxs.ign.fr/x02uy2aiwjo9bm8ce5plwqmr/telechargement/prepackage/ADMINEXPRESS_SHP_TERRITOIRES_PACK_2023-02-16$ADMIN-EXPRESS_3-1__SHP_LAMB93_FXX_2023-02-16/file/ADMIN-EXPRESS_3-1__SHP_LAMB93_FXX_2023-02-16.7z"
r = s.get(url, stream=True)
print(r.headers['content-md5'])
ça semble prometteur:
import os
import requests
from cartiflette.download import create_url_adminexpress, get_vectorfile_ign
url = create_url_adminexpress(
provider="IGN", year=2022, source="EXPRESS-COG-TERRITOIRE", field="reunion"
)
r = requests.Session()
r = r.get(url, stream=True)
md5 = r.headers['content-md5']
get_vectorfile_ign(
provider="IGN", year=2022, source="EXPRESS-COG-TERRITOIRE", field="reunion"
)
filename = [path for path in os.listdir("/tmp") if path.endswith(".7z")]
hashlib.md5(open(f"/tmp/{filename[0]}",'rb').read()).hexdigest() == r.headers['content-md5'] #True
Le check du md5 est du coup pas trop complexe à mettre en oeuvre
On pourrait envisager la stratégie suivante:
cartiflette
pour cette source@linogaliana Oui, j'ai commencé à regarder comment intégrer ça. Par contre, il me semble (de mémoire) qu'en l'état actuel, ton téléchargement se fait en local (tempfile) dans une fonction qui n'a pas accès au chemin du s3 -> il faut sans doute réécrire les fonctions avec ça à l'esprit pour éviter un téléchargement si on peut checker le md5 directement (et aussi de manière harmonisée avec un éventuel accès via l'API géoportail et/ou le FTP, qui n'ont pas accès au md5 de la même manière). Je te tiens au courant.
@linogaliana Je viens de contrôler ce que j'avais commencé à analyser :
@tgrandje , il me semble qu'on est bon maintenant sur cette issue, on peut la fermer ?
@tgrandje je ferme, tu ré-ouvres si tu as un état d'âme
Ajouter un contrôle du md5 avant de lancer un téléchargement