from html.parser import HTMLParser
import json


#Classe Pour extraire les données historique
class MyHTMLParser(HTMLParser):
	def __init__(self):
		HTMLParser.__init__(self)
		self.recording = 0
		self.data = []
		
	def handle_starttag(self, tag, attrs):
		if attrs == [('class', 'c-table c-table--generic c-table--generic c-shadow-overflow__table-fixed-column'), ('data-table-sorter', None)]:
			self.recording=1

	def handle_endtag(self, tag):
		if tag =="table":
			self.recording=0

	def handle_data(self, data):
		if self.recording:
			tmp=data.replace(" ","")
			tmp=tmp.replace("\n","")
			if tmp!='':
				self.data.append(tmp)
	
	def struct(self):
		dic = {}
		i=11;
		dic["1semaine"]=self.data[i:i+3]
		i+=4
		dic["1mois"]=self.data[i:i+3]
		i+=4
		dic["3mois"]=self.data[i:i+3]
		i+=4
		dic["6mois"]=self.data[i:i+3]
		i+=4
		dic["1an"]=self.data[i:i+3]
		i+=4
		dic["3ans"]=self.data[i:i+3]
		i+=4
		dic["5ans"]=self.data[i:i+3]
		i+=4
		dic["10ans"]=self.data[i:i+3]
		i+=4
		dic["MM20"]=self.data[i]
		i+=1
		dic["MM50"]=self.data[i]
		i+=1
		dic["MM100"]=self.data[i]
		i+=1
		dic["RSI14"]=self.data[i]
		i+=1		
		return dic
		
	def getData(self):
		return self.data

#Fonction pour extraire les donnée du graphique journalier
	def Daily(self,html):
		l1=html.find("var chart") #On cherche le debuy du JSON du graph
		l2=html.find("chart.data.amChartData);") # On cherche la fin du JSON du graph
		data=html[l1+29:l2+32-276] # A améliorrer ???

		data = json.loads(data) # On charge le Json
		
		idf = data["data"]["amChartConfig"]["graphs"][0]["id"]# On recupere l'identifiant du graphique

		data=data["data"]["amChartData"][idf]#On extrait du Json les valeurs du graph
		
		dic={}

		for i in data : #Pour chaque valeurs de la journée on met dans le dictionnaire
			heu = i["period"]
			val = i["value"]
			dic[heu]=val
			
		return dic
