Logo
Section 1 / 3

查找与搜索方法

学习并练习TMDB API中的查找和搜索方法。

导入

查找与搜索方法

学习并练习TMDB API中的查找和搜索方法。

我们将在这节课中讨论两种在 TMDB 上搜索电影、电视剧和人物的方法。

find 接口

我们可以使用 TMDB 的 find 接口,通过一个整数类型的路径参数 external_id,仅凭外部 ID 来搜索数据库中的对象。该方法会同时搜索所有类型的对象(电影、电视剧和人物),并将结果以单一 JSON 响应返回。

注意: find 接口使用外部 ID 作为路径参数。有关外部 ID 的详细信息以及如何获取它们,请参阅本课程相关内容。

基础 URL 如下:

1https://api.themoviedb.org/3/find/{external_id}?api_key={ourTMDBapikey}&external_source=ExternalSource

TMDB 支持的每种对象的外部数据源如下:

名称类型电影电视剧电视剧季电视剧集人物
IMDb ID媒体数据库✓✓✗✓✓
TVDB ID媒体数据库✗✓✓✓✗
Facebook社交 ID✓✓✗✗✓
Instagram社交 ID✓✓✗✗✓
Twitter社交 ID✓✓✗✗✓

请求参数

此接口的输入查询参数如下:

名称类型类别描述
language字符串可选使用 ISO_3166_1 代码获取指定语言的翻译数据。仅适用于支持该功能的字段。默认值为 en-US。
external_source字符串必需用于指定与所用外部 ID 对应的外部数据源。

让我们通过下方代码工具运行一个 find 方法的示例。在运行程序前,请确保已正确填写 API_KEY、对象的 EXTERNAL_ID 和 EXTERNAL_SOURCE。目前我们可以使用以下外部 ID 及其来源名称来查找《蜘蛛侠:无路可逃》。

外部数据源外部 ID
facebook_idSpiderManMovie
imdb_idtt10872600
instagram_idspidermanmovie
twitter_idspidermanmovie

点击“运行”按钮,根据外部 ID 查找该电影。

1import fetch from "node-fetch"; 2 3const API_KEY = '{{API_KEY}}'; 4const external_source = '{{EXTERNAL_SOURCE}}'; 5 6const endpointUrl = new URL('https://api.themoviedb.org/3/find/{{EXTERNAL_ID}}'); 7 8const queryParameters = new URLSearchParams({ 9 api_key : API_KEY, 10 language : 'en-US', 11 external_source : external_source 12}); 13 14async function fetchData() { 15 try { 16 endpointUrl.search = queryParameters; 17 const response = await fetch(endpointUrl); 18 19 // 调用打印响应的函数 20 printResponse(response); 21 } catch (error) { 22 23 // 调用打印错误信息的函数(如有) 24 printError(error); 25 } 26} 27 28// 调用执行 API 请求的函数 29fetchData();

响应字段

返回的 JSON 响应中包含的对象如下:

对象类型描述
movie_results数组[对象]如果传入的是电影的外部 ID,则返回请求的电影详情。
person_results数组[对象]如果传入的是人物的外部 ID,则返回请求人物的相关信息。
tv_results数组[对象]如果传入的是电视剧的外部 ID,则返回请求电视剧的详情。
tv_episode_results数组[对象]如果传入的是电视剧某一集的外部 ID,则返回该集的详情。
tv_season_results数组[对象]如果传入的是电视剧某一季的外部 ID,则返回该季的详情。

find 方法在开发者已有工具并希望集成此服务时非常有用。

基于文本的搜索是互联网上最常用的搜索方式之一。我们提供一个查询字符串,系统将返回可能的匹配项。

对于 TMDB 的文本搜索,我们使用 search 接口。可以通过传递一个类型为字符串的查询参数 query,来搜索数据库中的任何对象。基于文本的搜索会考虑所有对象的原始名称、翻译名称、替代名称和标题。

基础 URL 如下:

1https://api.themoviedb.org/3/search?api_key={ourTMDBapikey}&query=ourQUERYstring

请求参数

此接口的输入查询参数如下:

名称类型类别描述
query字符串必需用于搜索的文本查询内容。其值必须进行 URI 编码。
page整数可选用于指定查询的页码。取值范围为 1–1000(含)。默认值为 1。

现在,我们可以使用下方代码工具尝试运行一个基于文本的搜索示例。在运行程序前,请确保已填写正确的 API_KEY。点击“运行”按钮,获取查询字符串的所有搜索结果。

1import fetch from "node-fetch"; 2 3const API_KEY = '{{API_KEY}}'; 4 5const endpointUrl = new URL('https://api.themoviedb.org/3/search/tv'); 6 7const queryParameters = new URLSearchParams({ 8 api_key : API_KEY, 9 query : 'the+office', 10 page : 1 11}); 12 13async function fetchData() { 14 try { 15 endpointUrl.search = queryParameters; 16 const response = await fetch(endpointUrl); 17 18 // 调用打印响应的函数 19 printResponse(response); 20 } catch (error) { 21 22 // 调用打印错误信息的函数(如有) 23 printError(error); 24 } 25} 26 27// 调用执行 API 请求的函数 28fetchData();

我们已经获取了与电视剧《办公室》最接近的所有匹配结果。我们可以修改第 5 行的基 URL 来搜索 TMDB 中的不同对象。例如,若要搜索电影,可使用以下 URL:

1https://api.themoviedb.org/3/search/movie

同样,若要搜索人物,可以使用以下 URL:

1https://api.themoviedb.org/3/search/person

响应字段

输出的 JSON 响应中包含的对象如下:

对象类型描述
page整数当前查询的页码。
results数组[对象]返回指定页面上的所有最接近的匹配项(及其详细信息),例如第一页有 21 个匹配项,第二页有 20 个,依此类推。
total_pages整数TMDB 中包含匹配结果的总页数。
total_results整数TMDB 中所有最接近匹配项的总数。

人物详情与名人资料

发现方法:电影