跳到正文

Playcount API ​

提供 foo_playcount 播放统计数据查询与全库指标聚合能力。

环境要求:须安装 foo_playcount 组件方可获取真实播放统计频次与时间戳;未安装时统计数值将回退为默认值。

查询 ​

playcount.get ​

批量读取曲目的 foo_playcount 播放统计指标(未安装 foo_playcount 时播放次数统一返回 0 且日期字段缺省)

参数类型必填说明
pathsstring[]是待查询的曲目路径列表(支持 |subsong:N 语法指定 CUE 子曲目;若后缀索引无法解析为有效数字则自动剥除并回退指向首轨)

返回值

字段类型说明
countintegerresults 数组包含的统计数据行总数
resultsPlaycountRow[]逐路径统计结果列表(保持与请求路径列表相同的顺序)
results[].pathstring请求时传入的原始曲目路径(在成功与失败行中均原样保留 |subsong:N 等后缀)
results[].successboolean宿主是否成功解析到该曲目句柄
results[].errorstring曲目解析失败的具体原因(仅在 success 为 false 时提供)
results[].playCountinteger累计播放总次数(未曾播放时为 0;仅在 success 为 true 时提供)
results[].firstPlayedstring首次播放时间戳文本(格式由 foo_playcount 决定;时间未知时缺省)
results[].lastPlayedstring最近一次播放时间戳文本(时间未知时缺省)
results[].addedstring曲目被添加至媒体库的时间戳文本(时间未知时缺省)
results[].ratinginteger星级评分数值(取值范围 1 至 5;未评分曲目缺省,不会返回 0)
results[].inLibraryboolean当前曲目是否已纳入媒体库(仅在 success 为 true 时提供)

成功时 success 为 true;失败时返回 { success: false, error, code },code 见错误码。

javascript
const result = await fb2k.invoke('playcount.get', {
    paths: ['C:\\Music\\song.flac']
});
if (result.success === false) throw new Error(result.error);
console.log(`播放次数: ${result.results[0].playCount}`);

playcount.getBatch ​

批量读取曲目播放统计(功能与参数完全等同于 playcount.get,保留供兼容批量调用命名习惯)

参数类型必填说明
pathsstring[]是待查询的曲目路径列表(支持 |subsong:N 语法指定 CUE 子曲目;若后缀索引无法解析为有效数字则自动剥除并回退指向首轨)

返回值

字段类型说明
countintegerresults 数组包含的统计数据行总数
resultsPlaycountRow[]逐路径统计结果列表(保持与请求路径列表相同的顺序)
results[].pathstring请求时传入的原始曲目路径(在成功与失败行中均原样保留 |subsong:N 等后缀)
results[].successboolean宿主是否成功解析到该曲目句柄
results[].errorstring曲目解析失败的具体原因(仅在 success 为 false 时提供)
results[].playCountinteger累计播放总次数(未曾播放时为 0;仅在 success 为 true 时提供)
results[].firstPlayedstring首次播放时间戳文本(格式由 foo_playcount 决定;时间未知时缺省)
results[].lastPlayedstring最近一次播放时间戳文本(时间未知时缺省)
results[].addedstring曲目被添加至媒体库的时间戳文本(时间未知时缺省)
results[].ratinginteger星级评分数值(取值范围 1 至 5;未评分曲目缺省,不会返回 0)
results[].inLibraryboolean当前曲目是否已纳入媒体库(仅在 success 为 true 时提供)

成功时 success 为 true;失败时返回 { success: false, error, code },code 见错误码。

javascript
const result = await fb2k.invoke('playcount.getBatch', {
    paths: ['C:\\Music\\a.flac', 'C:\\Music\\b.flac']
});

playcount.getStats ​

汇总全媒体库曲目的播放次数与星级评分综合统计指标

无参数。

返回值

字段类型说明
totalTracksinteger媒体库中索引的曲目总数
playedTracksinteger至少播放过一次的曲目总数
unplayedTracksinteger从未播放过的曲目总数
ratedTracksinteger已设定星级评分(1 至 5 星)的曲目总数
totalPlayCountinteger媒体库中所有曲目的累计播放总次数之和
maxPlayCountinteger单首曲目的最高累计播放次数
averagePlayCountnumber已播放曲目的平均播放次数(若无任何播放记录则返回 0)
averageRatingnumber已评分曲目的平均星级评分(若无任何评分曲目则返回 0)

成功时 success 为 true;失败时返回 { success: false, error, code },code 见错误码。

json
{
    "success": true,
    "totalTracks": 5000,
    "playedTracks": 3200,
    "unplayedTracks": 1800,
    "ratedTracks": 800,
    "totalPlayCount": 15000,
    "maxPlayCount": 120,
    "averagePlayCount": 4.7,
    "averageRating": 3.8
}
javascript
const stats = await fb2k.invoke('playcount.getStats');
if (stats.success === false) throw new Error(stats.error);
console.log(`已播放: ${stats.playedTracks}/${stats.totalTracks}`);

写入 ​

playcount.set ​

尝试写入播放统计数据(占位接口:因 foo_playcount 未提供外部修改统计机制,调用恒以 NOT_SUPPORTED 失败;如需修改评分请使用 rating.set)

参数类型必填说明
pathstring是目标曲目文件路径

返回值

成功时 success 为 true;失败时返回 { success: false, error, code },code 见错误码。

javascript
// 注意:此 API 恒返回失败,修改星级评分请调用 rating.set
const result = await fb2k.invoke('playcount.set', { path: 'E:\\Music\\song.flac' });
if (result.success === false) console.log(result.error); // "Direct playcount modification not supported..."