@ikenxuan/amagi

v6 迁移指南

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

v6 迁移指南

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

v6 目前处于 beta 阶段,正式版尚未发布。

核心变更

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

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

安装

npm install @ikenxuan/amagi

API 调用方式迁移

v5 用法 (已移除)

// ❌ v6 中这些调用会直接抛出 DeprecatedApiError
import { getDouyinData, getBilibiliData } from '@ikenxuan/amagi'

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

v6 用法

import  from '@ikenxuan/amagi'

const  = ({
  : {
    : 'SESSDATA=xxx; ...',
    : 'ttwid=...; ...',
    : 'did=...; ...',
    : 'a1=...; ...',
  }
})

// 无需再传递 cookie
const  = await ...({ : 'BV1xx411c7mD' })
const  = await ...({ : '123' })
import  from '@ikenxuan/amagi'

// 需要手动传递 cookie
const  = await ..(
  { : 'BV1xx411c7mD' }, 
  'SESSDATA=xxx; ...'
)
import  from '@ikenxuan/amagi'

// 创建绑定 cookie 的 fetcher
const  = .('SESSDATA=xxx; ...')
const  = await .({ : 'BV1xx411c7mD' })

日志系统迁移

v5 用法 (已移除)

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

v6 用法

import {  } from '@ikenxuan/amagi'

// 监听日志事件
.('log:info', () => .(.))
.('log:error', () => .(.))

// 监听 API 事件
.('api:success', () => {
  .(`[${.}] ${.} 成功`)
})

详见 事件系统

方法名对照表

参数变更

抖音搜索类型

type 参数从中文改为英文:

// v5: type: '用户' | '视频' | '综合'
// v6: type: 'user' | 'video' | 'general'

await ...({ 
  : '关键词', 
  : 'user'  // 而不是 '用户'
})

迁移示例

获取视频信息

import  from '@ikenxuan/amagi'

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

// v6 ✅
const  = ({ : { : 'SESSDATA=xxx', : '', : '', : '' } })
const  = await ...({ : 'BV1xx411c7mD' })

获取评论

import  from '@ikenxuan/amagi'

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

// v6 ✅
const  = ({ : { : '', : 'ttwid=xxx', : '', : '' } })
const  = await ...({ 
  : '123', 
  : 20 
})

自定义日志

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

const  = ()

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

常见问题

Q: 调用 getXxxData 报错怎么办?

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

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

import {  } from '@ikenxuan/amagi'

.('api:success', () => {
  .(`[${.}] ${.} 耗时 ${.}ms`)
})

.('api:error', () => {
  .(`[${.}] ${.} 失败: ${.}`)
})

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

api 已废弃,请统一使用 fetcher。两者功能相同,但 fetcher 是 v6 推荐的调用方式。

On this page