Есть хорошие новости и есть плохие
@echo off
curl -u "ozo-inform:*******" -F "girls.html=@girls.html" "https://neocities.org/api/upload"
C:\Users\User\Documents>test.bat
cd Documents (пока барахло лежит там)
$BASE_DIR = $PWD.Path
$ROOT_DIR = "$BASE_DIR\OZO"
$OLD_LIST = "$BASE_DIR\old_filelist.txt"
$NEW_LIST = "$BASE_DIR\new_filelist.txt"
$COMMANDS_FILE = "$BASE_DIR\neocities_commands.bat"
$USER = "ozo-inform"
$PASS = "******"
$BASE_URL = "https://neocities.org/api"
"@echo off" | Out-File -FilePath $COMMANDS_FILE -Encoding utf8
"cd OZO" | Out-File -FilePath $COMMANDS_FILE -Append -Encoding utf8
# Удаляем старый new_list (если есть)
if (Test-Path $NEW_LIST) { Remove-Item $NEW_LIST }
# Рекурсивно собираем файлы с относительными путями
Get-ChildItem -Path $ROOT_DIR -Recurse -File | ForEach-Object {
$relativePath = $_.FullName.Substring($ROOT_DIR.Length + 1)
$lastWrite = $_.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")
"$lastWrite|$relativePath"
} | Out-File -FilePath $NEW_LIST -Encoding utf8
# Читаем списки файлов
$oldFiles = if (Test-Path $OLD_LIST) { Get-Content $OLD_LIST } else { @() }
$newFiles = Get-Content $NEW_LIST
# 1. Новые или изменённые файлы (загрузить)
foreach ($line in $newFiles) {
$mtime, $relativePath = $line -split "\|"
$excludedFiles = @("neocities_commands.txt", "old_filelist.txt", "new_filelist.txt")
if ($excludedFiles -contains $relativePath) { continue }
$oldLine = $oldFiles -like "*|$relativePath"
if (-not $oldLine -or ($oldLine -notlike "$mtime|*")) {
"curl -u `"$USER`:$PASS`" -F `"$relativePath=@$relativePath`" `"$BASE_URL/upload`""
| Out-File -FilePath $COMMANDS_FILE -Append -Encoding utf8
}
}
# 2. Удалённые файлы (команда на удаление)
foreach ($line in $oldFiles) {
$_, $relativePath = $line -split "\|"
if (-not ($newFiles -like "*|$relativePath")) {
$fileName = [System.IO.Path]::GetFileName($relativePath)
"curl -u `"$USER`:$PASS`" -d `"filenames[]=$fileName`" `"$BASE_URL/delete`""
| Out-File -FilePath $COMMANDS_FILE -Append -Encoding utf8
}
}
# Обновляем старый список
Move-Item -Path $NEW_LIST -Destination $OLD_LIST -Force
Write-Host "commands saved in $COMMANDS_FILE"
"cd .." | Out-File -FilePath $COMMANDS_FILE -Append -Encoding utf8
powershell -ExecutionPolicy Bypass -File up2.ps1