0

Rails ムービー アプリは、他の Web サイトの API を使用してデータベースを埋める可能性があります。

私は TMDB.org API (私は既に API キーを持っています) を使用して抽出しています。今のところ、映画のタイトル説明を言ってみましょう。

tmdbサイトから自分のサイトに情報を抽出して表示するにはどうすればよいでしょうか? 取得した情報は、<% @movie.title %>Herokuを使用してPostgreSQLデータベース<% @movie.description %> に配置する必要があります。

もう 1 つの質問は、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 からデータベース情報を取得し、TMDB Movie :showページから my movie :showページに情報を表示するにはどうすればよいですか? レーキ タスクはありますか? もしそうなら、それは何でしょうか?

どうもありがとう!

4

1 に答える 1

1

あなたが取り組みたい問題は2つあります。

Rails アプリのどこでどのようにデータを取得すればよいですか?

ええ、これはレーキで達成できます。新しいレーキ ファイルを追加する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 に答える