2013-10-12 48 views
3

TMDB.org最近對其API進行了更改,從而將其數據庫的能力移除到browse。 我的Rails應用程序用於使用tmdb-ruby gem來瀏覽TMDB數據庫,但是這個gem只適用於API的v2.0,它現在已經失效。Rails TMDB API瀏覽以查找

TMDB.org建議using this gem,由於它是從我以前使用的寶石分出來的,所以它變得更容易一些。

我的PostgreSQL數據庫已經填充了從TMDB導入的數據,當時仍然存在v2.0,並且我可以使用browse功能。

如何在不提供電影標題的情況下使用查找功能(即:@movie = TmdbMovie.find(:title => "Iron Man", :limit => 1))查找隨機電影。

This is my rake file與舊版寶石一起工作。

我想知道如何獲得它的工作方式相同,但同時使用find代替browse

感謝

+0

你想在做什麼你的耙文件?獲取TMDb中最老的兩部電影並將它們保存到數據庫中?瞭解你真正想要做什麼將有助於找到你得到你想要的最佳替代方式。 – carols10cents

+0

我的rake文件正在做的是在TMDB數據庫中以降序瀏覽電影。因此,它找到了最古老的電影,並開始工作到最新的電影。 – PMP

回答

1

我不認爲find是你需要爲了得到你想要的(獲得在數據庫中歷史最悠久的電影,它的工作方式到最新的電影)的內容。查看TMDb API文檔,看起來他們現在有discover,它們可能取代了您曾經使用過的browse

我沒有看到discover在Irio的紅寶石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併發送給他們一個拉請求,因爲它看起來像他們還沒有到處去實現這一點,我敢肯定其他人也希望有這種方法以及:)

+0

感謝您的回答,但我無法理解兩件事。 1-代碼去哪裏?如果它在耙文件中,它將如何制定? 2-我將如何使用您提供的代碼獲取像'movie.name'和'movie.overview'這樣的信息,因爲它顯示在我當前的[Rake File](https://gist.github。 com/mpcoding/733c740aa7544db1699c#file-schedule-rake-L17) – PMP

+0

1.我在這裏的示例代碼應該能夠直接進入schedule.rake,取代對「TmdbMovie.browse」的調用。 2。從'Tmdb.api_call'返回的數據只是原始數據,所以這就是爲什麼我有'results.map!'行。這會將原始電影數據列表轉換爲'TmdbMovie'對象的實例。 [它看起來像你可能不得不告訴TmdbMovie expand_results](https://github.com/Irio/ruby-tmdb/blob/master/lib/ruby-tmdb3/tmdb_movie.rb#L46),我已經更新了我的示例代碼。然後在每個結果上,你應該可以調用'.name'等。你有沒有試過這個呢? – carols10cents

+0

我已經更新了我的Rake文件,使其看起來像[THIS](https://gist.github.com/mpcoding/60a1115238d0b0075c35),但是出現以下錯誤:'rake中止了! 未定義的方法gsub爲零:NilClass' – PMP