class TTVDB::CLI::Subcommand::Search
Attributes
description[R]
Public Class Methods
new()
click to toggle source
# File lib/ttvdb/cli/subcommand/search.rb, line 4 def initialize @description = "search a serie" end
Public Instance Methods
main(client)
click to toggle source
# File lib/ttvdb/cli/subcommand/search.rb, line 7 def main client p = Trollop::Parser.new do banner "Search for a series" banner "" banner "usage: ttvdb [options] search [options] name1 name2 name3 ..." banner "" banner "nameN can either be id or name" banner "" banner "Example:" banner "" banner " $ ttvdb search \"Galaxy Rangers\"" banner "" banner " $ ttvdb search 77772" banner "" banner " $ ttvdb search \"Galaxy Rangers\" -d" banner "" banner " $ ttvdb search \"Galaxy Rangers\" -d -l 10" banner "" banner " $ ttvdb search 77772 -e heartbeat" banner "" banner " $ ttvdb search 77772 -e s01e65" banner "" banner " $ ttvdb search 77772 -e e65" banner "" banner " $ ttvdb search 77772 -e 65" banner "" banner "Options:" opt :detailed, "show detailed informations for a series", :short => "-d" opt :limit, "limit result if --detailed is used", :short => "-l", :default => 0 opt :episode, "show detailed informations for an episode. can be num, name (also partial) or id", :short => 'e', :type => String conflicts :detailed, :episode end @opts = Trollop::with_standard_exception_handling p do raise Trollop::HelpNeeded if ARGV.empty? p.parse end ARGV.each do |term| series = [] if term.to_i > 0 series = [client.get_series_by_id(term.to_i)] else series = client.get_series term end series.each do |serie| puts "#{serie.name}, #{serie.id}" if @opts[:detailed] detailed serie end if @opts[:episode] es = serie.match_episode @opts[:episode] es = [es] unless es.is_a? Array es.each do |e| puts "" if es.count > 1 puts "-" * 20 end puts e.name detailed e end end end end end
Private Instance Methods
detailed(serie)
click to toggle source
# File lib/ttvdb/cli/subcommand/search.rb, line 80 def detailed serie skip = ["client", "seasons"] serie.instance_variables.each do |var| val = serie.instance_variable_get var next unless val next if val.to_s.empty? next if skip.include? var.to_s.gsub(/^@/, "") puts " %s: %s" % [var.to_s.gsub(/^@/, ""), val] end return unless serie.respond_to? :episodes puts "" puts " Episodes: %i total" % [serie.episodes.count] serie.seasons.each do |season, episodes| puts " Season: %02d" % season limit = @opts[:limit] > 0 ? @opts[:limit] : episodes.keys.count episodes.first(limit).each do |num, episode| puts " #%03d - %s (%s)" % [num, episode.name, episode.id] end if limit < episodes.keys.count puts " ... %i more" % (episodes.keys.count - limit) end end end