' Ce script récupère la photo du site Meteo-Serre-Chevalier
' et la stocke sous un nom formé de la date et heure de récupération

' URL du fichier à récupérer
FichierPSP = "https://s1.vision-environnement.com/live/modules/timelapse/capture/psp.jpg"
' Répertoire de stockage
dirPSP = "D:\Users\Public\Pictures\PSP\"
' Fichier où sera loggué les erreurs d'accès (if any...)
logErrorFile = "D:\Users\Laurent\Desktop\GetPSPphoto.Log"
' StickyAPIcmd : Emplacement du programme de création de Sticky (utilisé en cas d'erreur)
StickyAPIcmd = """C:\Program Files (x86)\Stickies\sticky.exe"" 127.0.0.1 "

'Formatage de la date et de l'heure
xDate = date
jour = Right(Cstr(day(xDate)+100),2)
mois = Right(Cstr(month(xDate)+100),2)
an = year(xDate)
xTime = time
heure = Right(Cstr(Hour(xTime)+100),2) ' 
min = Right(Cstr(Minute(xTime)+100),2)
sec = Right(Cstr(Second(xTime)+100),2)

' On range les photos dans un sous-répertoire "annuel"
subDirPSP = dirPSP & an & "\"
' Si le sous-répertoire annuel n'existe pas encore, on le crée
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
If not fso.FolderExists(subDirPSP) Then
	fso.CreateFolder(subDirPSP)
End If

' Le nom du fichier créé est formé de la date/heure du jour
nomPSP = an & mois & jour & "-" & heure & min & sec

' Adresse du fichier à sauvegarder
FichierLocal = subDirPSP & nomPSP & ".jpg"

' On crée un objet XMLHTTPRequest
Set XHR = CreateObject("Msxml2.ServerXMLHTTP")

' On ouvre la connection sur le serveur
On Error Resume Next
With XHR
'	.setTimeouts 15000, 15000, 15000, 15000
	.Open "GET", FichierPSP, False
	.Send  
End With

If Err.Number = 0 Then
	' On ne crée le fichier que si on a récupéré correctement les données
	On Error GoTo 0
	' On cree un objet de Streaming
	Set Stream = CreateObject("ADODB.Stream")
	' On parametre l'objet Stream et on copie le fichier en local
	With Stream
		.Type = 1
		.Open
		.Write XHR.ResponseBody
		.SaveToFile FichierLocal, 2
		.Close
	End With
	' On détruit l'objet Stream
	Set Stream = Nothing
Else
	' En cas d'erreur, on crée un Sticky sur le bureau pour notifier de l'erreur, 
	' et en plus une entrée dans un fichier sur le bureau (au cas où le Sticky ne serait pas correctement créé - ceinture et bretelle)
	logErrContent = an & "/" & mois & "/" & jour & " " & heure & ":" & min & ":" & sec & ";" & Err.Number & ";" & Err.Description
	StickyContent = an & "/" & mois & "/" & jour & " " & heure & ":" & min & ":" & sec & chr(13) & "Erreur GetPSPphoto.vbs " & chr(13) & chr(13) & "Err #" & Err.Number &chr(13) & Err.Description

	On Error GoTo 0
	Set f = fso.OpenTextFile(logErrorFile, 8, True)
	f.Write logErrContent
	f.Close
	
	Set WshShell = WScript.CreateObject("WScript.Shell") 
	WshShell.run StickyAPICmd & StickyContent
	Set WshShell = Nothing

End If

' On detruit les objets
Set XHR = Nothing
Set fso = Nothing
