【问题标题】:Rails TMDB API Browse to FindRails TMDB API 浏览查找
【发布时间】:2013-10-20 12:18:56
【问题描述】:

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

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

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

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

This is my rake file 与较旧的 gem 一起使用。

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

谢谢

【问题讨论】:

  • 你想在你的 rake 文件中做什么?在 TMDb 中获取两部最古老的电影并将它们保存到您的数据库中?了解您真正想要做的事情将有助于您找到获得所需的最佳替代方法。
  • 我的 rake 文件所做的是在 TMDB 数据库中按降序浏览电影。因此,它正在寻找最古老的电影,然后一直寻找最新的电影。

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


【解决方案1】:

我不认为find 是您获得所需内容的必要条件(获取数据库中最古老的电影并逐步更新为最新电影)。查看 TMDb API 文档,他们现在似乎有 discover 可能已经取代了您以前使用的 browse

我在 Irio 的 ruby​​-tmdb 分支中的任何地方都没有看到 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 的分叉,实现支持所有选项的 TmdbMovie.discover 方法并像 TmdbMovie.find 那样处理边缘情况,并向他们发送拉取请求,因为看起来他们还没有得到围绕实现这一点,我相信其他人也希望有这种方法:)

【讨论】:

  • 感谢您的回答,但我无法理解两件事。 1-这段代码会去哪里?如果它在 rake 文件中,它将如何制定? 2- 我将如何使用您提供的代码获取movie.namemovie.overview 等信息,因为它显示在我当前的Rake File
  • 1.我在这里的示例代码应该能够直接进入您的 schedule.rake,替换对 TmdbMovie.browse 的调用。 2. 从Tmdb.api_call 返回的数据只是原始数据,所以我有results.map! 行。这会将原始电影数据列表转换为TmdbMovie 对象的实例。 It looks like you might have to tell TmdbMovie to expand_results,我已经用它更新了我的示例代码。然后在每个结果上你应该可以调用.name等。你试过了吗?
  • 我已将我的 Rake 文件更新为类似于 THIS,但出现以下错误:rake aborted! undefined method gsub for nil:NilClass
  • 您能否发布错误的完整堆栈跟踪的gist 并让我知道 schedule.rake 中的哪一行对应于堆栈跟踪中引用 schedule.rake 的行号?跨度>
  • 好的,在that line of the ruby-tmdb gem 它期望总是有一个查询参数。尝试添加一个空字符串(我已经更新了我的示例代码)并查看发现 API 是否关心您是否传递了查询参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
相关资源
最近更新 更多