Skip to content

Instantly share code, notes, and snippets.

@psyomn
Created February 19, 2024 01:45
Show Gist options
  • Save psyomn/df5f23dd749e4bd38adbabe02b48ed49 to your computer and use it in GitHub Desktop.
Save psyomn/df5f23dd749e4bd38adbabe02b48ed49 to your computer and use it in GitHub Desktop.
Parse output from tmdb.org for ratings.
require 'csv'
require 'fileutils'
# you can extract your ratings on tmdb by clicking the three dots on the
# ratings section, and click the csv export option. You should be able to use
# this script to extract more information afterwards.
#
# format of tmdb CSV
# ["TMDb ID", "IMDb ID", "Type", "Name", "Release Date", "Season Number", "Episode Number", "Rating", "Your Rating", "Date Rated"]
class Row
attr_accessor :tmdb_id, :imdb_id, :type, :name, :release_date, :season_number, :episode_number, :rating, :my_rating,
:date_rated
def initialize(row_a)
@tmdb_id, @imdb_id, @type, @name, @release_date, @season_number, @episode_number,
@rating, @my_rating, @date_rated = row_a
@release_date = DateTime.parse(@release_date)
@date_rated = DateTime.parse(@date_rated)
end
def make_filename
if !@name.ascii_only?
print "prefix #{@name} with: "
@name = ($stdin.gets.chomp + '-' + @name)
end
@name = @name.gsub(' ', '-').downcase
"#{@release_date.year}-#{@name}.gmi"
end
def folder_bucket
(@release_date.year / 10) * 10
end
def make_body
"# #{@name} \n" +
"\n" +
"\n" +
"Score: #{@my_rating}\n" +
"Tmdb-score: #{@rating}\n" +
"Release-date: #{@release_date}\n" +
"Date-rated: #{@date_rated}\n"
end
end
csv = CSV.read("./your-dump.csv")
csv.select{|el| el[2] == "movie" }.each_with_index do |el, ix|
next if ix.zero?
row = Row.new(el)
puts " in directory #{row.folder_bucket}"
FileUtils.mkdir_p(row.folder_bucket.to_s)
filename = "#{row.folder_bucket}/#{row.make_filename}"
puts "touch file #{filename}"
FileUtils.touch(filename)
puts "appending contents..."
File.write(filename,
row.make_body,
File.size(filename),
mode: 'a')
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment