-
您可以在Issues提出您的建议
- 若是请求添加新语音,请使用指定的issues模板
- 不熟悉github的用法也可以到Bilibili和我联系
-
如果您可以进行开发,那么请Fork本项目进行修改,完成修改后在本项目中发起一个Pull Request,详细说明请查看以下条目
Pull Request请提交至dev分支
音频文件推荐使用mp3格式,请先音量标准化,然后放入public/voices/目录
所有的分类和音频信息都存储在setting/translate目录的json文件中,添加或修改音频信息、完善翻译,你需要修改对应文件中的内容
locales.json和category.json分别为 UI 界面翻译和分类信息,不要修改,除非你打算接手维护
请新建json文件,注意文件名一致,允许留下你的id(可以使用中文、数字、字母、下划线的组合),例:02_dovela_22.08.22.json
语音文件结构示例如下:
首先你的计算机应该已经部署了node.js并正确设置了环境变量
cd tsuki-button
yarn install // 安装所需插件
# npm run server // 本地测试
npm run build // 打包网站会在工程根目录下生成一个dist文件夹,复制到自己的服务器上搭建就好了,如何搭建网站不在本文叙述范围
本地测试的话,执行npm run serve,命令行会给一个网址http://localhost:端口。但是如果点任何一个按钮网站都会崩溃,是正常现象,生产条件下搭建的网站正常
如果想把编译和部署封装进容器,可以直接使用仓库根目录的 Dockerfile:
# 1. 准备证书目录和nginx配置目录
mkdir /path/to/button_ssl
# fullchain.pem (预先在云服务商申请 fullchain.pem / privkey.key)
# privkey.key
mkdir /path/to/button_nginx
# nginx.conf (复制docker/nginx.conf)
# 2. 打包镜像
docker build -t tsuki-button .
# 3. 本地跑容器测试。http://127.0.0.1/
docker run -d --name tsuki-button \
-p 80:80 -p 443:443 \
-v /path/to/button_ssl:/etc/nginx/ssl:ro \
-v /path/to/button_nginx:/etc/nginx/button_conf:ro \
tsuki-button
# 如需推送到 Docker Hub,可按以下步骤:
# 1. 登录 Docker Hub
docker login
# 2. 打标签并推送
docker tag tsuki-button dovela/tsuki-button:latest
docker push dovela/tsuki-button:latest
# -------------------------------------------------
# 本仓库已发布到Docker Hub,可以直接运行
docker run -d --name tsuki-button \
-p 80:80 -p 443:443 \
-v /path/to/button_ssl:/etc/nginx/ssl:ro \
-v /path/to/button_nginx:/etc/nginx/button_conf:ro \
dovela/tsuki-button:latest镜像包含两个阶段:node:20-alpine 完成 npm ci && npm run build,随后进入 nginx:alpine。docker/nginx.conf 默认把 80 端口 301 跳转到 HTTPS,并在 443 上启用 HTTP/2、HSTS、静态资源缓存。TLS 配置同时启用 TLS 1.3 与 TLS 1.2,保证旧终端也能握手。请在宿主机准备好以 fullchain.pem 与 privkey.key 命名的证书与私钥文件,运行时挂载至 /etc/nginx/ssl 即可。如果只需 HTTP,可临时把挂载去掉并改写配置后重建镜像。
注意事项
- 80 端口只做跳转,请通过
https://访问映射到 443 的端口,否则浏览器会提示 “plain HTTP request was sent to HTTPS port”。- 镜像不会携带任何证书/密钥,如果挂载目录为空,Nginx 会因为找不到
/etc/nginx/ssl/fullchain.pem而直接退出。- Nginx 配置默认使用仓库内的
docker/nginx.conf,若需要自定义配置可在宿主机准备/path/to/button_nginx/nginx.conf并挂载到/etc/nginx/button_conf。- 如果需要把镜像推送到 Docker Hub,请在构建之前确认
Dockerfile未COPY任何私钥或敏感文件,当前配置已经满足。- 访问日志与错误日志会输出到容器标准输出,可通过
docker logs -f tsuki-button排查。
Nginx 配置说明
docker/nginx.conf在每个server块内检测$host,拒绝空 Host/纯 IP 的访问,默认允许任意域名。- 如需限制为单一域名,只需把两个
server_name _;替换为server_name button.mytsuki.cn;(示例),并保证证书 CN/SAN 匹配。- 如果挂载了
/etc/nginx/button_conf/nginx.conf,容器会优先使用该文件;否则继续使用项目内默认配置。
迁移到其它服务器时,把仓库同步过去执行 docker build,或把镜像推送到镜像仓库后在目标服务器直接 docker run 并挂上相应证书即可完成部署。
或者
录播源可以从月频取得,如果决定要协助添加音频,可以私信月月子索要在线录播站,她可能会给你。
图中提到的是我的常用工具也足够可靠,如果使用在线剪辑网站,一定要注意是否存在码率压缩降低的情况,虽然并不是无法容许的,但是建议不要这么做。
-
如果mp3文件名包含英文句点
.会造成音频无法正常显示,统一在name和path替换为下划线_,如《8_32》,zh-CN使用英文句点.,如《8.32》。 -
大部分歌切声音很小,请适当增幅(一般+6~+10.5),音量参考《yona yona dance》。
ffmpeg : https://github.com/FFmpeg/FFmpeg/releases
jijidown : http://client.jijidown.com/ (右键提取mp3和flv转mp4工具很好用)
SpleeterGUI : https://makenweb.com/SpleeterGUI
mp3DirectCut : https://mpesch3.de/
或者自行百度取得
- 项目使用GPL-3.0为基础开源协议
- 本项目修改自 Hiiro按钮 ,原作者 blacktunes
[ { // 语音命名 "name": "我梦魇tsuki求求你不要切", // 语音文件名 "path": "我梦魇tsuki求求你不要切.mp3", // 添加日期 "date": "2022-8-22", "translate": { // 语音中文翻译 "zh-CN": "我梦魇tsuki求求你不要切", // 语音英语翻译(本仓库已弃用,为避免bug勿删) "en-US": "nya nya nya~" }, // 语音所属分类(日常、歌、梗、其他人格) "category": "日常" }, // 记得半角逗号 { …… } // 结尾没有逗号 ] // 每一条刚好是十行,可以很方便的查漏补缺