# .github/workflows/build.yml name: 🚀 Build & Release on: push: tags: - 'v*' workflow_dispatch: inputs: version: description: 'Version tag (e.g., v2.0.1)' required: true default: 'v2.0.1' permissions: contents: write jobs: build-windows: name: 🪟 Build on Windows runs-on: windows-latest steps: - name: 📥 Checkout uses: actions/checkout@v4 - name: 🐍 Setup Python 3.10 uses: actions/setup-python@v5 with: python-version: '3.10' cache: 'pip' cache-dependency-path: 'requirements.txt' - name: 🔧 Setup MSVC environment uses: ilammy/msvc-dev-cmd@v1 with: arch: x64 - name: 📦 Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install nuitka # 🔍 Отладка: проверить версию Nuitka и доступные флаги - name: 🔍 Debug Nuitka run: | nuitka --version nuitka --help | findstr "windows" shell: pwsh # 🛠️ Сборка с ПРАВИЛЬНЫМИ флагами метаданных - name: 🛠️ Compile with Nuitka run: | nuitka ` --standalone ` --onefile ` --windows-console-mode=force ` --remove-output ` --assume-yes-for-downloads ` --include-package=yandex_music,aiohttp,aiofiles ` --nofollow-import-to=pytest,setuptools,pip,wheel ` --python-flag=no_site ` --output-filename=YandexMusicDownloader.exe ` --file-version=${{ github.ref_name || github.event.inputs.version }}.0 ` --product-version=${{ github.ref_name || github.event.inputs.version }}.0 ` --file-description="Download tracks from Yandex Music in maximum quality" ` --product-name="Yandex Music Downloader" ` --company-name="KromSystems" ` --copyright="© 2026 KromSystems. Powered by J.A.R.V.I.S. core" ` main.py shell: pwsh continue-on-error: false # Остановить сборку при ошибке компиляции # ✅ Проверка, что .exe создан - name: ✅ Verify executable run: | if (Test-Path "dist\YandexMusicDownloader.exe") { Write-Host "✓ YandexMusicDownloader.exe создан" -ForegroundColor Green Get-ChildItem "dist\YandexMusicDownloader.exe" | Select-Object Name, Length } else { Write-Error "✗ Файл не найден! Проверьте логи компиляции выше." exit 1 } shell: pwsh - name: 📦 Prepare release assets run: | mkdir release-assets -ErrorAction SilentlyContinue Copy-Item "dist\YandexMusicDownloader.exe" "release-assets\" Copy-Item "README.md" "release-assets\" Copy-Item "LICENSE" "release-assets\" -ErrorAction SilentlyContinue shell: pwsh - name: 🚀 Create Release uses: softprops/action-gh-release@v2 with: name: "🎵 Yandex Music Downloader ${{ github.ref_name || github.event.inputs.version }}" body: | ## 🤖 Yandex Music Downloader ${{ github.ref_name || github.event.inputs.version }} ### ✨ Особенности - ⚡ Асинхронная загрузка через `yandex-music-api` - 🎨 Интерфейс в стиле Тони Старка (StarkUI) - 🔐 Токен вводится вручную — не сохраняется - 🛠️ Скомпилировано через Nuitka ### 📥 Использование 1. Скачайте `YandexMusicDownloader.exe` 2. Запустите → получите токен (браузер откроется автоматически) 3. Вставьте токен и укажите папку ### ⚠️ Примечания - Требуется Яндекс.Плюс для FLAC - Ложные срабатывания антивирусов — отправляйте файл на проверку в Microsoft [Исходный код](${{ github.server_url }}/${{ github.repository }}) --- *Powered by J.A.R.V.I.S. core • © 2026 KromSystems* files: | release-assets/YandexMusicDownloader.exe release-assets/README.md release-assets/LICENSE draft: false prerelease: false make_latest: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: ✅ Build complete run: | Write-Host "🎉 Сборка завершена!" -ForegroundColor Green shell: pwsh