0

我有一个 Rails 电影应用程序,它可能会使用其他网站的 API 来填充我的数据库。

我正在使用 TMDB.org API(我已经有一个 API 密钥)来提取,现在让我们说一部电影的标题描述

我将如何从 tmdb 站点提取信息到我的站点并在其中显示信息,<% @movie.title %>并且<% @movie.description %> 需要使用Heroku将所获取的信息放置在我的PostgreSQL数据库中 所以这是一个问题

另一个问题是如何在不为 TMDB 数据库中的每部电影运行方法的情况下做到这一点

例如,使用Ruby-TMDB Gem,而不是运行

TmdbMovie.find(:title => "The Social Network", :limit => 10, :expand_results => true, :language => "en")

TmdbMovie.find(:title => "The Dark Knight Rises ", :limit => 10, :expand_results => true, :language => "en")

对于我想要在我的数据库中的每一部电影(即 TMDB 数据库中的每一部电影),我将运行什么到GET所有电影。

然后在我的电影中显示它们:显示页面

总而言之,如何使用Ruby-TMDB Gem IN Heroku将数据库信息从 TMDB.org 获取到我的 rails 应用程序并从 TMDB 电影:show页面显示到我的电影:show页面?是否会有 rake 任务,如果有,会是什么?

非常感谢!

4

1 回答 1

1

您希望解决 2 个问题。

我应该如何以及在我的 Rails 应用程序中的何处提取数据?

是的,这可以通过 rake 来完成。添加一个新的 rake 文件lib/tasks/tmdb.rake

namespace :db do
  task :pull_tmdb_data => :environment do

    Tmdb.api_key = "t478f8de5776c799de5a"
    # setup your default language
    Tmdb.default_language = "en"

    # find movies by id
    @movie = TmdbMovie.find(id: 123)
    Movie.create title: @movie.title, description: @movie.description

    # find movies in groups
    @movies = TmdbMovie.find(:title => 'Iron Man')
    @movies.each do |movie|
        Movie.create title: movie.title, description: movie.description
    end

  end
end

现在每次你想用 tmdb 填充你的数据库时,你可以简单地运行rake db:pull_tmdb_data

从 tmdb 中提取所有电影的必要查询是什么?

通过浏览他们的 api,没有复制数据库的捷径,如果您想复制它,最好的选择可能是直接与他们联系。您可以通过尝试所有可能的电影 id 来强制使用它,但要注意它们确实会扼杀您。以下是他们网站的报价。

我们确实执行了少量的速率限制。请注意,如果您超出这些限制,您将收到 503 错误。

  • 每个 IP 每 10 秒 30 个请求
  • 最多 20 个同时连接

如果您真的需要复制 tmdb,可能值得考虑。当 tmdb 添加新电影并修复其数据中的错误时,您的数据库将过时,因此您将面临一系列难以解决的数据完整性问题。

于 2013-06-21T22:01:44.027 回答