2016-11-14 74 views
0

當我使用Kiba ELT時,我遵循YouTube中的教程以及所有者提供的教程。然而,我收到此錯誤:Tmdb :: InvalidApiKeyError(Tmdb :: InvalidApiKeyError)

[email protected]:~/test01$ bundle exec kiba movies.etl 
{ 
    "title: Blade Runner" => "title: Minority Report" 
} 
/home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/themoviedb-1.0.1/lib/themoviedb/api.rb:37:in `set_response': Tmdb::InvalidApiKeyError (Tmdb::InvalidApiKeyError) 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/themoviedb-1.0.1/lib/themoviedb/search.rb:75:in `fetch_response' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/themoviedb-1.0.1/lib/themoviedb/search.rb:60:in `fetch' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/themoviedb-1.0.1/lib/themoviedb/resource.rb:41:in `search' 
    from /home/bitlasoft/test01/common.rb:30:in `process' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/kiba-0.6.1/lib/kiba/runner.rb:35:in `block (3 levels) in process_rows' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/kiba-0.6.1/lib/kiba/runner.rb:34:in `each' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/kiba-0.6.1/lib/kiba/runner.rb:34:in `block (2 levels) in process_rows' 
    from /home/bitlasoft/test01/common.rb:12:in `block in each' 
    from /home/bitlasoft/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/csv.rb:1739:in `each' 
    from /home/bitlasoft/test01/common.rb:11:in `each' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/kiba-0.6.1/lib/kiba/runner.rb:33:in `block in process_rows' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/kiba-0.6.1/lib/kiba/runner.rb:32:in `each' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/kiba-0.6.1/lib/kiba/runner.rb:32:in `process_rows' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/kiba-0.6.1/lib/kiba/runner.rb:13:in `run' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/kiba-0.6.1/lib/kiba/cli.rb:13:in `run' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/gems/kiba-0.6.1/bin/kiba:5:in `<top (required)>' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/bin/kiba:23:in `load' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/bin/kiba:23:in `<main>' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `eval' 
    from /home/bitlasoft/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `<main>' 
[email protected]:~/test01$ 

這是我movies.etl和common.rb配置:

require_relative 'common' 
api_key = IO.read('.themoviedb') 
source CSVSource, filename: 'movies.csv'   
limit ENV['LIMIT'] 
show_me! 
transform MovieDBlookup, 
api_key: api_key, 
title_field: 'title' 
show_me! 

require 'csv' 
require 'awesome_print' 

class CSVSource 
    def initialize(filename:) 
    @filename = filename 
     end 

    def each 
    csv = CSV.open(@filename, headers: true) 
    csv.each do |row| 
    yield(row.to_hash) 

    end 

csv.close 

    end 
     end 

    require 'themoviedb' 

class MovieDBlookup 
def initialize(api_key:, title_field:) 
@title_field = title_field 
Tmdb::Api.key(api_key) 
    end 

def process(row) 
movie = Tmdb::Movie.find(row[@title_field]).first 
row[:vote_average] = movie.vote_average 
row[:vote_count] = movie.vote_count 
row 
    end 
    end 

def show_me!  
    transform do |row| 
    ap row 
    row 
    end 
    end 

def limit(x) 
x = Integer(x || -1) 
return if x == -1 
    transform do |row| 
    @counter ||= 0 
    @counter += 1 
    abort("stopping....")if @counter >= x 
    row 
    end 
    end 

回答

0

(木場老闆這裏) - 錯誤你得到不是基巴具體;它看起來像您爲themoviedb提供的API密鑰無效。您是否註冊了電影db here,並且提供的複製粘貼到您正在加載的文件(.themoviedb)中的API密鑰?

我能想到的一個問題是,你會在該文件中有一行結尾字符(回車/換行),在這種情況下,可能只需撥打api_key = IO.read('.themoviedb').strip即可。

同樣,這不是基巴特有的,但希望這有助於!