diff --git a/sen2chain/download_eodag.py b/sen2chain/download_eodag.py index cc9dc5b4b22eeff31f4719df0d64f2573d6a9927..dbe9752f69689f79c97b054a4747cb4a8ab9ea8b 100644 --- a/sen2chain/download_eodag.py +++ b/sen2chain/download_eodag.py @@ -55,13 +55,20 @@ class S2cEodag: def search( self, - productType = "S2_MSI_L1C", + productType: str = "L1C", start: str = "2015-01-01", end: str = "9999-01-01", ): + if productType == "L1C": + self.productType = "S2_MSI_L1C" + outputs_prefix = Path(Config().get("l1c_path")) / self.name + elif productType == "L2A": + self.productType = "S2_MSI_L2A" + outputs_prefix = Path(Config().get("l2a_path")) / self.name + default_search_criteria = dict( - productType = productType, + productType = self.productType, start = start, end = end ) @@ -71,11 +78,56 @@ class S2cEodag: **default_search_criteria ) - logger.info("{} products were found given the above search criteria".format(len(self.products))) - logger.info(self.products) - logger.info([p.properties["storageStatus"] for p in self.products]) + #### Vériffier ici si le produit existe déjà en local + # ~ logger.info(outputs_prefix) + + for p in self.products: + + + # ~ logger.info("location: {}".format(p.location)) + if (outputs_prefix / (p.properties["title"] + ".SAFE")).exists(): + p.location = "file://" + str(outputs_prefix / (p.properties["title"] + ".SAFE")) + logger.info("Product {} locally present ".format(p.properties["title"])) + else: + logger.info("Product {} locally absent ".format(p.properties["title"])) + # ~ logger.info("location: {}".format(p.location)) + + # ~ logger.info("{} products were found given the above search criteria".format(len(self.products))) + # ~ logger.info(self.products) + # ~ logger.info([p.properties["storageStatus"] for p in self.products]) - logger.info("{} products were found given the above search criteria".format(len(self.products))) - logger.info("{} products were found given the above search criteria, online".format(len(self.products.filter_online()))) + # ~ logger.info("{} products were found given the above search criteria".format(len(self.products))) + # ~ logger.info("{} products were found given the above search criteria, online".format(len(self.products.filter_online()))) + def download( + self, + product_id, + outputs_prefix: str = None, + extract: bool = True, + delete_archive: bool = True, + ): + ######### faudrait ici récupérer le type de produit L1C/L2A du nom du product_id et adapter le dossier en conséquence + if not outputs_prefix: + if self.productType == "S2_MSI_L1C": + root_path = "l1c_path" + elif self.productType == "S2_MSI_L2A": + root_path = "l2a_path" + outputs_prefix = str(Path(Config().get(root_path)) / self.name) + ########## faudrait aussi mettre une condition sur le online + ########## et si offline supprimer les retry + downloaded_path = self.dag.download( + product_id, + outputs_prefix = outputs_prefix, + extract = extract, + delete_archive = delete_archive, + ) + + if Path(downloaded_path).stem == Path(downloaded_path).parent.stem: + upper_location = Path(downloaded_path).parent.parent / Path(downloaded_path).name + Path(downloaded_path).replace(upper_location) + product_id.location = "file://" + str(upper_location) + Path(downloaded_path).parent.rmdir() + logger.info("Moving up SAVE file") + +