From b62cd6fa6c3b36b8de24a34f48c6962cc096cb91 Mon Sep 17 00:00:00 2001 From: Yesterday17 Date: Sat, 28 Jan 2023 14:26:29 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=AE=9A=E4=B9=89=20`.repo`=20=E7=9B=AE?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/02.metadata-repository/01.folder-structure.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/02.metadata-repository/01.folder-structure.md b/src/02.metadata-repository/01.folder-structure.md index cdf224a..300fb0c 100644 --- a/src/02.metadata-repository/01.folder-structure.md +++ b/src/02.metadata-repository/01.folder-structure.md @@ -8,9 +8,13 @@ │ └── @META-DUPLICATED │ ├── @META-DUPLICATED.0.toml │ └── @META-DUPLICATED.1.toml -└── tag +├── tag │ └── [Anime] 神様になった日.toml +├── .repo +│ └── 12 +│ └── 34 +│ └── 12345678-1234-5678-1234-123456789abc ├── repo.toml ``` -专辑存放的目录由 repo.toml 指定。 \ No newline at end of file +专辑存放的目录由 `repo.toml` 指定,默认为 `album`;标签存放的目录为 `tag`,该目录下所有的 `toml` 文件(不包含子目录)都会被认为是描述标签信息的文件;`.repo` 目录是由 `anni` 生成的,仅用于缓存的目录结构,在发布时不应该带上该目录。 \ No newline at end of file From 4b9663ec1e0bb4ed55067db3fb110bee7151ec3a Mon Sep 17 00:00:00 2001 From: Yesterday17 Date: Sat, 28 Jan 2023 14:27:50 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E7=A7=BB=E9=99=A4=20Annil=20=E9=9F=B3?= =?UTF-8?q?=E8=BD=A8=E6=89=A9=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../04.annil-track-extension.md | 41 ------------------- src/SUMMARY.md | 1 - 2 files changed, 42 deletions(-) delete mode 100644 src/05.audio-library/04.annil-track-extension.md diff --git a/src/05.audio-library/04.annil-track-extension.md b/src/05.audio-library/04.annil-track-extension.md deleted file mode 100644 index 3cff143..0000000 --- a/src/05.audio-library/04.annil-track-extension.md +++ /dev/null @@ -1,41 +0,0 @@ -# [Draft] Annil 音轨扩展 - -> ⚠️️目前的音频扩展仍处于 `Draft` 状态,尚未完全定稿。欢迎随时提出意见或建议。 - -针对互联网上流通较为广泛的单音轨音频,原本的 `Annil` 只能以专辑的形式分散管理。`Annil` 音轨扩展约定了针对单音轨音频的处理方式。 - -## 音频文件名 - -我们规定音频的文件名统一为 `{标题} - {艺术家}`。其中艺术家名称使用逗号 `,` 分隔,**不采用 `Anni` 音频约定中的形式**,以减短文件名长度。 - -以下文件名均为有效文件名: - -```text -三月雨 - 洛天依,Wing翼 -霜雪千年 - 洛天依,乐正绫,COPY -``` - -我们不建议使用 `Various Artists` 作为音轨的艺术家,因为容易产生冲突。 - -## 品番生成 - -为了最大程度兼容 `Annil` 协议,音轨扩展依然采用 `Annil` 的专辑-音轨形式,因此需要对每个音轨生成独一无二的品番。 - -品番通过 `UUIDv5` 生成,`Name` 为音频文件名,`Namespace` 如下: - -```text -7696064f-415c-518e-a828-4d9019c3cf93 -``` - -该预设 `UUID` 通过 `ns:DNS`、`anni.rs` 生成。 - -上文中音频文件名对应的品番如下: - -```text -102e82a3-9949-5e09-a9e2-59895fa3f194 # 三月雨 - 洛天依,Wing翼 -b8105a43-7a4e-5797-9084-f00f26abd829 # 霜雪千年 - 洛天依,乐正绫,COPY -``` - -## 音频获取 - -在尝试获取 `Annil` 音轨扩展定义的音频时,和一般的 `Annil` 音频相同,需要提供品番和音轨号。其中品番由上文定义,音轨号则强制为 1。 diff --git a/src/SUMMARY.md b/src/SUMMARY.md index d1a1ed0..595ab89 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -44,7 +44,6 @@ - [Anni 音频仓库协议](./05.audio-library/01.protocol.md) - [不同的音频仓库实现](./05.audio-library/02.implements.md) - [annil-rs](./05.audio-library/03.annil-rs.md) - - [[Draft] Annil 音轨扩展](./05.audio-library/04.annil-track-extension.md) - [管理后端 Anniv](./06.anniv/00.readme.md) - [基本信息](./06.anniv/01.info.md) - [用户系统](./06.anniv/02.user.md) From 58c38f89086abef74adb99e3b8086a963ef3f395 Mon Sep 17 00:00:00 2001 From: Yesterday17 Date: Sat, 28 Jan 2023 16:18:35 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20annil=20=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E5=85=83=E6=95=B0=E6=8D=AE=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/05.audio-library/01.protocol.md | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/05.audio-library/01.protocol.md b/src/05.audio-library/01.protocol.md index a567f21..29c8b6d 100644 --- a/src/05.audio-library/01.protocol.md +++ b/src/05.audio-library/01.protocol.md @@ -5,7 +5,7 @@ > ⚠️️ 在协议版本迈入 `1.0` 之前,任何改动都有可能发生。 最后修改:2022 年 05 月 10 日 -协议版本:0.4.1 +协议版本:0.5.0 ## 定义 @@ -91,6 +91,8 @@ Access-Control-Allow-Origin: * ## 音频仓库信息 +> ⚠️️ 该接口后续可能会被移除 + 获取音频仓库信息的 `API` 定义为 `GET /info`,所有用户都可以请求。 返回结果如下例: @@ -102,10 +104,19 @@ Access-Control-Allow-Origin: * "version": "Annil v0.1.0", // 当前运行的 Annil 音频仓库协议版本 // 用于客户端比对其支持的能力 - "protocol_version": "0.2.1", + "protocol_version": "0.5.0", // 音频仓库最近一次数据更新时间 // 用于客户端缓存 `/albums` 请求结果 - "last_update": 1639631487 + "last_update": 1639631487, + // 音频仓库中音频资源的元数据源 + "metadata": { + // 该仓库的链接 + "repo": "https://github.com/ProjectAnni/repo", + // [可选][二选一] 该仓库对应的 Annim 服务器地址 + "server": "https://annim.server", + // [可选][二选一] 该仓库对应的构建数据源下载路径 + "db": "https://db-server/db" + } } ``` @@ -129,7 +140,14 @@ Access-Control-Allow-Origin: * ] ``` -`Anni` 音频仓库协议**建议**音频仓库在响应中携带 `ETag` 头部,以便客户端缓存。 +该返回会携带以下附加头部: + +| Key | 含义 | +| ------------------- | ---------------------------------------- | +| `X-Metadata-Repo` | 与 `metadata.repo` 相同 | +| `X-Metadata-Server` | 与 `metadata.server` 相同 | +| `X-Metadata-DB` | 与 `metadata.db` 相同 | +| `ETag` | Annil 实际包含的资源指纹,用于客户端缓存 | ### 客户端实现指导 From 52985ca6eb7c3f5ecc371efd2d34563cfa5ce573 Mon Sep 17 00:00:00 2001 From: Yesterday17 Date: Thu, 23 Mar 2023 01:36:32 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=AF=B9=E4=B8=93=E8=BE=91=E8=89=BA?= =?UTF-8?q?=E6=9C=AF=E5=AE=B6=E4=B8=BA=20[Unknown=20Artist]=20=E6=83=85?= =?UTF-8?q?=E5=86=B5=E7=9A=84=E7=89=B9=E6=AE=8A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/02.metadata-repository/01.folder-structure.md | 10 ++++++---- src/02.metadata-repository/02.album-information.md | 1 + src/50.anni-cli/05.workspace.md | 1 - 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/02.metadata-repository/01.folder-structure.md b/src/02.metadata-repository/01.folder-structure.md index 300fb0c..75b4da9 100644 --- a/src/02.metadata-repository/01.folder-structure.md +++ b/src/02.metadata-repository/01.folder-structure.md @@ -11,10 +11,12 @@ ├── tag │ └── [Anime] 神様になった日.toml ├── .repo -│ └── 12 -│ └── 34 -│ └── 12345678-1234-5678-1234-123456789abc +│ └── [Undefined Structure] ├── repo.toml ``` -专辑存放的目录由 `repo.toml` 指定,默认为 `album`;标签存放的目录为 `tag`,该目录下所有的 `toml` 文件(不包含子目录)都会被认为是描述标签信息的文件;`.repo` 目录是由 `anni` 生成的,仅用于缓存的目录结构,在发布时不应该带上该目录。 \ No newline at end of file +- 专辑存放的目录由 `repo.toml` 指定,默认为 `album` +- 标签存放的目录为 `tag`,该目录下所有的 `toml` 文件(不包含子目录)都会被认为是描述标签信息的文件 +- `.repo` 目录是由 `anni` 生成的,仅用于缓存的目录结构 + - 结构未定义,由 `anni` 实现自行决定 + - 在发布时不应该带上该目录 \ No newline at end of file diff --git a/src/02.metadata-repository/02.album-information.md b/src/02.metadata-repository/02.album-information.md index 37e0ea3..4fbf516 100644 --- a/src/02.metadata-repository/02.album-information.md +++ b/src/02.metadata-repository/02.album-information.md @@ -122,6 +122,7 @@ catalog = "KSLA-0178" # 专辑艺术家 [必填项] # # 使用「Anni 艺术家别名嵌套」格式表示具体的艺术家。 +# 该字段只有在值为 `[Unknown Artist]` 时才会自动和碟片中的艺术家合并。 artist = "やなぎなぎ" # # 专辑的发行日期 [必填项][DATE] diff --git a/src/50.anni-cli/05.workspace.md b/src/50.anni-cli/05.workspace.md index 7466e9c..ac4f565 100644 --- a/src/50.anni-cli/05.workspace.md +++ b/src/50.anni-cli/05.workspace.md @@ -204,7 +204,6 @@ root = "/home/yesterday17/Music" - [x] `-u`, `--uuid`:通过 `Album ID` 而非专辑路径发布专辑 - [x] `-s`, `--soft`:在专辑发布时,采用移动+软删除的方式替代直接移动目录。发布结束后,专辑状态变更为**已发布**。工作目录中仍然会保留专辑信息,但用户目录中的专辑会被移除。 - ### fsck 修复一些常见的工作空间问题。