mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-17 13:57:10 +00:00
39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
import fetch from 'node-fetch'
|
|
import { AbstractTool } from './AbstractTool.js'
|
|
|
|
export class SearchMusicTool extends AbstractTool {
|
|
name = 'searchMusic'
|
|
|
|
parameters = {
|
|
properties: {
|
|
keyword: {
|
|
type: 'string',
|
|
description: '音乐的标题或关键词'
|
|
}
|
|
},
|
|
required: ['keyword']
|
|
}
|
|
|
|
func = async function (opts) {
|
|
let { keyword } = opts
|
|
try {
|
|
let result = await searchMusic163(keyword)
|
|
return `search result: ${result}`
|
|
} catch (e) {
|
|
return `music search failed: ${e}`
|
|
}
|
|
}
|
|
|
|
description = 'Useful when you want to search music by keyword.'
|
|
}
|
|
|
|
export async function searchMusic163 (name) {
|
|
let response = await fetch(`http://music.163.com/api/search/get/web?s=${name}&type=1&offset=0&total=true&limit=6`)
|
|
let json = await response.json()
|
|
if (json.result?.songCount > 0) {
|
|
return json.result.songs.map(song => {
|
|
return `id: ${song.id}, name: ${song.name}, artists: ${song.artists.map(a => a.name).join('&')}, alias: ${song.alias || 'none'}`
|
|
}).join('\n')
|
|
}
|
|
return null
|
|
}
|