get-douban-rank
Retrieve real-time Douban trending rankings for books, movies, TV shows, and variety programs with ratings and popularity data.
Instructions
获取豆瓣实时热门榜单,提供当前热门的图书、电影、电视剧、综艺等作品信息,包含评分和热度数据
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | subject | |
| start | No | ||
| count | No |
Implementation Reference
- src/tools/douban.ts:27-60 (handler)The main handler function that fetches and processes Douban real-time hot rankings for subjects, movies, or TV shows.func: async (args: unknown) => { const { type, start, count } = doubanRankSchema.parse(args); const resp = await http.get<{ subject_collection_items: any[]; }>(URL_MAP[type], { params: { type, start, count, for_mobile: 1, }, headers: { Referer: 'https://m.douban.com/subject_collection/movie_real_time_hotest', }, }); if (!Array.isArray(resp.data.subject_collection_items)) { throw new Error('获取豆瓣实时热门榜失败'); } return resp.data.subject_collection_items.map((item) => { return { type_name: item.type_name, title: item.title, info: item.info, cover: item.cover.url, year: item.year, release_date: item.release_date, link: item.url, popularity: item.score, rating_count: item.rating.count, rating_value: item.rating.count > 0 ? item.rating.value : undefined, hashtags: item.related_search_terms.map((term: any) => `#${term.name}`).join(' '), }; }); },
- src/tools/douban.ts:4-15 (schema)Zod schema defining input parameters: type (subject/movie/tv, default 'subject'), start (default 0), count (default 10).const doubanRankSchema = z.object({ type: z .union([ z.literal('subject').describe('图书、电影、电视剧、综艺等'), z.literal('movie').describe('电影'), z.literal('tv').describe('电视剧'), ]) .optional() .default('subject'), start: z.number().int().optional().default(0), count: z.number().int().optional().default(10), });
- src/tools/douban.ts:23-61 (registration)Registers the tool with defineToolConfig, providing name, description, schema, and handler function.export default defineToolConfig({ name: 'get-douban-rank', description: '获取豆瓣实时热门榜单,提供当前热门的图书、电影、电视剧、综艺等作品信息,包含评分和热度数据', zodSchema: doubanRankSchema, func: async (args: unknown) => { const { type, start, count } = doubanRankSchema.parse(args); const resp = await http.get<{ subject_collection_items: any[]; }>(URL_MAP[type], { params: { type, start, count, for_mobile: 1, }, headers: { Referer: 'https://m.douban.com/subject_collection/movie_real_time_hotest', }, }); if (!Array.isArray(resp.data.subject_collection_items)) { throw new Error('获取豆瓣实时热门榜失败'); } return resp.data.subject_collection_items.map((item) => { return { type_name: item.type_name, title: item.title, info: item.info, cover: item.cover.url, year: item.year, release_date: item.release_date, link: item.url, popularity: item.score, rating_count: item.rating.count, rating_value: item.rating.count > 0 ? item.rating.value : undefined, hashtags: item.related_search_terms.map((term: any) => `#${term.name}`).join(' '), }; }); }, });
- src/tools/douban.ts:17-21 (helper)URL mapping for different content types used in the API request.const URL_MAP: Record<z.infer<typeof doubanRankSchema>['type'], string> = { subject: 'https://m.douban.com/rexxar/api/v2/subject_collection/subject_real_time_hotest/items', movie: 'https://m.douban.com/rexxar/api/v2/subject_collection/movie_real_time_hotest/items', tv: 'https://m.douban.com/rexxar/api/v2/subject_collection/tv_real_time_hotest/items', };