Skip to content

Instantly share code, notes, and snippets.

@SarahTaylorProject
Last active April 2, 2017 15:03
Show Gist options
  • Save SarahTaylorProject/a7cbfa43049f746319fcc493f0edb840 to your computer and use it in GitHub Desktop.
Save SarahTaylorProject/a7cbfa43049f746319fcc493f0edb840 to your computer and use it in GitHub Desktop.
untested code for Movie API stage 4 this should start splitting directors and writers
require "csv"
require "json"
require "net/http"
puts "START MOVIE TEST ******"
input_movie_titles = CSV.read("movies.csv").map { |row|
row[1]
}.uniq
movie_api_results = input_movie_titles.first(100).map { |input_movie_title|
[input_movie_title, JSON.parse(`curl "http://www.omdbapi.com/?t=#{input_movie_title.gsub(/\s/,"+")}"`)]
}
# output file 1: combined api results without splitting
rowid = 0
CSV.open("movie_api_result_unprocessed.csv", 'w') do |csv|
csv << ["RowID", "input_movie_title", "Movie_Title_Match", "imdbID", "All_Directors", "All_Writers"]
movie_api_results.each do |input_movie_title, movie_api_data|
rowid += 1
puts rowid
puts input_movie_title
csv << [rowid, input_movie_title, movie_api_data["Title"], movie_api_data["imdbID"], movie_api_data["Director"], movie_api_data["Writer"]]
end
end# of movie_api_results
end# of writing output file 1 csv of combined unprocessed results
# output file 2: api results for writers, split into separate rows
rowid = 0
CSV.open("movie_api_result_writers.csv", 'w') do |csv|
csv << ["RowID", "input_movie_title", "Movie_Title_Match", "All_Writers", "Individual_Writer"]
movie_api_results.each do |input_movie_title, movie_api_data|
rowid += 1
puts rowid
puts input_movie_title
if (movie_api_data["Writer"] != nil)
writers = movie_api_data["Writer"].split(",")
writers.each do |current_writer|
csv << [rowid, input_movie_title, movie_api_data["Title"], movie_api_data["Writer"], current_writer]
end
end
end# of movie_api_results
end# of writing output file 2 csv for writer results
# output file 3: api results for directors, split into separate rows
rowid = 0
CSV.open("movie_api_result_directors.csv", 'w') do |csv|
csv << ["RowID", "input_movie_title", "Movie_Title_Match", "All_Directors", "Individual_Director"]
movie_api_results.each do |input_movie_title, movie_api_data|
rowid += 1
puts rowid
puts input_movie_title
if (movie_api_data["Director"] != nil)
directors = movie_api_data["Director"].split(",")
directors.each do |current_director|
csv << [rowid, input_movie_title, movie_api_data["Title"], movie_api_data["Director"], current_director]
end
end
end# of movie_api_results
end# of writing output file 3 csv for director results
puts "END MOVIE TEST ******"
@SarahTaylorProject
Copy link
Author

Note to self: check that the test for ["Writer"] != nil will fail if the movie returned no result (not just when there was no writer data)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment