# ============================================================ # CONFIGURATION # ============================================================ $wordFile = "C:\Users\Phili\Desktop\Word Complet\hommesWord.odt" # Logo à uploader une seule fois $logoFile = "C:\Users\Phili\Desktop\Word Complet\logo.png" $ftpLogoUrl = "ftp://pcmouscron4@ftp.cluster1.easy-hebergement.net/logo.png" # FTP: remplis ces valeurs avant utilisation $ftpUrl = "ftp://pcmouscron4@ftp.cluster1.easy-hebergement.net/resultat.html" $ftpUser = "pcmouscron4" $ftpPass = "Jenake74120947" # Chemin vers LibreOffice $soffice = "C:\Program Files\LibreOffice\program\soffice.exe" Write-Host "Auto Update Script - Starting" Write-Host "Monitoring file changes... (Ctrl+C to stop)" $lastWrite = (Get-Item $wordFile).LastWriteTime # Flag pour vérifier si le logo a été uploadé $logoUploaded = $false # ============================================================ # FUNCTION : FTP UPLOAD # ============================================================ function Upload-FTPFile { param ( [string]$localFile, [string]$ftpUrl, [string]$user, [string]$pass ) Write-Host "Starting FTP upload: $localFile" try { $ftp = [System.Net.FtpWebRequest]::Create($ftpUrl) $ftp.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile $ftp.Credentials = New-Object System.Net.NetworkCredential($user, $pass) $ftp.UseBinary = $true $ftp.UsePassive = $true $bytes = [System.IO.File]::ReadAllBytes($localFile) $stream = $ftp.GetRequestStream() $stream.Write($bytes, 0, $bytes.Length) $stream.Close() Write-Host "Upload finished successfully" try { $size = (Get-Item $localFile).Length Write-Host "Uploaded file size: $size bytes" } catch { } } catch { Write-Host "FTP error: $($_.Exception.Message)" } } # ============================================================ # MAIN LOOP # ============================================================ while ($true) { Start-Sleep -Seconds 2 $currentWrite = (Get-Item $wordFile).LastWriteTime if ($currentWrite -gt $lastWrite) { Write-Host "File change detected: converting to HTML..." $lastWrite = $currentWrite # Conversion ODT -> HTML $outDir = Split-Path $wordFile $baseName = [System.IO.Path]::GetFileNameWithoutExtension($wordFile) $generatedHtml = Join-Path $outDir "$baseName.html" $arguments = "--headless --convert-to html --outdir `"$outDir`" `"$wordFile`"" Start-Process -FilePath $soffice -ArgumentList $arguments -Wait if (Test-Path $generatedHtml) { Write-Host "HTML file generated locally: $generatedHtml" try { # Lire le fichier HTML (encodage inconnu) $htmlContent = Get-Content $generatedHtml -Raw # Convertir en UTF-8 $bytes = [System.Text.Encoding]::Default.GetBytes($htmlContent) $htmlContent = [System.Text.Encoding]::UTF8.GetString($bytes) # ================== AJOUT DU STYLE + META ================== $htmlContent = $htmlContent -replace '(?i)', @' '@ # ================== AJOUT DU LOGO + HEADER ================== $headerHtml = "
`n`n

Resultats - AD Petanque Live

`n
`n
" $htmlContent = [regex]::Replace($htmlContent, '(?i)]*>', "`n$headerHtml") $htmlContent = [regex]::Replace($htmlContent, '(?i)', "
`n`n") # Sauvegarde UTF-8 Set-Content -Path $generatedHtml -Value $htmlContent -Encoding UTF8 } catch { Write-Host "Error processing HTML file: $($_.Exception.Message)" continue } # Upload du fichier resultat.html $ftpUploadFile = Join-Path $outDir "resultat.html" Copy-Item -Path $generatedHtml -Destination $ftpUploadFile -Force Upload-FTPFile -localFile $ftpUploadFile -ftpUrl $ftpUrl -user $ftpUser -pass $ftpPass # ============ UPLOAD DU LOGO UNE SEULE FOIS ============== if (-not $logoUploaded -and (Test-Path $logoFile)) { Write-Host "Uploading logo for the first time..." Upload-FTPFile -localFile $logoFile -ftpUrl $ftpLogoUrl -user $ftpUser -pass $ftpPass $logoUploaded = $true } Write-Host "Website updated successfully" } else { Write-Host "Conversion failed: HTML file not found." } Write-Host "" } }