@ikenxuan/amagi

v6 迁移指南

从 v5.x 升级到 v6.x 的迁移指南

v6 迁移指南

本文档帮助你从 amagi v5.x 升级到 v6.x。

v6 正式版已发布。自 v6.5.0 起,v6.0 中标记为废弃的兼容 API 已彻底移除。

核心变更

v6 是一次重大重构,主要变更:

  1. 移除 getXxxData API - 所有 getDouyinData、getBilibiliData 等方法已删除(v6.0 ~ v6.4 调用会抛出错误,v6.5.0 起彻底移除)
  2. 统一使用 Fetcher API - 通过 client.平台.fetcher.方法名() 调用
  3. 日志系统重构 - 移除 log4js,改用事件驱动架构
  4. 方法名英文化 - 所有 API 方法名改为英文

安装

npm install @ikenxuan/amagi

API 调用方式迁移

v5 用法 (已移除)

// ❌ v6 中这些 API 已移除,无法导入
import { getDouyinData, getBilibiliData } from '@ikenxuan/amagi'

await getDouyinData('视频作品数据', { aweme_id: '123' }, cookie)
await getBilibiliData('单个视频作品数据', { bvid: 'BV1xx' }, cookie)

v6 用法

import amagi from '@ikenxuan/amagi'

const client = amagi({
cookies: {
bilibili: 'SESSDATA=xxx; ...',
douyin: 'ttwid=...; ...',
kuaishou: 'did=...; ...',
xiaohongshu: 'a1=...; ...',
}
})

// 无需再传递 cookie
const video = await client.bilibili.fetcher.fetchVideoInfo({ bvid: 'BV1xx411c7mD' })
const work = await client.douyin.fetcher.fetchVideoWork({ aweme_id: '123' })

日志系统迁移

v5 用法 (已移除)

// ❌ v6 中已移除
import { logger, initLogger } from '@ikenxuan/amagi'
initLogger()
logger.info('消息')

v6 用法

import { amagiEvents } from '@ikenxuan/amagi'

// 监听日志事件
amagiEvents.on('log:info', (data) => console.log(data.message))
amagiEvents.on('log:error', (data) => console.error(data.message))

// 监听 API 事件
amagiEvents.on('api:success', (data) => {
  console.log(`[${data.platform}] ${data.methodType} 成功`)
})

详见 事件系统。

方法名对照表

参数变更

抖音搜索类型

type 参数从中文改为英文:

import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
// v5: type: '用户' | '视频' | '综合'
// v6: type: 'user' | 'video' | 'general'

await client.douyin.fetcher.searchContent({
  query: '关键词',
  type: 'user' // 而不是 '用户'
})

迁移示例

获取视频信息

import amagi from '@ikenxuan/amagi'

// v5 ❌
// const data = await getBilibiliData('单个视频作品数据', { bvid: 'BV1xx' }, cookie)

// v6 ✅
const client = amagi({ cookies: { bilibili: 'SESSDATA=xxx', douyin: '', kuaishou: '', xiaohongshu: '' } })
const data = await client.bilibili.fetcher.fetchVideoInfo({ bvid: 'BV1xx411c7mD' })

获取评论

import amagi from '@ikenxuan/amagi'

// v5 ❌
// const data = await getDouyinData('评论数据', { aweme_id: '123', number: 20 }, cookie)

// v6 ✅
const client = amagi({ cookies: { bilibili: '', douyin: 'ttwid=xxx', kuaishou: '', xiaohongshu: '' } })
const data = await client.douyin.fetcher.fetchWorkComments({
  aweme_id: '123',
  number: 20
})

自定义日志

import { amagiEvents } from '@ikenxuan/amagi'
import pino from 'pino'

const logger = pino()

// 将 amagi 日志转发到 pino
amagiEvents.on('log:info', (data) => logger.info(data.message))
amagiEvents.on('log:warn', (data) => logger.warn(data.message))
amagiEvents.on('log:error', (data) => logger.error(data.message))

常见问题

Q: 调用 getXxxData 报错怎么办?

这些方法已完全移除。请按照上面的对照表,将调用改为对应的 fetcher 方法。

Q: 如何监控 API 调用性能?

import { amagiEvents } from '@ikenxuan/amagi'

amagiEvents.on('api:success', (data) => {
  console.log(`[${data.platform}] ${data.methodType} 耗时 ${data.duration}ms`)
})

amagiEvents.on('api:error', (data) => {
  console.error(`[${data.platform}] ${data.methodType} 失败: ${data.errorMessage}`)
})

Q: client.平台.api 和 client.平台.fetcher 有什么区别?

api 已在 v6.5.0 中移除,请统一使用 fetcher。fetcher 是 v6 的调用方式。

最后更新于 2026-09-24

On this page