BesLyric-for-X 是一款操作简单、功能实用的歌词制作软件。我们开发此软件的目的是为了为广大网易云音乐云村村民提供一个良好的歌词制作体验。
SHA-1 | Filename |
---|---|
EF2DCC74DD347316A4E9A633D0FBE54B2C6008E1 | BesLyric-for-X-3.2.0-debugInfo-Linux-x86_64.tar.gz |
B1A7D7802D6B9D089F784E7B5C9A3C9322E8791A | BesLyric-for-X-3.2.0-debugInfo-macOS.tar.gz |
D90542D8CD315D6B895F1C3181E3509D0FAB3875 | BesLyric-for-X-3.2.0-debugInfo-Windows-x86.zip |
2F6F0422E648C8C85863C0B3B8F13026BE664DC1 | BesLyric-for-X-3.2.0-Linux-x86_64.AppImage |
28B738327783FF4A9F1F9D8910D733EFFC0FDF84 | BesLyric-for-X-3.2.0-macOS.dmg |
5E3CFA87BAE3DA03A654C32FAE7E2ED4EC981DBF | BesLyric-for-X-3.2.0-Windows-x86-portable.zip |
403CDFA7DFE5B7FA923FBA32AB8901118B16C76E | BesLyric-for-X-3.2.0-Windows-x86-setup.exe |
linuxdeployqt 7 (commit b469748), build 734 built on 2021-06-13 13:17:57 UTC
#Requires -Version 5.1
$ErrorActionPreference = 'Stop'
Set-StrictMode -Version 3.0
'git?'; Get-Command -Name 'git' | Format-List
'qmake?'; Get-Command -Name 'qmake' | Format-List
'mingw32-make?'; Get-Command -Name 'mingw32-make' | Format-List
'windeployqt?'; Get-Command -Name 'windeployqt' | Format-List
'ISCC?'; Get-Command -Name 'ISCC' | Format-List
$Target = 'BesLyric-for-X'
$Version = '3.2.0'
$Platform = 'Windows'
$Arch = 'x86'
$OutputSetupFilename = "${Target}-${Version}-${Platform}-${Arch}-setup.exe"
$OutputZipFilename = "${Target}-${Version}-${Platform}-${Arch}-portable.zip"
$OutputDebugInfoFilename = "${Target}-${Version}-debugInfo-${Platform}-${Arch}.zip"
$DepPath = "${env:\USERPROFILE}\b4x-lib"
$WorkingDirPath = "${env:TEMP}\$(Get-Date -Format o | ForEach-Object { $_ -replace ":", "." })" # https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-date#example-8--create-a-timestamp
$SrcPath = "${WorkingDirPath}\s"
$BuildPath = "${WorkingDirPath}\b"
$InstPath = "${WorkingDirPath}\i"
$DeployPath = "${WorkingDirPath}\${Target}-${Version}-${Platform}-${Arch}-files"
$OutputPath = "${WorkingDirPath}\o"
# Fetch
git 'clone' '--depth=1' -- 'https://github.com/BesLyric-for-X/BesLyric-for-X' $SrcPath
if (! $?) { throw "Exit: $LastExitCode" }
git '-C' $SrcPath 'submodule' 'update' '--init' '--recursive' '--depth=1' -- '.deploy-package/Windows'
if (! $?) { throw "Exit: $LastExitCode" }
# Build and install
Push-Location -Path $(New-Item -ItemType "Directory" -Force -Path $BuildPath)
qmake '-makefile' '-o' 'Makefile' '-spec' 'win32-g++' '-before' 'CONFIG*=force_debug_info' 'CONFIG*=separate_debug_info' 'DEFINES*=RELEASE_VERSION' "APP_VERSION=$Version" "B4X_DEP_PATH=$DepPath" '-after' "TARGET=$Target" 'CONFIG+=release' $SrcPath
if (! $?) { throw "Exit: $LastExitCode" }
mingw32-make '-f' 'Makefile.Release' 'install' "INSTALL_ROOT=$InstPath"
if (! $?) { throw "Exit: $LastExitCode" }
Pop-Location
# Save debug info
New-Item -ItemType "Directory" -Force -Path $OutputPath
Compress-Archive -CompressionLevel 'Optimal' -Path "${InstPath}\${Target}.exe.debug" -DestinationPath "${OutputPath}\${OutputDebugInfoFilename}"
# Deploy
$windeployqtParams = @{
WINDEPLOYQT_PATH = 'windeployqt'
MINGW_BIN_DIR_PATH = Split-Path -Parent -Path $(Get-Command -Name 'mingw32-make').Path
LIB_DIR_PATH = "${DepPath}\lib"
TARGET = $Target
INSTALL_ROOT = $InstPath
DEPLOY_DIR_PATH = $DeployPath
}
& "${SrcPath}\.deploy-package\Windows\deploy\call_windeployqt.ps1" @windeployqtParams
# Create ZIP Archive
New-Item -ItemType "Directory" -Force -Path $OutputPath
Compress-Archive -CompressionLevel 'Optimal' -Path $DeployPath -DestinationPath "${OutputPath}\${OutputZipFilename}"
# Package by Inno Setup
New-Item -ItemType "Directory" -Force -Path $OutputPath
$issParams = @{
ISCC_PATH = 'ISCC.exe'
ISS_COMPRESSION = 'lzma2/ultra64'
TARGET = $Target
DEPLOY_DIR_PATH = $DeployPath
ISS_INSTALLER_FILE_PATH = "${OutputPath}\${OutputSetupFilename}"
}
& "${SrcPath}\.deploy-package\Windows\package\call_iscc.ps1" @issParams
# Show output files
"Output dir:"
$OutputPath
Get-ChildItem -Path $OutputPath | Format-List
Get-ChildItem -Path $OutputPath | Get-FileHash -Algorithm 'SHA1' | Format-List
The script:
#!/usr/bin/env bash
set -e
set -o pipefail
set -u
echo 'git?'; which 'git'
echo 'qmake?'; which 'qmake'
echo 'make?'; which 'make'
echo 'linuxdeployqt.AppImage?'; which 'linuxdeployqt.AppImage'
export target='BesLyric-for-X'
export version='3.2.0'
export platform='Linux'
export arch='x86_64'
export output_appimage_filename="${target}-${version}-${platform}-${arch}.AppImage"
export output_debug_info_filename="${target}-${version}-debugInfo-${platform}-${arch}.tar.gz"
export working_dir_path="/tmp/$(date -Iseconds)" # https://unix.stackexchange.com/questions/164826/date-command-iso-8601-option/330326#330326
export src_path="${working_dir_path}/s"
export build_path="${working_dir_path}/b"
export inst_path="${working_dir_path}/i"
export output_path="${working_dir_path}/o"
# Fetch
git clone --depth=1 -- 'https://github.com/BesLyric-for-X/BesLyric-for-X' "$src_path"
git -C "$src_path" submodule update --init --depth=1 -- '.deploy-package/Linux'
# Build and install
mkdir -p "$build_path"
pushd "$build_path"
qmake '-makefile' '-o' 'Makefile' '-spec' 'linux-g++' '-before' 'CONFIG*=force_debug_info' 'CONFIG*=separate_debug_info' 'DEFINES*=RELEASE_VERSION' "APP_VERSION=$version" '-after' "TARGET=$target" 'CONFIG+=release' "$src_path"
make '-f' 'Makefile' 'install' "INSTALL_ROOT=$inst_path"
popd
# Save debug info
pushd "${inst_path}/usr/bin"
mkdir -p "$output_path"
tar -cz -v --remove-files -f "${output_path}/${output_debug_info_filename}" "${target}.debug"
popd
# Deploy
mkdir -p "$output_path"
pushd "$output_path"
DESKTOP_FILE_PATH="${inst_path}/usr/share/applications/BesLyric-for-X.desktop" \
LINUXDEPLOYQT_PATH='linuxdeployqt.AppImage' \
QMAKE_PATH='qmake' \
VERSION="$version" \
bash "${src_path}/.deploy-package/Linux/call_linuxdeployqt.sh"
mv "${target}-${version}-${arch}.AppImage" "$output_appimage_filename"
popd
# Show output files
echo "Output dir:"
realpath "$output_path"
ls -l "$output_path"
find "$output_path" -type f -exec sha1sum {} \;
The script:
#!/usr/bin/env bash
set -e
set -o pipefail
set -u
echo 'git?'; which 'git'
echo 'qmake?'; which 'qmake'
echo 'make?'; which 'make'
echo 'magick?'; which 'magick'
echo 'create-dmg?'; which 'create-dmg'
export target='BesLyric-for-X'
export version='3.2.0'
export platform='macOS'
export output_dmg_filename="${target}-${version}-${platform}.dmg"
export output_debug_info_filename="${target}-${version}-debugInfo-${platform}.tar.gz"
export working_dir_path="${TMPDIR}/$(date -u +"%Y-%m-%dT%H:%M:%SZ")" # https://ss64.com/osx/date.html
export src_path="${working_dir_path}/s"
export build_path="${working_dir_path}/b"
export inst_path="${working_dir_path}/i"
export output_path="${working_dir_path}/o"
# Fetch
git clone --depth=1 -- 'https://github.com/BesLyric-for-X/BesLyric-for-X' "$src_path"
git -C "$src_path" submodule update --init --depth=1 -- '.deploy-package/macOS'
# Build and install
mkdir -p "$build_path"
pushd "$build_path"
qmake '-makefile' '-o' 'Makefile' '-spec' 'macx-clang' '-before' 'CONFIG*=force_debug_info' 'CONFIG*=separate_debug_info' 'DEFINES*=RELEASE_VERSION' "APP_VERSION=$version" '-after' "TARGET=$target" 'CONFIG+=release' "$src_path"
make '-f' 'Makefile' 'install' "INSTALL_ROOT=$inst_path"
popd
# Save debug info
mkdir -p "$output_path"
pushd "$inst_path"
tar -cz -v -f "${output_path}/${output_debug_info_filename}" "${target}.app.dSYM"
popd
# Deploy
mkdir -p "$output_path"
pushd "$output_path"
MACDEPLOYQT_PATH='macdeployqt' \
APP_FILE_PATH="${inst_path}/${target}.app" \
bash "${src_path}/.deploy-package/macOS/macdeployqt_enhanced.sh"
IMAGEMAGICK_PATH='magick' \
CREATE_DMG_PATH='create-dmg' \
APP_FILE_PATH="${inst_path}/${target}.app" \
ICON_FILE_PATH="${inst_path}/BesLyric.icns" \
OUTPUT_DMG_PATH="${output_path}/${output_dmg_filename}" \
bash "${src_path}/.deploy-package/macOS/package_cdmg.sh"
popd
# Show output files
pushd "$output_path"
echo "Output dir:"
echo "${PWD}"
ls -l *
openssl dgst -sha1 *
popd
version: 3.1.2 1 修复搜索功能失效问题 (第1点由 github 用户 devilintheEden/Yiyin Gu 反馈) 2 修复含有“.”的歌曲文件的文件名不能被正确识别 3 修复音乐播放崩溃问题(mac OS) 4 修复 Window 下歌词单列表快速切换卡死问题 (第4点由 github 用户 yujunjiex/俞俊杰 反馈) 5 修复首句歌词时间在比较靠前时,时间标记异常问题 (第5点由 github 用户 ish-kafel 反馈) 6 修复导入的外来LRC文件歌词显示乱码问题 (第6点由 知乎用户 山雀教主周半仙 反馈) 6 优化用户操作问题 6.1 将同意下载声明的时间 1min 改为 30s 6.2 默认目录更改立刻生效 7 优化UI 7.1 使最大化窗口自适应屏幕可用区域 7.2 优化音乐进度条显示和操作 8 优化程序其他细节问题 (以上功能由 pzhlkj6612/Mozi 和 BensonLaur 共同开发)
version: 3.1.1 1、支持"歌手-歌曲名"|“"歌曲名-歌手" 2 种命名方式保存文件 2、优化歌词单中歌曲的播放预览功能,支持在歌词单列表下方点击预览歌词 (以上2点由 github 用户 binsee 提供相关建议) 3、优化播放进度条操作,支持直接点击定位播放(制作歌词模式下则禁用) 4、修复播放/暂停按钮在拖动进度条后、歌曲播放结束后的图标错误 (以上2点由 github 用户 pzhlkj6612/Mozi 提供技术支持) 5、解除对选择歌曲文件时格式的限制,如可以选择flac(由 github用户 iMusynx 建议) 6、网易云音乐下载的 mp3 自动加入专辑图片和歌曲信息 7、修复"下载歌词"页面下"LRC歌词"页面按钮和编辑框失效问题 8、修复歌词单歌曲播放失败时,在单曲循环播放下无限报错问题; 9、修复拖动歌词单列表时,拖动到最后一项崩溃的问题 10、优化其他UI细节(如4k分辨率下的歌词显示等)
(从本版本开始,window版本采用安装包方式安装,下次升级可自动保留配置)
version: 3.1.0 1、更加实用的歌词编辑功能,支持制作过程中“单行编辑”和“批量编辑” 2、制作按键增加“↓”按键,拉回一行,直接回退定位到上一行 3、制作过程中,自动隐藏“选择音乐”“选择歌词”2栏,同时拓展3行显示至5行显示,方便制作 (以上3点由网友Rogue/warkbox提供建议) 4、优化制作歌词显示,在制作完的行后添加一个“音乐标志”便于区分 5、修复播放音乐时在1s左右的噪音 (以上2点由微博网友“吴栖源”提供建议) 6、优化不同分辨率显示问题(由github 用户 Whtie4622、zxdawn 参与改进) 7、修复播放条显示抖动问题 8、实现搜索歌词页面之前未实现的“百度搜索”接口 9、去除歌词预览最后的的歌词贡献者部分,避免用户误解 10、添加windows 版本图标 11、优化界面其他细节