diff --git a/.env.example b/.env.example index 41cb61c..0184ec7 100644 --- a/.env.example +++ b/.env.example @@ -34,10 +34,11 @@ PROCESSING_SEARCH_CONCURRENCY=2 OPENROUTER_API_KEY=sk-or-v1-your-api-key-here OPENROUTER_BASE_URL=https://openrouter.ai/api/v1 OPENROUTER_TIMEOUT=120s -OPENROUTER_MODEL=openai/gpt-4o-mini +OPENROUTER_MODEL=deepseek/deepseek-r1-0528:free OPENROUTER_MAX_RETRIES=3 OPENROUTER_RETRY_BACKOFF=1s OPENROUTER_RETRY_BACKOFF_MAX=8s +OPENROUTER_PROMPT=Ты — эксперт по библиографии русскоязычных аудиокниг. Тебе на вход подаётся автор и название аудиокниги, извлечённые автоматически из имени папки или ID3-тегов. Данные могут содержать артефакты: подчёркивания вместо пробелов, лишние пробелы, неверный регистр, транслит, опечатки, технические суффиксы (MP3, М4В, 128kbps), номера частей или срии в названии. Твоя задача — исправить имя автора и название книги до корректного вида: правильные ФИО автора (Фамилия Имя Отчество или Имя Фамилия), нормальное название без технических артефактов. Если данные уже корректны — верни их без изменений. Отвечай ТОЛЬКО валидным JSON без пояснений: {"author": "...", "title": "..."} # OPENROUTER_PROMPT= # Опционально. Если не задан — используется встроенный промпт. diff --git a/.gitignore b/.gitignore index f7589c4..21116a8 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ vendor/ # Конфигурация с секретами — не коммитить .env + +# Скомпилированные бинарники +build/ diff --git a/Makefile b/Makefile index a27b636..7bb7620 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ endif # Основные команды # ============================================================================ -.PHONY: all build run clean test lint deps tidy fmt vet help clean-results ensure-build-dir wiki-update +.PHONY: all build run clean test lint deps tidy fmt vet help clean-results ensure-build-dir wiki-update clean-env .PHONY: release-tag release-tag-delete ci-release ci-check release-local ## Сборка + тесты (цель по умолчанию при явном вызове make all) @@ -56,11 +56,21 @@ ensure-build-dir: @mkdir -p $(BUILD_DIR) endif +## Сброс переменных кросс-компиляции (GOOS/GOARCH/GOARM/GOMIPS) +## Запускать после ручной кросс-компиляции в PowerShell: make clean-env +ifeq ($(OS),Windows_NT) +clean-env: + Remove-Item Env:GOOS,Env:GOARCH,Env:GOARM,Env:GOMIPS -ErrorAction SilentlyContinue; Write-Host '>>> Переменные кросс-компиляции сброшены (GOOS/GOARCH/GOARM/GOMIPS)' +else +clean-env: + @unset GOOS GOARCH GOARM GOMIPS; echo '>>> Переменные кросс-компиляции сброшены (GOOS/GOARCH/GOARM/GOMIPS)' +endif + ## Сборка для текущей платформы ifeq ($(OS),Windows_NT) build: ensure-build-dir $(info >>> Сборка $(APP_NAME) для текущей платформы...) - $$env:GOOS='windows'; $$env:GOARCH='amd64'; Remove-Item Env:GOARM,Env:GOMIPS -ErrorAction SilentlyContinue; $(GO) build $(GOFLAGS) -ldflags '$(LDFLAGS)' -o $(BUILD_DIR)/$(APP_NAME).exe $(CMD_PATH) + $$env:GOOS=''; $$env:GOARCH=''; Remove-Item Env:GOARM,Env:GOMIPS -ErrorAction SilentlyContinue; $(GO) build $(GOFLAGS) -ldflags '$(LDFLAGS)' -o $(BUILD_DIR)/$(APP_NAME).exe $(CMD_PATH) $(info >>> Готово: $(BUILD_DIR)/$(APP_NAME).exe) else build: ensure-build-dir @@ -428,13 +438,13 @@ ifeq ($(OS),Windows_NT) release: build-all $(info >>> Создание релиза...) New-Item -ItemType Directory -Force '$(BUILD_DIR)\release' | Out-Null - Get-ChildItem '$(BUILD_DIR)' -File | Where-Object { $$_.Name -ne 'release' } | Copy-Item -Destination '$(BUILD_DIR)\release\' + Get-ChildItem '$(BUILD_DIR)' -File | Where-Object { $$_.Name -ne '.env' } | Copy-Item -Destination '$(BUILD_DIR)\release\' $(info >>> Готово: $(BUILD_DIR)/release/) else release: build-all $(info >>> Создание релиза...) @mkdir -p $(BUILD_DIR)/release - @find $(BUILD_DIR) -maxdepth 1 -type f -exec cp {} $(BUILD_DIR)/release/ \; + @find $(BUILD_DIR) -maxdepth 1 -type f -not -name '.env' -exec cp {} $(BUILD_DIR)/release/ \; $(info >>> Готово: $(BUILD_DIR)/release/) endif @@ -442,7 +452,7 @@ endif ifeq ($(OS),Windows_NT) checksum: release $(info >>> Генерация SHA256...) - Get-FileHash '$(BUILD_DIR)\release\*' | Select-Object Hash, @{N='File';E={$$_.Path | Split-Path -Leaf}} | Format-Table -AutoSize | Out-File -Encoding UTF8 '$(BUILD_DIR)\release\checksums-sha256.txt' + Remove-Item -ErrorAction SilentlyContinue '$(BUILD_DIR)\release\checksums-sha256.txt'; Get-ChildItem '$(BUILD_DIR)\release\' -File | Get-FileHash -Algorithm SHA256 | ForEach-Object { "$$($$_.Hash) $$(Split-Path $$_.Path -Leaf)" } | Out-File -Encoding UTF8 '$(BUILD_DIR)\release\checksums-sha256.txt' $(info >>> Готово: $(BUILD_DIR)/release/checksums-sha256.txt) else checksum: release diff --git a/build/.wiki-sync b/build/.wiki-sync deleted file mode 160000 index e424432..0000000 --- a/build/.wiki-sync +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e424432fdfd7f3e9da53bafa42b9c82dfdb0a9c3