touhou-tagger
Version:
从 THBWiki 自动填写东方 Project CD 曲目信息.
100 lines (73 loc) • 2.47 kB
Markdown
# 代码贡献指南
需要已安装 `Node.js`, `pnpm` 及 `TypeScript`
## 安装依赖项
```powershell
pnpm install
```
## 添加其他数据源
在 `src/core/metadata/` 中添加文件 `xxx.ts`, 继承 `MetadataSource` 类:
```TypeScript
import { MetadataSource } from './metadata-source'
import { Metadata } from './metadata'
export class XXX extends MetadataSource {
// 搜索专辑, 返回 string 表示精确匹配, 返回 string[] 表示未找到精确匹配, 内容是根据 albumName 搜索得到的结果
async resolveAlbumName(albumName: string): Promise<string[] | string> { /* ... */ }
// 下载专辑信息, 返回 Metadata[], cover 如果传入现成的封面图片 Buffer, 将跳过封面下载节省时间
async getMetadata(albumName: string, cover?: Buffer): Promise<Metadata[]> { /* ... */ }
}
export const xxx = new XXX()
```
然后在 `src/core/metadata/source-mappings.ts` 中添加对应项:
```TypeScript
import { thbWiki } from './thb-wiki';
import { xxx } from './xxx';
import { MetadataSource } from './metadata-source';
export const sourceMappings = {
'thb-wiki': thbWiki,
'xxx': xxx,
} as { [type: string]: MetadataSource }
```
最后在 `src/cli/options.ts` 中添加选项:
```TypeScript
.option('source', {
alias: 's',
type: 'string',
default: 'thb-wiki',
choices: ['thb-wiki', 'doujin-meta', 'local-mp3', 'local-json', 'xxx'],
description: '设置数据源',
})
```
## 添加其他文件类型支持
在 `src/core/writer/` 中添加文件 `xxx-writer.ts`, 继承 `MetadataWriter` 类:
```TypeScript
import { MetadataWriter } from './metadata-writer'
import { Metadata } from './metadata'
export class XxxWriter extends MetadataWriter {
// 将专辑信息写入文件
async write(metadata: Metadata, filePath: string): Promise<void> { /* ... */ }
}
export const xxxWriter = new XxxWriter()
```
然后在 `src/core/writer/writer-mappings.ts` 中添加对应项:
```TypeScript
import { MetadataWriter } from './metadata-writer'
import { mp3Writer } from './mp3-writer'
import { xxxWriter } from './xxx-writer'
export const writerMappings = {
'.mp3': mp3Writer,
'.xxx': xxxWriter,
} as { [type: string]: MetadataWriter }
```
## 编译
```powershell
pnpm watch
```
## 本地版本
安装:
```powershell
pnpm link --global
```
卸载:
```powershell
pnpm remove --global touhou-tagger
```