Skip to content

Commit

Permalink
Merge branch 'develop' for release v3.25.0
Browse files Browse the repository at this point in the history
  • Loading branch information
epoupon committed Apr 8, 2021
2 parents 6a5cfaa + 42e9403 commit edd8ea4
Show file tree
Hide file tree
Showing 63 changed files with 2,121 additions and 445 deletions.
2 changes: 1 addition & 1 deletion INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ __Notes__:
* a C++17 compiler is needed
* ffmpeg version 4 minimum is required
```sh
apt-get install g++ cmake libboost-system-dev libavutil-dev libavformat-dev libstb-dev libconfig++-dev ffmpeg libtag1-dev libpam0g-dev
apt-get install g++ cmake libboost-program-options-dev libboost-system-dev libavutil-dev libavformat-dev libstb-dev libconfig++-dev ffmpeg libtag1-dev libpam0g-dev
```
__Notes__:
* libpam0g-dev is optional (only for using PAM authentication)
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ A [demo instance](http://lms.demo.poupon.io) is available. Note the administrati
* Multi-value tags: artists, genres, composers, lyricists, moods, ...
* Compilation support
* [MusicBrainz Identifier](https://musicbrainz.org/doc/MusicBrainz_Identifier) support to handle duplicated artist and release names
* Scrobbling to [ListenBrainz](https://listenbrainz.org)
* Disc subtitles support
* ReplayGain support
* Persistent play queue across sessions
Expand Down
1 change: 1 addition & 0 deletions approot/admin-database.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
<div class="col-lg-9">
${media-directory}
${media-directory-info class="help-block"}
<span class="help-block">${tr:Lms.Admin.Database.path-help}</span>
</div>
</div>
<div class="form-group">
Expand Down
6 changes: 6 additions & 0 deletions approot/messages.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
<message id="Lms.Admin.Database.menu-database"><i class="fa fa-fw fa-database" aria-hidden="true"></i> Music collection</message>
<message id="Lms.Admin.Database.never">Never</message>
<message id="Lms.Admin.Database.path">Media root directory</message>
<message id="Lms.Admin.Database.path-help">Directories containing a <code>.lmsignore</code> file are skipped</message>
<message id="Lms.Admin.Database.recommendation-engine-type">Recommendation engine</message>
<message id="Lms.Admin.Database.recommendation-engine-type.clusters">Tags based</message>
<message id="Lms.Admin.Database.recommendation-engine-type.features">Audio analysis based</message>
Expand Down Expand Up @@ -193,6 +194,11 @@
<message id="Lms.Settings.replaygain-mode.release">Album</message>
<message id="Lms.Settings.replaygain-preamp">ReplayGain preamp</message>
<message id="Lms.Settings.replaygain-preamp-no-rg-info">ReplayGain preamp (if no info)</message>
<message id="Lms.Settings.scrobbling">Scrobbling</message>
<message id="Lms.Settings.scrobbling.scrobbler">Scrobbler</message>
<message id="Lms.Settings.scrobbling.scrobbler.internal">Internal</message>
<message id="Lms.Settings.scrobbling.scrobbler.listenbrainz">ListenBrainz</message>
<message id="Lms.Settings.scrobbling.listenbrainz-token">ListenBrainz token</message>
<message id="Lms.Settings.subsonic-artist-list-mode">Artist list mode</message>
<message id="Lms.Settings.subsonic-artist-list-mode.all-artists">All artists</message>
<message id="Lms.Settings.subsonic-artist-list-mode.release-artists">Album artists</message>
Expand Down
6 changes: 6 additions & 0 deletions approot/messages_fr.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
<message id="Lms.Admin.Database.menu-database"><i class="fa fa-fw fa-database" aria-hidden="true"></i> Collection de musiques</message>
<message id="Lms.Admin.Database.never">Jamais</message>
<message id="Lms.Admin.Database.path">Dossier racine des fichiers de musique</message>
<message id="Lms.Admin.Database.path-help">Les dossiers contenant un fichier <code>.lmsignore</code> sont ignorés</message>
<message id="Lms.Admin.Database.recommendation-engine-type">Moteur de recommandation</message>
<message id="Lms.Admin.Database.recommendation-engine-type.clusters">Basé sur les tags</message>
<message id="Lms.Admin.Database.recommendation-engine-type.features">Basé sur l'analyse audio</message>
Expand Down Expand Up @@ -193,6 +194,11 @@
<message id="Lms.Settings.replaygain-mode.release">Album</message>
<message id="Lms.Settings.replaygain-preamp">Pre-amplification ReplayGain</message>
<message id="Lms.Settings.replaygain-preamp-no-rg-info">Pre-amplification ReplayGain (si pas d'info)</message>
<message id="Lms.Settings.scrobbling">Scrobbling</message>
<message id="Lms.Settings.scrobbling.scrobbler">Scrobbler</message>
<message id="Lms.Settings.scrobbling.scrobbler.internal">Interne</message>
<message id="Lms.Settings.scrobbling.scrobbler.listenbrainz">ListenBrainz</message>
<message id="Lms.Settings.scrobbling.listenbrainz-token">Jeton ListenBrainz</message>
<message id="Lms.Settings.subsonic-artist-list-mode">Mode de listage des artistes</message>
<message id="Lms.Settings.subsonic-artist-list-mode.all-artists">Tous les artistes</message>
<message id="Lms.Settings.subsonic-artist-list-mode.release-artists">Tous les artistes d'album</message>
Expand Down
222 changes: 222 additions & 0 deletions approot/messages_zh.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
<?xml version="1.0" encoding="UTF-8" ?>
<messages xmlns:if="Wt.WTemplate.conditions"
nplurals="2" plural="n > 1 ? 1 : 0">

<!--Common-->
<message id="Lms.add">添加</message>
<message id="Lms.administration">管理</message>
<message id="Lms.apply">应用</message>
<message id="Lms.discard">撤销</message>
<message id="Lms.cancel">取消</message>
<message id="Lms.create">新建</message>
<message id="Lms.loading">加载中...</message>
<message id="Lms.login">登陆</message>
<message id="Lms.logout"><i class="fa fa-fw fa-sign-out" aria-hidden="true"></i> 注销</message>
<message id="Lms.not-a-directory">不是一个目录</message>
<message id="Lms.password">密码</message>
<message id="Lms.password-bad-login-combination">无效的登陆 / 密码组合</message>
<message id="Lms.password-client-throttled">登录已被限制,请稍后再试</message>
<message id="Lms.password-confirm">确认密码</message>
<message id="Lms.password-new">新密码</message>
<message id="Lms.password-old">旧密码</message>
<message id="Lms.password-too-weak">密码太弱</message>
<message id="Lms.passwords-dont-match">密码不匹配</message>
<message id="Lms.quit-other-session">另一个会话已打开,重新打开这一个?</message>
<message id="Lms.save">保存</message>
<message id="Lms.user">用户</message>

<!--Errors-->
<message id="Lms.Error.artist-not-found">歌手未找到</message>
<message id="Lms.Error.error-occurred">发生错误!</message>
<message id="Lms.Error.go-home">返回主页</message>
<message id="Lms.Error.release-not-found">发布未找到</message>
<message id="Lms.Error.user-not-allowed">不允许执行此操作</message>
<message id="Lms.Error.user-not-found">未找到此用户</message>

<!--Administration-->
<message id="Lms.Admin.Database.daily">每日的</message>
<message id="Lms.Admin.Database.database">音乐收藏</message>
<message id="Lms.Admin.Database.hourly">每小时的</message>
<message id="Lms.Admin.Database.immediate-scan">立即扫描!</message>
<message id="Lms.Admin.Database.monthly">每月的</message>
<message id="Lms.Admin.Database.menu-database"><i class="fa fa-fw fa-database" aria-hidden="true"></i> 音乐收藏</message>
<message id="Lms.Admin.Database.never">从未</message>
<message id="Lms.Admin.Database.path">媒体根目录</message>
<message id="Lms.Admin.Database.recommendation-engine-type">推荐引擎</message>
<message id="Lms.Admin.Database.recommendation-engine-type.clusters">基于标签</message>
<message id="Lms.Admin.Database.recommendation-engine-type.features">基于音频分析</message>
<message id="Lms.Admin.Database.scan-complete">扫描完成: {1} 总文件, {2} 附加文件, {3} 升级文件, {4} 已删除文件, {5} 副本文件, {6} 错误文件</message>
<message id="Lms.Admin.Database.scan-launched">扫描已完成!</message>
<message id="Lms.Admin.Database.scan-options">扫描选项</message>
<message id="Lms.Admin.Database.settings-saved">新设置已保存!</message>
<message id="Lms.Admin.Database.tags">标签</message>
<message id="Lms.Admin.Database.update-period">更新周期</message>
<message id="Lms.Admin.Database.update-start-time">更新开始时间</message>
<message id="Lms.Admin.Database.weekly">每周的</message>

<message id="Lms.Admin.ScannerController.bad-duration">无法获得音轨时间</message>
<message id="Lms.Admin.ScannerController.cannot-parse-file">无法解析文件</message>
<message id="Lms.Admin.ScannerController.cannot-read-file">无法读取文件</message>
<message id="Lms.Admin.ScannerController.duplicates-header">{1} 备份文件:</message>
<message id="Lms.Admin.ScannerController.errors-header">{1} 错误:</message>
<message id="Lms.Admin.ScannerController.force-scan-now">立即强制全盘扫描</message>
<message id="Lms.Admin.ScannerController.get-report">生成报告</message>
<message id="Lms.Admin.ScannerController.last-scan">最后扫描</message>
<message id="Lms.Admin.ScannerController.last-scan-not-available">不可用</message>
<message id="Lms.Admin.ScannerController.last-scan-status">已扫描 {1} 文件 在 {2} 和 {3} ({4} 错误, {5} 副本)</message>
<message id="Lms.Admin.ScannerController.no-audio-track">没有音轨</message>
<message id="Lms.Admin.ScannerController.same-hash">复制文件哈希值</message>
<message id="Lms.Admin.ScannerController.same-mbid">复制 MBID</message>
<message id="Lms.Admin.ScannerController.scan-now">立即扫描</message>
<message id="Lms.Admin.ScannerController.scanner">扫描器</message>
<message id="Lms.Admin.ScannerController.status">状态</message>
<message id="Lms.Admin.ScannerController.status-not-scheduled">无计划</message>
<message id="Lms.Admin.ScannerController.status-scheduled">计划在 {1}</message>
<message id="Lms.Admin.ScannerController.status-in-progress">扫描中: 阶段 {1}/{2}</message>
<message id="Lms.Admin.ScannerController.step-checking-for-missing-files">检查文件中... {1}%</message>
<message id="Lms.Admin.ScannerController.step-discovering-files">检索文件中: {1} 文件</message>
<message id="Lms.Admin.ScannerController.step-fetching-track-features">Fetching track features from AcousticBrainz: {1}/{2} tracks ({3}%)...</message>
<message id="Lms.Admin.ScannerController.step-reloading-similarity-engine">重载相似引擎中 {1}%...</message>
<message id="Lms.Admin.ScannerController.step-scanning-files">扫描文件中: {1}/{2} 文件 ({3}%)...</message>

<!--Users-->
<message id="Lms.Admin.Users.add">新建用户</message>
<message id="Lms.Admin.Users.admin">管理员</message>
<message id="Lms.Admin.Users.del">删除</message>
<message id="Lms.Admin.Users.del-user">删除用户</message>
<message id="Lms.Admin.Users.del-user-name">确认要删除此用户?</message>
<message id="Lms.Admin.Users.demo">演示</message>
<message id="Lms.Admin.Users.edit">编辑</message>
<message id="Lms.Admin.Users.users">用户</message>
<message id="Lms.Admin.Users.menu-users"><i class="fa fa-fw fa-users" aria-hidden="true"></i> 用户</message>

<!--User-->
<message id="Lms.Admin.User.demo-account">演示账号</message>
<message id="Lms.Admin.User.demo-account-already-exists">演示账号已存在!</message>
<message id="Lms.Admin.User.demo-password-invalid">演示密码必须是登录名!</message>
<message id="Lms.Admin.User.last-login">最后登录</message>
<message id="Lms.Admin.User.user-already-exists">用户已存在!</message>
<message id="Lms.Admin.User.user-create">新建用户</message>
<message id="Lms.Admin.User.user-created">新用户已建立!</message>
<message id="Lms.Admin.User.user-edit">编辑用户 {1}</message>
<message id="Lms.Admin.User.user-updated">用户已更新!</message>

<!--Wizard-->
<message id="Lms.Admin.InitWizard.done">管理员账号已建立。请刷新后继续!</message>
<message id="Lms.Admin.InitWizard.header">新建管理员账号</message>

<!--Auth-->
<message id="Lms.Auth.remember-me">记住我</message>
<message id="Lms.Auth.welcome">欢迎!</message>

<!--Explore-->
<message id="Lms.Explore.add-filter">添加筛选</message>
<message id="Lms.Explore.all">全部</message>
<message id="Lms.Explore.artists">歌手</message>
<message id="Lms.Explore.download">下载</message>
<message id="Lms.Explore.filter-added">筛选已添加</message>
<message id="Lms.Explore.filters">筛选</message>
<message id="Lms.Explore.links">链接</message>
<message id="Lms.Explore.most-played">播放最多</message>
<message id="Lms.Explore.musicbrainz-artist">MusicBrainz 歌手</message>
<message id="Lms.Explore.musicbrainz-release">MusicBrainz 发布</message>
<message id="Lms.Explore.play-last">播放列表</message>
<message id="Lms.Explore.play-shuffled">随机播放</message>
<message id="Lms.Explore.random">随机</message>
<message id="Lms.Explore.recently-added">最近添加</message>
<message id="Lms.Explore.recently-played">最近播放</message>
<message id="Lms.Explore.releases">专辑</message>
<message id="Lms.Explore.star">收藏</message>
<message id="Lms.Explore.starred">已收藏</message>
<message id="Lms.Explore.tracks">音轨</message>
<message id="Lms.Explore.type">类型</message>
<message id="Lms.Explore.unstar">取消收藏</message>
<message id="Lms.Explore.value">值</message>
<message id="Lms.Explore.various-artists">群星</message>

<!--Explore:Artist-->
<message id="Lms.Explore.Artist.similar-artists">相似歌手</message>

<!--Explore:Artists-->
<message id="Lms.Explore.Artists.linktype-all">所有歌手</message>
<message id="Lms.Explore.Artists.linktype-artist">追踪歌手</message>
<message id="Lms.Explore.Artists.linktype-composer">作曲</message>
<message id="Lms.Explore.Artists.linktype-lyricist">作词</message>
<message id="Lms.Explore.Artists.linktype-mixer">混响</message>
<message id="Lms.Explore.Artists.linktype-producer">制片人</message>
<message id="Lms.Explore.Artists.linktype-releaseartist">专辑歌手</message>
<message id="Lms.Explore.Artists.linktype-remixer">混音师</message>

<!--Explore:Release-->
<message id="Lms.Explore.Release.similar-releases">相似专辑</message>
<message id="Lms.Explore.Release.copyright">版权所有</message>
<message id="Lms.Explore.Release.disc">唱片 {1}</message>

<!--Explore:Search-->
<message id="Lms.Explore.Search.search-placeholder">搜索中...</message>
<message id="Lms.Explore.Search.search">搜索结果</message>

<!--Player-->
<message id="Lms.Player.transcoding-active">转码有效</message>

<!--Playqueue-->
<message id="Lms.PlayQueue.clear">清除</message>
<message id="Lms.PlayQueue.nb-tracks">{1} 追踪</message>
<message id="Lms.PlayQueue.nb-tracks-added">
<plural case="0">添加 {1} 追踪</plural>
<plural case="1">已添加 {1} 追踪</plural>
</message>
<message id="Lms.PlayQueue.playqueue">播放队列</message>
<message id="Lms.PlayQueue.playqueue-full">播放队列已满!</message>
<message id="Lms.PlayQueue.radio-mode">广播模式</message>
<message id="Lms.PlayQueue.repeat">循环播放</message>
<message id="Lms.PlayQueue.shuffle">随机播放</message>

<!--PlayHistory-->
<message id="Lms.PlayHistory.playhistory">播放历史</message>

<!--Settings-->
<message id="Lms.Settings.appearance">外观</message>
<message id="Lms.Settings.audio">音频</message>
<message id="Lms.Settings.audio-settings-are-local">这些音频设置取决于您的本地浏览器!</message>
<message id="Lms.Settings.change-password">更改密码</message>
<message id="Lms.Settings.dark-mode">夜间模式</message>
<message id="Lms.Settings.demo-cannot-save">使用演示账号时不能保存!</message>
<message id="Lms.Settings.menu-settings"><i class="fa fa-fw fa-cog" aria-hidden="true"></i> 设置</message>
<message id="Lms.Settings.password-bad">无效密码</message>
<message id="Lms.Settings.password-must-fill-old-password">旧密码必须填写</message>
<message id="Lms.Settings.replaygain-mode">ReplayGain 模式</message>
<message id="Lms.Settings.replaygain-mode.none">没有 ReplayGain</message>
<message id="Lms.Settings.replaygain-mode.auto">自动模式</message>
<message id="Lms.Settings.replaygain-mode.track">音轨</message>
<message id="Lms.Settings.replaygain-mode.release">专辑</message>
<message id="Lms.Settings.replaygain-preamp">ReplayGain 放大器</message>
<message id="Lms.Settings.replaygain-preamp-no-rg-info">ReplayGain 放大器 (如果没有信息)</message>
<message id="Lms.Settings.subsonic-artist-list-mode">歌手列表模式</message>
<message id="Lms.Settings.subsonic-artist-list-mode.all-artists">所有歌手</message>
<message id="Lms.Settings.subsonic-artist-list-mode.release-artists">专辑歌手</message>
<message id="Lms.Settings.subsonic-artist-list-mode.track-artists">追踪歌手</message>
<message id="Lms.Settings.subsonic-api">Subsonic 应用程序接口</message>
<message id="Lms.Settings.transcode">转码</message>
<message id="Lms.Settings.transcode-bitrate">视频比特率</message>
<message id="Lms.Settings.transcode-enable">开启转码</message>
<message id="Lms.Settings.transcode-format">转码格式</message>
<message id="Lms.Settings.transcode-format.matroska_opus">Matroska/Opus</message>
<message id="Lms.Settings.transcode-format.mp3">MP3</message>
<message id="Lms.Settings.transcode-format.ogg_opus">Ogg/Opus</message>
<message id="Lms.Settings.transcode-format.ogg_vorbis">Ogg/Vorbis</message>
<message id="Lms.Settings.transcode-format.webm_vorbis">WebM/Vorbis</message>
<message id="Lms.Settings.transcode-mode">启动转码</message>
<message id="Lms.Settings.transcode-mode.always">总是</message>
<message id="Lms.Settings.transcode-mode.if-format-not-supported">仅当格式不支持时使用</message>
<message id="Lms.Settings.transcode-mode.never">从不</message>
<message id="Lms.Settings.settings-saved">新设置已保存!</message>

<!--Wt-->
<message id="Wt.WMessageBox.Yes">是</message>
<message id="Wt.WMessageBox.No">否</message>
<message id="Wt.WValidator.Invalid">此字段不能为空</message>
<message id="Wt.WDoubleValidator.BadRange">这个值应该在 {1} 和 {2}</message>
</messages>

</messages>
21 changes: 21 additions & 0 deletions approot/settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,27 @@
</div>
</div>
${</if-has-subsonic-api>}
<legend>${tr:Lms.Settings.scrobbling}</legend>
<div class="form-horizontal">
<div class="form-group">
<label class="col-lg-3 control-label" for="${id:scrobbler}">
${tr:Lms.Settings.scrobbling.scrobbler}
</label>
<div class="col-lg-9">
${scrobbler}
${scrobbler-info class="help-block"}
</div>
</div>
<div class="form-group">
<label class="col-lg-3 control-label" for="${id:listenbrainz-token}">
${tr:Lms.Settings.scrobbling.listenbrainz-token}
</label>
<div class="col-lg-9">
${listenbrainz-token}
${listenbrainz-token-info class="help-block"}
</div>
</div>
</div>
${<if-has-change-password>}
<legend>${tr:Lms.Settings.change-password}</legend>
<div class="form-horizontal">
Expand Down
5 changes: 4 additions & 1 deletion conf/lms.conf
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@ deploy-path = "/";
# Number of threads to be used to dispatch http requests (0 means auto detect)
http-server-thread-count = 0;

# Acoustic brainz's root API
# ListenBrainz root API
listenbrainz-api-url = "https://api.listenbrainz.org/1/";

# Acousticbrainz root API
acousticbrainz-api-url = "https://acousticbrainz.org/api/v1/";

# Authentication
Expand Down
Loading

0 comments on commit edd8ea4

Please sign in to comment.