import requests
import json
import time

def alt(longitude, latitude):
	if len(longitude) != len(latitude):
		print ("Les tableaux de longitude et de latitude doivent avoir la même taille.")
		return "error"
	total_elements = len(longitude)
	batch_size = 100

	start = 0
	res=[]
	i=0
	while start < total_elements:
		print(i,"/",total_elements/batch_size)
		i=i+1
		end = min(start + batch_size, total_elements)
	

		longitude_batch = longitude[start:end]
		latitude_batch = latitude[start:end]

		res=res+req(longitude_batch, latitude_batch, len(longitude_batch))

		# Mettez à jour l'indice de début pour le prochain lot
		start = end
	return res
		

def req(latitude, longitude,nb):
	longi=""
	latti=""
	for i in range(nb):
		if i > 0:
			longi += ","
			latti += ","
			
		longi += str(longitude[i])
		latti += str(latitude[i])
		
	
	url = f'https://api.open-meteo.com/v1/elevation?latitude={latti}&longitude={longi}'
	
	rd=0
	while(1):
		print(rd)
		rd=rd+1
		try:
			response = requests.get(url)
			
			if response.status_code == 200:
				try:
					data = json.loads(response.text)
				
					if 'elevation' in data:
						elevation = data['elevation']
						return elevation
					else:
						print("Impossible d'obtenir l'altitude pour les coordonnées spécifiées.")
				except:
					print(url)
					print(latitude,",",longitude)
					time.sleep(1)
			else:
				print(f"Erreur de réponse de l'API. Code de statut : {response.status_code}")
		except requests.exceptions.RequestException as e:
			print(f"Une erreur s'est produite lors de la requête : {e}")
