Rails TMDB API浏览查找

时间:2013-10-12 13:28:54

标签: ruby-on-rails postgresql api rake themoviedb-api

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

TMDB.org推荐using this gem,因为它是从我之前使用的gem分叉的,所以它更容易一些。

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

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

This is my rake file与旧宝石合作。

我想知道如何使用 find 而不是 browse 来使其工作方式相同。

由于

1 个答案:

答案 0 :(得分:1)

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

我在Irio的ruby-tmdb fork中没有看到discover,但看起来他们拥有的大多数特定方法(如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的fork,实现支持所有选项的TmdbMovie.discover方法并处理像TmdbMovie.find这样的边缘情况,并向它们发送一个pull请求,因为它看起来像它们我还没有实现这个目标,我相信其他人也希望有这种方法:)