class Plex::Autodelete::Cleanup

Public Class Methods

cleanup() click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 30
def self.cleanup
  self.required_params!
  self.plex_server.library.section(@config[:section]).all.each do |show|
    self.process_show show
  end

  self.output_stats
end
configure(opts = {}) click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 26
def self.configure(opts = {})
  opts.each {|key, value| @config[key.to_sym] = value if @config_keys.include? key.to_sym}
end

Private Class Methods

episode_watched?(episode) click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 101
def self.episode_watched? episode
  episode.respond_to?(:view_count) and episode.view_count.to_i > 0
end
increment_stat(stat) click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 122
def self.increment_stat stat
  @stats[stat] += 1
end
output_episode_skipped_reason(episode, show_skipped) click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 88
def self.output_episode_skipped_reason episode, show_skipped
  if episode_watched? episode and not @config[:delete]
    self.increment_stat :skipped
    puts 'Skipped (Test mode enabled, disable to perform delete)'.blue
  elsif episode_watched? episode and show_skipped
    self.increment_stat :skipped
    puts 'Skipped (Show in skip list)'.blue
  else
    self.increment_stat :kept
    puts 'Not watched yet'.blue
  end
end
output_stats() click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 126
def self.output_stats
  puts nil
  puts '-------------'
  puts '    Stats    '
  puts '-------------'
  puts "Deleted: #{@stats[:deleted].to_i}"
  puts "Skipped: #{@stats[:skipped].to_i}"
  puts "Kept:    #{@stats[:kept].to_i}"
  puts "Failed:  #{@stats[:failed].to_i}"
  puts nil
end
plex_server() click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 49
def self.plex_server
  Plex.configure do |config|
    config.auth_token = @config[:token]
  end

  Plex::Server.new(@config[:host], @config[:port])
end
process_episode(episode, show_skipped) click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 73
def self.process_episode episode, show_skipped
  print "   - #{episode.title} - "
  if self.should_delete_episode? episode, show_skipped
    episode.medias.each do |media|
      self.process_media media, show_skipped
    end
  else
    self.output_episode_skipped_reason episode, show_skipped
  end
end
process_media(media, show_skipped) click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 105
def self.process_media media, show_skipped
  media.parts.each do |part|
    self.process_part part, show_skipped
  end
end
process_part(part, show_skipped) click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 111
def self.process_part part, show_skipped
  if File.exist?(part.file)
    self.increment_stat :deleted
    File.delete(part.file)
    puts "Deleted".yellow
  else
    self.increment_stat :failed
    puts "File does not exist".red
  end
end
process_season(season, show_skipped) click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 66
def self.process_season season, show_skipped
  puts " - #{season.title}"
  season.episodes.each do |episode|
    self.process_episode episode, show_skipped
  end
end
process_show(show) click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 57
def self.process_show show
  puts nil
  puts "#{show.title}".bold
  show_skipped = @config[:skip].include? show.title
  show.seasons.each do |season|
    self.process_season season, show_skipped
  end
end
required_params!() click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 41
def self.required_params!
  [:host, :port, :token, :section].each do |param|
    if @config[param].nil?
      raise Exception
    end
  end
end
should_delete_episode?(episode, show_skipped) click to toggle source
# File lib/plex/autodelete/cleanup.rb, line 84
def self.should_delete_episode? episode, show_skipped
  @config[:delete] and not show_skipped and episode_watched? episode
end