Added enhanced LRC format support & Fix some issues & Optimize some code #85
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build LDDC | |
on: | |
push: | |
branches: main | |
paths: | |
- "**.py" | |
- ".github/workflows/build.yml" | |
workflow_dispatch: | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, ubuntu-latest, windows-latest] | |
arch: [x64] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.11 | |
architecture: ${{ matrix.arch }} | |
- name: Get arch | |
id: arch | |
shell: bash | |
run: | | |
if [[ ${{ matrix.arch }} == 'x64' ]]; then | |
echo "arch=amd64" >> $GITHUB_OUTPUT | |
elif [[ ${{ matrix.arch }} == 'arm64' ]]; then | |
echo "arch=arm64" >> $GITHUB_OUTPUT | |
elif [[ ${{ matrix.arch }} == 'win32' ]]; then | |
echo "arch=x86" >> $GITHUB_OUTPUT | |
fi | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
pip install Pillow pyinstaller | |
# pip install imageio | |
- name: Install EGL/upx | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: | | |
sudo apt-get update | |
sudo apt-get install libegl1 upx | |
- name: Install create-dmg/upx | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: | | |
brew install create-dmg upx | |
- name: Install upx/7zip | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
choco install upx 7zip -y | |
- name: Get Information | |
id: info | |
shell: bash | |
run: | | |
echo "copyright=Copyright (C) $(python setup.py --task get_year) 沉默の金" >> $GITHUB_OUTPUT | |
echo "version=$(python setup.py --task get_version)" >> $GITHUB_OUTPUT | |
cat $GITHUB_OUTPUT | |
#- name: Build Executable | |
# uses: Nuitka/Nuitka-Action@main | |
# with: | |
# nuitka-version: main | |
# script-name: LDDC.py | |
# standalone: true | |
# onefile: false | |
# enable-plugins: pyside6 | |
# disable-console: true | |
# product-name: "LDDC" | |
# file-version: ${{ steps.info.outputs.version }} | |
# product-version: ${{ steps.info.outputs.version }} | |
# copyright: ${{ steps.info.outputs.copyright }} | |
# windows-icon-from-ico: "res/img/icon/logo.png" | |
# mingw64: true | |
# macos-app-icon: "res/img/icon/logo.png" | |
# macos-app-version: ${{ steps.info.outputs.version }} | |
# macos-create-app-bundle: true | |
- name: Build Executable | |
shell: bash | |
run: | | |
if ${{ matrix.os == 'ubuntu-latest' }} || ${{ matrix.os == 'windows-latest' }} | |
then | |
icon_filename="logo.ico" | |
elif ${{ matrix.os == 'macos-latest' }} | |
then | |
icon_filename="logo.icns" | |
fi | |
pyinstaller --onedir --contents-directory . --clean --windowed --name LDDC --specpath dist/spec --distpath dist/dist --workpath dist/build --icon $(pwd)/res/img/icon/$icon_filename LDDC.py | |
- name: create dmg | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: | | |
create-dmg \ | |
--volname "LDDC" \ | |
--volicon "res/img/icon/logo.icns" \ | |
--window-pos 200 120 \ | |
--window-size 800 400 \ | |
--icon-size 100 \ | |
--icon "LDDC.app" 200 190 \ | |
--app-drop-link 600 185 \ | |
dist/LDDC.dmg \ | |
dist/dist/LDDC.app | |
mkdir -p upload | |
mv dist/LDDC.dmg upload/LDDC-${{ steps.info.outputs.version }}-${{ steps.arch.outputs.arch }}.dmg | |
- name: create deb package | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: | | |
cd dist | |
mkdir -p deb/DEBIAN | |
mkdir -p deb/usr/lib | |
mkdir -p deb/usr/bin | |
mkdir -p deb/usr/share/applications | |
mkdir -p deb/usr/share/icons/ | |
cp -r ../res/img/icon/logo.ico deb/usr/share/icons/LDDC.ico | |
cp -RT dist/LDDC deb/usr/lib/LDDC | |
chmod +x deb/usr/lib/LDDC/LDDC | |
ln -s ../lib/LDDC/LDDC deb/usr/bin/LDDC | |
echo "Package: LDDC" >> deb/DEBIAN/control | |
echo "Version: ${{ steps.info.outputs.version }}" >> deb/DEBIAN/control | |
echo "Architecture: ${{ steps.arch.outputs.arch }}" >> deb/DEBIAN/control | |
echo "Maintainer: chenmozhijin" >> deb/DEBIAN/control | |
echo "Depends: libxcb-cursor-dev" | |
echo "Description: lyrics tool" >> deb/DEBIAN/control | |
echo "[Desktop Entry]" >> deb/usr/share/applications/LDDC.desktop | |
echo "Name=LDDC" >> deb/usr/share/applications/LDDC.desktop | |
echo "Comment=lyrics tool" >> deb/usr/share/applications/LDDC.desktop | |
echo "Exec=/usr/lib/LDDC/LDDC" >> deb/usr/share/applications/LDDC.desktop | |
echo "Icon=/usr/share/icons/LDDC.ico" >> deb/usr/share/applications/LDDC.desktop | |
echo "Terminal=false" >> deb/usr/share/applications/LDDC.desktop | |
echo "Type=Application" >> deb/usr/share/applications/LDDC.desktop | |
echo "X-Ubuntu-Touch=true" >> deb/usr/share/applications/LDDC.desktop | |
echo "Categories=Application" >> deb/usr/share/applications/LDDC.desktop | |
chmod +x deb/usr/share/applications/LDDC.desktop | |
sudo dpkg -b deb LDDC_${{ steps.info.outputs.version }}_${{ steps.arch.outputs.arch }}.deb | |
sudo apt install ./LDDC_${{ steps.info.outputs.version }}_${{ steps.arch.outputs.arch }}.deb | |
cd .. | |
mkdir upload | |
mv dist/LDDC_${{ steps.info.outputs.version }}_${{ steps.arch.outputs.arch }}.deb upload/LDDC_${{ steps.info.outputs.version }}_${{ steps.arch.outputs.arch }}.deb | |
- name: prepare create exe | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
New-Item -ItemType Directory -Force -Path dist/exe/main/ | |
New-Item -ItemType Directory -Force -Path dist/exe/main/other/ | |
Copy-Item -Path dist/dist/LDDC/LDDC.exe -Destination dist/exe/main/LDDC.exe -Force | |
Copy-Item -Path dist/dist/LDDC/ -Destination dist/exe/other/ -Recurse -Force | |
Remove-Item -Path dist/exe/other/LDDC.exe -Force | |
- name: Generate evb | |
if: ${{ matrix.os == 'windows-latest' }} | |
uses: chenmozhijin/generate-evb@master | |
with: | |
inputExe: "dist/exe/main/LDDC.exe" | |
outputExe: "dist/exe/output/LDDC/LDDC.exe" | |
path2Pack: "dist/exe/other/" | |
evbFilePath: "dist/exe/LDDC.evb" | |
deleteExtractedOnExit: false | |
compressFiles: false | |
- name: create exe | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
New-Item -Path "dist\exe\chen" -ItemType Directory -Force | |
New-Item -Path "dist\exe\tools" -ItemType Directory -Force | |
cd dist/exe/chen | |
$latest_release = Invoke-RestMethod -Uri "https://api.github.com/repos/dscharrer/innoextract/releases/latest" | |
$download_url = ($latest_release.assets | Where-Object { $_.browser_download_url -like "*windows.zip" }).browser_download_url | |
Invoke-WebRequest -Uri $download_url -OutFile "innoextract_windows.zip" | |
Expand-Archive -Path "innoextract_windows.zip" -DestinationPath "../tools" -Force | |
$enigmavb_url = "http://enigmaprotector.com/assets/files/enigmavb.exe" | |
Invoke-WebRequest -Uri $enigmavb_url -OutFile "../tools/enigmavb.exe" | |
cd ../tools | |
.\innoextract.exe enigmavb.exe | |
cd ../../.. | |
dist/exe/tools/app/enigmavbconsole.exe dist/exe/LDDC.evb | |
- name: Upload dist | |
if: success() || failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }} - ${{ matrix.arch }} Build | |
path: | | |
dist/ | |
- name: Compress exe | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
New-Item -Path upload -ItemType Directory | |
cd dist/exe/output/ | |
7z a -tzip -mx=9 ../../../upload/LDDC-${{ steps.info.outputs.version }}-windows-${{ steps.arch.outputs.arch }}.zip LDDC | |
- name: Upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ runner.os }} - ${{ matrix.arch }} artifacts | |
path: | | |
upload/ | |