UNPKG

tv-recommender-mcp-server

Version:

MCP server for TV show recommendations

85 lines (84 loc) 2.98 kB
"use strict"; /** * 剧集详情工具实现 * 获取特定剧集的详细信息 */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getShowDetails = getShowDetails; const axios_1 = __importDefault(require("axios")); const config_1 = __importDefault(require("../utils/config")); /** * 状态映射表 - 将TMDb API返回的状态转换为中文 */ const STATUS_MAP = { 'Ended': '已完结', 'Returning Series': '连载中', 'Canceled': '已取消', 'In Production': '制作中' }; /** * 获取剧集详情 * @param params 工具参数 * @returns 剧集详情或错误提示 */ async function getShowDetails(params) { try { const { show_title } = params; // 1. 搜索剧集获取ID const searchUrl = `https://api.themoviedb.org/3/search/tv`; const searchResponse = await axios_1.default.get(searchUrl, { params: { api_key: config_1.default.tmdbApiKey, query: show_title, language: 'zh-CN', include_adult: false } }); const searchResults = searchResponse.data.results; // 如果没有搜索结果 if (!searchResults || searchResults.length === 0) { return `抱歉,未能找到您提供的剧集"${show_title}"。`; } // 2. 获取第一个匹配结果的ID const showId = searchResults[0].id; // 3. 获取剧集详情 const detailsUrl = `https://api.themoviedb.org/3/tv/${showId}`; const detailsResponse = await axios_1.default.get(detailsUrl, { params: { api_key: config_1.default.tmdbApiKey, language: 'zh-CN', append_to_response: 'credits' } }); const details = detailsResponse.data; // 4. 提取年份 const year = details.first_air_date ? Number.parseInt(details.first_air_date.split('-')[0], 10) : null; // 5. 提取类型 const genres = details.genres.map((genre) => genre.name); // 6. 提取主要演员 (前5名) const cast = details.credits.cast .sort((a, b) => a.order - b.order) .slice(0, 5) .map((actor) => actor.name); // 7. 映射状态 const status = STATUS_MAP[details.status] || '未知状态'; // 8. 构建返回结果 return { title: details.name, year, rating: details.vote_average, genres, overview: details.overview, cast, numberOfSeasons: details.number_of_seasons, status }; } catch (error) { // console.error('获取剧集详情错误:', error); return '获取剧集信息时发生错误,请稍后再试。'; } }