diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..b9ef660 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,142 @@ +# .github/workflows/build.yml +name: πŸš€ Build & Release + +on: + # Запуск ΠΏΠΎ Ρ‚Π΅Π³Ρƒ: git tag v2.0 && git push origin v2.0 + push: + tags: + - 'v*' + # Π ΡƒΡ‡Π½ΠΎΠΉ запуск ΠΈΠ· Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Actions + 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: + # ───────────────────────────────────────── + # 1️⃣ Checkout ΠΊΠΎΠ΄Π° + # ───────────────────────────────────────── + - name: πŸ“₯ Checkout repository + uses: actions/checkout@v4 + + # ───────────────────────────────────────── + # 2️⃣ Установка Python + # ───────────────────────────────────────── + - name: 🐍 Setup Python 3.10 + uses: actions/setup-python@v5 + with: + python-version: '3.10' + cache: 'pip' + cache-dependency-path: 'requirements.txt' + + # ───────────────────────────────────────── + # 3️⃣ Установка MSVC Build Tools (для Nuitka) + # ───────────────────────────────────────── + - name: πŸ”§ Install MSVC Build Tools + uses: ilammy/msvc-dev-cmd@v1 + with: + toolset: 14.3 # VS 2022 + + # ───────────────────────────────────────── + # 4️⃣ Установка зависимостСй + # ───────────────────────────────────────── + - name: πŸ“¦ Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install nuitka + + # ───────────────────────────────────────── + # 5️⃣ Π‘Π±ΠΎΡ€ΠΊΠ° .exe Ρ‡Π΅Ρ€Π΅Π· Nuitka + # ───────────────────────────────────────── + - 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 ` + --windows-file-version=${{ github.ref_name || github.event.inputs.version }}.0 ` + --windows-product-version=${{ github.ref_name || github.event.inputs.version }}.0 ` + --windows-company-name="KromSystems" ` + --windows-product-name="Yandex Music Downloader" ` + --windows-file-description="Download tracks from Yandex Music in maximum quality" ` + --copyright="Β© 2026 KromSystems. Powered by J.A.R.V.I.S. core" ` + --windows-app-name="YandexMusicDownloader" ` + main.py + shell: pwsh + + # ───────────────────────────────────────── + # 6️⃣ ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² + # ───────────────────────────────────────── + - name: πŸ“¦ Prepare release assets + run: | + mkdir release-assets + Copy-Item "dist\YandexMusicDownloader.exe" "release-assets\" + Copy-Item "README.md" "release-assets\" + Copy-Item "LICENSE" "release-assets\" -ErrorAction SilentlyContinue + shell: pwsh + + # ───────────────────────────────────────── + # 7️⃣ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ GitHub Release ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° .exe + # ───────────────────────────────────────── + - 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. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° (откроСтся автоматичСски) + 4. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ для скачивания + + ### ⚠️ ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ + - ВрСбуСтся подписка ЯндСкс.Плюс для качСства FLAC + - ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС антивирус ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ΡŒ β€” это Π»ΠΎΠΆΠ½ΠΎΠ΅ срабатываниС Π½Π° Python-прилоТСния + - Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄: ${{ 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 }} + + # ───────────────────────────────────────── + # 8️⃣ Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ + # ───────────────────────────────────────── + - name: βœ… Build complete + run: | + Write-Host "πŸŽ‰ Π‘Π±ΠΎΡ€ΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°!" -ForegroundColor Green + Write-Host "πŸ“¦ Π€Π°ΠΉΠ»: YandexMusicDownloader.exe" -ForegroundColor Cyan + Write-Host "πŸ”— Π Π΅Π»ΠΈΠ·: ${{ github.server_url }}/${{ github.repository }}/releases" -ForegroundColor Yellow + shell: pwsh