Files
yandex-music-downloader/.github/workflows/build.yml
T
2026-05-21 18:31:04 +07:00

145 lines
5.4 KiB
YAML

# .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
# 🔧 ИЗВЛЕЧЕНИЕ ВЕРСИИ: парсим тег или используем ввод
- name: 🔧 Parse version for Windows
id: version
run: |
# Определяем исходную версию
$raw = "${{ github.ref_name }}"
if ([string]::IsNullOrEmpty($raw) -or $raw -eq "main" -or $raw -eq "master") {
$raw = "${{ github.event.inputs.version }}"
}
# Удаляем префикс 'v' или 'V'
$clean = $raw -replace '^v', '' -replace '^V', ''
# Разбиваем на части и дополняем до 4-х чисел
$parts = $clean -split '\.' | Where-Object { $_ -match '^\d+$' }
while ($parts.Count -lt 4) { $parts += '0' }
$windowsVersion = ($parts[0..3] -join '.')
# Сохраняем в output для использования в следующих шагах
echo "version=$windowsVersion" >> $env:GITHUB_OUTPUT
echo "✓ Версия для Windows: $windowsVersion"
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=${{ steps.version.outputs.version }} `
--product-version=${{ steps.version.outputs.version }} `
--file-description="Download tracks from Yandex Music in maximum quality" `
--product-name="Yandex Music Downloader" `
--company-name="KromSystems" `
--copyright="(c) 2026 KromSystems. Powered by J.A.R.V.I.S. core" `
main.py
shell: pwsh
# ✅ Проверка создания файла
- 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 ${{ steps.version.outputs.version }}"
body: |
## 🤖 Yandex Music Downloader v${{ steps.version.outputs.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 }}