You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TMDB API请求电影数据重复问题及随机获取方案咨询

如何让TMDB Discover API每次返回随机20条电影数据?

你遇到的问题是因为TMDB Discover接口默认返回第一页的20条数据,所以每次请求结果完全一致。要实现每次渲染都获取随机内容,核心是利用接口的page参数,配合可选的排序参数来实现,具体方案如下:

核心方案:随机指定请求页码

TMDB的Discover接口支持page参数,用来指定获取第几页的结果。你可以在每次请求时,随机生成一个有效的页码(范围是1到该查询对应的总页数),这样就能拿到不同页的20条数据。

步骤说明:

  1. 先获取查询的总页数:
    先发起一次不带page参数的请求,从返回的JSON数据里拿到total_pages字段,这就是当前查询(比如with_genres=18)对应的总页数。
    请求示例:

    https://api.themoviedb.org/3/discover/movie?with_genres=18&api_key=<your_api_key>
    
  2. 随机生成页码并发起请求:
    在1到total_pages之间随机生成一个整数作为page参数值,拼接到请求URL中,就能拿到随机一页的20条电影数据。
    假设总页数是620,随机生成的页码是156,请求示例:

    https://api.themoviedb.org/3/discover/movie?with_genres=18&api_key=<your_api_key>&page=156
    

增强随机性:配合排序参数

如果想进一步提升结果的随机性,可以加上sort_by参数,每次随机选择不同的排序规则(比如按热度、评分、上映日期排序),这样即使页码相同,排序方式不同也会得到不同的结果组合。

比如随机选择sort_by=vote_average.desc(按评分降序)的请求示例:

https://api.themoviedb.org/3/discover/movie?with_genres=18&api_key=<your_api_key>&page=156&sort_by=vote_average.desc

常用的sort_by可选值包括:

  • popularity.desc(热度降序)
  • vote_average.desc(评分降序)
  • release_date.desc(上映日期降序)
  • revenue.desc(票房降序)

注意事项

  • 不要生成超过total_pages的页码,否则接口会返回空数据或者错误响应。
  • 如果不想先请求总页数,也可以设置一个合理的最大页码上限(比如1000),但建议优先通过total_pages获取准确范围,避免无效请求。
  • 每次渲染页面时,在前端或后端逻辑里生成随机的page(和可选的sort_by)参数,再拼接到请求URL中即可。

内容的提问来源于stack exchange,提问作者Dzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:07:54