Class: P3::TV::Library

Inherits:
Object
  • Object
show all
Defined in:
lib/p3-tv.rb

Instance Method Summary collapse

Constructor Details

#initialize(settings = Settings.new) ⇒ Library

Returns a new instance of Library.



288
289
290
# File 'lib/p3-tv.rb', line 288

def initialize( settings = Settings.new )
    @settings = settings
end

Instance Method Details

#catalog!(episode) ⇒ Object



328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
# File 'lib/p3-tv.rb', line 328

def catalog!( episode )
    cataloged_path  = episode_path( episode )
    cataloged_dir = File::dirname( cataloged_path )

    unless File::exists?( cataloged_dir )
        FileUtils::mkdir_p( cataloged_dir, { :noop => @settings[:dry_run], :verbose => @settings[:verbose] } )
    end

    if( !File::exists?( cataloged_path ) or @settings[:overwrite_duplicates] )
        FileUtils::move( episode.path, cataloged_path, { :noop => @settings[:dry_run], :verbose => @settings[:verbose], :force => true } )
    elsif( @settings[:delete_duplicate_downloads] )
        FileUtils::remove( episode.path, { :noop => @settings[:dry_run], :verbose => @settings[:verbose] } )
    else
        STDERR.puts "file exists. doing nothing: #{cataloged_path}" if @settings[:verbose]
    end
end

#episode_glob(episode) ⇒ Object



308
309
310
311
312
313
314
315
# File 'lib/p3-tv.rb', line 308

def episode_glob( episode )
    formatted_title = P3::TV::format_title( episode.series )
    return File::join( @settings[:library_path],
                       formatted_title,
                       "Season #{format_season( episode )}",
                       "#{formatted_title} S#{format_season( episode )}E#{format_episode( episode )}" + ( episode.type or '.*' )
                     )
end

#episode_path(episode) ⇒ Object



317
318
319
320
321
322
323
324
325
326
# File 'lib/p3-tv.rb', line 317

def episode_path( episode )
    glob = episode_glob( episode )
    if( episode.type )
        return glob # this will NOT end in .*
    else
        Dir::glob( glob ).each do | path |
            return path
        end
    end
end

#exists?(episode) ⇒ Boolean

Returns:

  • (Boolean)


292
293
294
295
296
297
# File 'lib/p3-tv.rb', line 292

def exists?( episode )
    Dir::glob( episode_glob( episode ) ).each do | path |
        return true if File::exists?( path )
    end
    return false
end

#format_episode(episode) ⇒ Object



303
304
305
# File 'lib/p3-tv.rb', line 303

def format_episode( episode )
    return episode.episode.to_s.rjust( 2, '0' )
end

#format_season(episode) ⇒ Object



299
300
301
# File 'lib/p3-tv.rb', line 299

def format_season( episode )
    return episode.season.to_s.rjust( 2, '0' )
end