Skip to content

dovela/tsuki-button

 
 

Repository files navigation

梦魇Tsuki 按钮 / 梦魇月按钮

梦魇月……梦魇月……还有稿子要画

相关链接:

参与完善本项目

  • 您可以在Issues提出您的建议

    • 若是请求添加新语音,请使用指定的issues模板
    • 不熟悉github的用法也可以到Bilibili和我联系
  • 如果您可以进行开发,那么请Fork本项目进行修改,完成修改后在本项目中发起一个Pull Request,详细说明请查看以下条目

    Pull Request请提交至dev分支

添加或修改音频/完善翻译

音频文件推荐使用mp3格式,请先音量标准化,然后放入public/voices/目录

所有的分类和音频信息都存储在setting/translate目录的json文件中,添加或修改音频信息完善翻译,你需要修改对应文件中的内容

locales.jsoncategory.json分别为 UI 界面翻译和分类信息,不要修改,除非你打算接手维护

请新建json文件,注意文件名一致,允许留下你的id(可以使用中文、数字、字母、下划线的组合),例:02_dovela_22.08.22.json

语音文件结构示例如下:

[
  {
    // 语音命名
    "name": "我梦魇tsuki求求你不要切",
    // 语音文件名
    "path": "我梦魇tsuki求求你不要切.mp3",
    // 添加日期
    "date": "2022-8-22",
    "translate": {
      // 语音中文翻译
      "zh-CN": "我梦魇tsuki求求你不要切",
      // 语音英语翻译(本仓库已弃用,为避免bug勿删)
      "en-US": "nya nya nya~"
    },
    // 语音所属分类(日常、歌、梗、其他人格)
    "category": "日常"
  },  // 记得半角逗号
  {
  ……
  }  // 结尾没有逗号
]  // 每一条刚好是十行,可以很方便的查漏补缺

部署项目

首先你的计算机应该已经部署了node.js并正确设置了环境变量

cd tsuki-button
yarn install  // 安装所需插件
# npm run server  // 本地测试
npm run build  // 打包网站

会在工程根目录下生成一个dist文件夹,复制到自己的服务器上搭建就好了,如何搭建网站不在本文叙述范围

本地测试的话,执行npm run serve,命令行会给一个网址http://localhost:端口。但是如果点任何一个按钮网站都会崩溃,是正常现象,生产条件下搭建的网站正常

使用 Docker 发布

如果想把编译和部署封装进容器,可以直接使用仓库根目录的 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:alpinedocker/nginx.conf 默认把 80 端口 301 跳转到 HTTPS,并在 443 上启用 HTTP/2、HSTS、静态资源缓存。TLS 配置同时启用 TLS 1.3 与 TLS 1.2,保证旧终端也能握手。请在宿主机准备好以 fullchain.pemprivkey.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,请在构建之前确认 DockerfileCOPY 任何私钥或敏感文件,当前配置已经满足。
  • 访问日志与错误日志会输出到容器标准输出,可通过 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文件名包含英文句点 . 会造成音频无法正常显示,统一在namepath替换为下划线 _ ,如《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/

或者自行百度取得

LICENSE

About

梦魇tsuki的语音按钮

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Vue 54.3%
  • TypeScript 31.5%
  • JavaScript 9.2%
  • Stylus 3.4%
  • HTML 1.6%