class AtomicTV::EpisodeMetadata

Constants

ArtworkBaseURL

Attributes

episode[R]
posters[R]
series[R]

Public Class Methods

new(series, episode) click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 6
def initialize(series, episode)
  @series, @episode = series, episode
end

Public Instance Methods

actors() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 68
def actors
  (Array(series.actors).map {|a| a.name} + episode.guest_stars).uniq
end
air_date() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 64
def air_date
  episode.air_date && episode.air_date.to_s + 'T00:00:00Z'
end
album() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 24
def album
  "#{series.name}, Season #{episode.season_number}"
end
artist() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 16
def artist
  series.name
end
description() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 32
def description
  episode.overview.to_s[0,255].gsub(/\.(.*)\Z/, '.')
end
directors() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 72
def directors
  parse_names(episode.director)
end
genre() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 28
def genre
  series.genres.first
end
long_description() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 36
def long_description
  episode.overview.to_s
end
media_type() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 12
def media_type
  'TV Show'
end
title() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 20
def title
  episode.name
end
track_number() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 60
def track_number
  episode.number
end
tv_episode() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 48
def tv_episode
  "#{episode.season_number}#{episode.number.to_s.rjust(2, '0')}"
end
tv_episode_number() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 56
def tv_episode_number
  episode.number
end
tv_network() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 40
def tv_network
  series.network
end
tv_season_number() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 52
def tv_season_number
  episode.season_number
end
tv_show_name() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 44
def tv_show_name
  series.name
end
with_loaded_posters() { || ... } click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 82
def with_loaded_posters
  temporary_directory = Dir.mktmpdir
  
  season_posters = series.season_posters(episode.season_number, 'en')
  season_posters = series.posters('en') if season_posters.empty?
  @posters = season_posters.map do |poster|
    url = ArtworkBaseURL + poster.path
    file = File.new(File.join(temporary_directory, File.basename(url)), 'w')
    file.write(open(url).read)
    file.close
    file
  end

  yield
  
ensure
  FileUtils.rm_rf(temporary_directory)
  @posters = nil
end
writers() click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 76
def writers
  parse_names(episode.writer)
end

Private Instance Methods

parse_names(str) click to toggle source
# File lib/AtomicTV/episode_metadata.rb, line 104
def parse_names(str)
  return [] if str.nil?
  
  str.gsub!(/\A\|/, '')
  str.gsub!(/\|\Z/, '') 
  str.split(/\|+/)
end