Initial commit

This commit is contained in:
Kirchik
2025-08-02 11:45:16 +02:00
parent a6a820aba2
commit a0ba937a46
1078 changed files with 7800 additions and 1115 deletions
+247
View File
@@ -0,0 +1,247 @@
#!/bin/bash
# Скрипт для быстрого добавления новых фотографий в S3
# Использовать ПОСЛЕ миграции для добавления новых изображений
set -e # Остановка при ошибке
# Загрузка конфигурации
source "$(dirname "$0")/config.sh"
# Проверка параметров
if [ $# -eq 0 ]; then
echo "Использование: $0 <путь_к_изображениям> [описание]"
echo ""
echo "Примеры:"
echo " $0 /path/to/new/photos"
echo " $0 /path/to/new/photos \"Фото из поездки в Сочи\""
echo " $0 ./new-photos"
echo ""
echo "Скрипт загружает изображения в S3 и создает готовый код для вставки в пост."
exit 1
fi
photos_path="$1"
description="${2:-Новые фотографии}"
# Проверка существования директории
if [ ! -d "$photos_path" ]; then
error_log "Директория не найдена: $photos_path"
exit 1
fi
log "Начало загрузки новых фотографий..."
log "Путь к фото: $photos_path"
log "Описание: $description"
# Подсчет изображений
image_files=$(find "$photos_path" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" -o -iname "*.webp" \) | sort)
total_images=$(echo "$image_files" | wc -l)
if [ $total_images -eq 0 ]; then
error_log "Изображения не найдены в $photos_path"
exit 1
fi
log "Найдено $total_images изображений для загрузки"
# Создание уникального префикса для этой партии фото
batch_prefix="batch_$(date +%Y%m%d_%H%M%S)"
uploaded_files=()
failed_files=()
# Функция для загрузки одного файла
upload_single_file() {
local file_path="$1"
local filename=$(basename "$file_path")
local extension="${filename##*.}"
# Создание уникального имени файла
local base_name="${filename%.*}"
local s3_filename="${base_name}_${batch_prefix}.${extension}"
local s3_key="images/$s3_filename"
# Определение MIME типа
local mime_type=""
case "$extension" in
jpg|jpeg) mime_type="image/jpeg" ;;
png) mime_type="image/png" ;;
gif) mime_type="image/gif" ;;
webp) mime_type="image/webp" ;;
*) mime_type="application/octet-stream" ;;
esac
# Загрузка файла
if aws s3 cp "$file_path" "s3://$S3_BUCKET/$s3_key" \
--content-type "$mime_type" \
--cache-control "max-age=31536000" \
--metadata-directive REPLACE; then
uploaded_files+=("$s3_filename")
log "✓ Загружено: $filename$s3_filename"
return 0
else
failed_files+=("$filename")
error_log "✗ Ошибка загрузки: $filename"
return 1
fi
}
# Загрузка всех файлов
log "Загрузка изображений в S3..."
uploaded_count=0
failed_count=0
echo "$image_files" | while read -r file; do
if [ -n "$file" ]; then
if upload_single_file "$file"; then
uploaded_count=$((uploaded_count + 1))
else
failed_count=$((failed_count + 1))
fi
fi
done
# Пересчет после загрузки
uploaded_count=${#uploaded_files[@]}
failed_count=${#failed_files[@]}
log "Загрузка завершена: $uploaded_count успешно, $failed_count ошибок"
# Проверка загруженных файлов
log "Проверка доступности загруженных файлов..."
accessible_files=()
for filename in "${uploaded_files[@]}"; do
file_url="$S3_BASE_URL/images/$filename"
if curl -s -I "$file_url" | grep -q "200 OK"; then
accessible_files+=("$filename")
log "✓ Доступен: $file_url"
else
error_log "✗ Недоступен: $file_url"
fi
done
# Создание кода для вставки в пост
if [ ${#accessible_files[@]} -gt 0 ]; then
log "Создание кода для вставки в пост..."
# Файл с готовым кодом
code_file="./migration-s3/ready-code-$(date +%Y%m%d_%H%M%S).md"
{
echo "# Готовый код для вставки в пост"
echo ""
echo "**Описание:** $description"
echo "**Дата:** $(date)"
echo "**Загружено изображений:** ${#accessible_files[@]}"
echo ""
echo "## Код для галереи"
echo ""
echo "\`\`\`markdown"
echo "{{< gallery >}}"
for filename in "${accessible_files[@]}"; do
echo "{{< figure src=\"$S3_BASE_URL/images/$filename\" >}}"
done
echo "{{< /gallery >}}"
echo "\`\`\`"
echo ""
echo "## Код для отдельных изображений"
echo ""
echo "\`\`\`markdown"
for filename in "${accessible_files[@]}"; do
echo "![Описание]($S3_BASE_URL/images/$filename)"
done
echo "\`\`\`"
echo ""
echo "## Код с figure shortcode"
echo ""
echo "\`\`\`markdown"
for filename in "${accessible_files[@]}"; do
echo "{{< figure src=\"$S3_BASE_URL/images/$filename\" alt=\"Описание\" >}}"
done
echo "\`\`\`"
echo ""
echo "## Прямые ссылки"
echo ""
for filename in "${accessible_files[@]}"; do
echo "- $S3_BASE_URL/images/$filename"
done
echo ""
echo "---"
echo "*Код создан автоматически скриптом add-new-photos.sh*"
} > "$code_file"
log "Готовый код создан: $code_file"
# Показать краткий пример кода
echo ""
echo "=== ГОТОВЫЙ КОД ДЛЯ ВСТАВКИ ==="
echo ""
echo "{{< gallery >}}"
for filename in "${accessible_files[@]}"; do
echo "{{< figure src=\"$S3_BASE_URL/images/$filename\" >}}"
done
echo "{{< /gallery >}}"
echo ""
echo "Полный код сохранен в: $code_file"
fi
# Создание отчета
report_file="./migration-s3/upload-report-$(date +%Y%m%d_%H%M%S).txt"
{
echo "Отчет о загрузке фотографий"
echo "=========================="
echo "Дата: $(date)"
echo "Путь к исходным файлам: $photos_path"
echo "Описание: $description"
echo "Batch prefix: $batch_prefix"
echo ""
echo "Статистика:"
echo "- Найдено изображений: $total_images"
echo "- Загружено успешно: $uploaded_count"
echo "- Ошибок загрузки: $failed_count"
echo "- Доступно через CDN: ${#accessible_files[@]}"
echo ""
echo "Загруженные файлы:"
for filename in "${uploaded_files[@]}"; do
echo "- $filename"
done
echo ""
if [ ${#failed_files[@]} -gt 0 ]; then
echo "Файлы с ошибками:"
for filename in "${failed_files[@]}"; do
echo "- $filename"
done
echo ""
fi
echo "Готовый код в: $code_file"
} > "$report_file"
# Финальная статистика
log ""
log "=== ИТОГОВАЯ СТАТИСТИКА ==="
log "Найдено изображений: $total_images"
log "Загружено в S3: $uploaded_count"
log "Доступно через CDN: ${#accessible_files[@]}"
log "Ошибок: $failed_count"
log ""
if [ ${#accessible_files[@]} -gt 0 ]; then
log "🎉 ЗАГРУЗКА ЗАВЕРШЕНА! Новые изображения доступны через S3."
log "Готовый код для вставки в пост: $code_file"
else
error_log "❌ НЕ УДАЛОСЬ ЗАГРУЗИТЬ ИЗОБРАЖЕНИЯ. Проверьте настройки S3."
exit 1
fi
# Инструкции для использования
echo ""
echo "=== ИНСТРУКЦИИ ==="
echo "1. Скопируйте код из файла: $code_file"
echo "2. Вставьте код в нужный пост в директории content/post/"
echo "3. Измените alt-тексты и описания по необходимости"
echo "4. Сохраните пост и соберите сайт"
echo ""
echo "Для добавления еще фотографий запустите:"
echo " $0 /path/to/more/photos \"Описание новых фото\""