3

TMDB.org最近对其 API 进行了更改,删除了browse其数据库的功能。我的 Rails 应用程序曾经使用tmdb-ruby gem来浏览 TMDB 数据库,但这个 gem 只适用于 API 的 v2.0,现在已经失效。

TMDB.org 推荐使用这个 gem,因为它是从我之前使用的 gem 中派生出来的,所以它更容易一些。

当 v2.0 仍然存在并且我可以使用该browse功能时,我的 PostgreSQL 数据库已经填充了从 TMDB 导入的数据。

我现在如何使用查找功能(即:)@movie = TmdbMovie.find(:title => "Iron Man", :limit => 1)来查找随机电影,而不提供电影的标题。

这是我的 rake 文件,它适用于较旧的 gem。

我想知道如何让它以相同的方式工作,但同时使用.find而不是browse.

谢谢

4

1 回答 1

1

我不认为find你需要什么来获得你想要的东西(获取数据库中最古老的电影并逐步更新到最新的电影)。查看 TMDb API 文档,看起来他们现在已经discover取代了browse您以前使用的那个。

discover在 Irio 的 ruby​​-tmdb 分支中看不到任何地方,但看起来他们拥有的大多数特定方法(如TmdbMovie.find)调用了通用方法Tmdb.api_call

您应该能够使用通用方法执行以下操作:

api_return = Tmdb.api_call(
  "discover/movie", 
  {
    page: 1, 
    sort_by: 'release_date.asc',
    query: '' # Necessary because Tmdb.api_call throws a nil error if you don't specify a query param value
  }, 
  "en"
)
results = api_return["results"]

results.flatten!(1)
results.uniq!
results.delete_if &:nil?

results.map!{|m| TmdbMovie.new(m, true)} # `true` tells TmdbMovie.new to expand results

如果这可行,您甚至可以分叉 Irio 的分叉,实现一个TmdbMovie.discover支持所有选项并像处理边缘情况一样的方法TmdbMovie.find,并向他们发送拉取请求,因为看起来他们还没有开始实现这一点,而我确定其他人也想使用这种方法:)

于 2013-10-20T17:44:09.837 回答