Skip to main content
Glama

get-bilibili-rank

Retrieve Bilibili video rankings across categories like animation, music, and gaming to analyze content trends and popular videos.

Instructions

获取哔哩哔哩视频排行榜,包含全站、动画、音乐、游戏等多个分区的热门视频,反映当下年轻人的内容消费趋势

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeNo排行榜分区

Implementation Reference

  • Core handler function that orchestrates the primary and backup methods to fetch Bilibili video rankings.
    const getBilibiliRank = async (type: number) => { try { return await mainGetBilibiliRank(type); } catch (error) { logger.error(error); return await backupGetBilibiliRank(type); } };
  • Zod input schema defining the optional 'type' parameter for selecting different Bilibili ranking categories.
    const bilibiliRequestSchema = z.object({ type: z .union([ z.literal(0).describe('全站'), z.literal(1).describe('动画'), z.literal(3).describe('音乐'), z.literal(4).describe('游戏'), z.literal(5).describe('娱乐'), z.literal(188).describe('科技'), z.literal(119).describe('鬼畜'), z.literal(129).describe('舞蹈'), z.literal(155).describe('时尚'), z.literal(160).describe('生活'), z.literal(168).describe('国创相关'), z.literal(181).describe('影视'), ]) .optional() .default(0) .describe('排行榜分区'), });
  • Tool registration via defineToolConfig, defining name, description, schema reference, and inline handler that parses args and calls the core function.
    export default defineToolConfig({ name: 'get-bilibili-rank', description: '获取哔哩哔哩视频排行榜,包含全站、动画、音乐、游戏等多个分区的热门视频,反映当下年轻人的内容消费趋势', zodSchema: bilibiliRequestSchema, func: async (args: unknown) => { const { type } = bilibiliRequestSchema.parse(args); return getBilibiliRank(type); }, });
  • Primary helper function performing the HTTP request to Bilibili's ranking API v2 with WBI authentication and data transformation.
    const mainGetBilibiliRank = async (type: number) => { const wbiData = await getBiliWbi(); const resp = await http.get<{ code: number; data: { list: any[]; }; message: string; }>(`https://api.bilibili.com/x/web-interface/ranking/v2?rid=${type}&type=all&${wbiData}`, { headers: { Referer: 'https://www.bilibili.com/ranking/all', 'User-Agent': UA, Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', 'Accept-Encoding': 'gzip, deflate, br', 'Sec-Ch-Ua': '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"', 'Sec-Ch-Ua-Mobile': '?0', 'Sec-Ch-Ua-Platform': '"Windows"', 'Sec-Fetch-Dest': 'document', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-User': '?1', 'Upgrade-Insecure-Requests': '1', }, }); if (resp.data.code !== 0) { throw new Error(resp.data.message); } return resp.data.data.list.map((item) => ({ title: item.title, description: item.desc || '该视频暂无简介', cover: item.pic, author: item.owner?.name, publishTime: dayjs.unix(item.pubdate).toISOString(), view: item.stat?.view || 0, link: item.short_link_v2 || `https://www.bilibili.com/video/${item.bvid}`, })); };
  • Helper function to retrieve or generate cached WBI query parameters required for authenticated Bilibili API calls.
    const getBiliWbi = async (): Promise<string> => { const CACHE_KEY = 'bilibili-wbi'; const cachedData = cacheStorage.getItem(CACHE_KEY); if (cachedData) { return cachedData; } const { imgKey, subKey } = await getWbiKeys(); const params = { foo: '114', bar: '514', baz: '1919810' }; const query = encodeWbi(params, imgKey, subKey); cacheStorage.setItem(CACHE_KEY, query); return query; };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/baranwang/mcp-trends-hub'

If you have feedback or need assistance with the MCP directory API, please join our Discord server