Class: KodiDedup::Media

Inherits:
Array
  • Object
show all
Defined in:
lib/kodi_dedup/classes/media.rb

Direct Known Subclasses

Episodes, Movies

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(media:, singular_class:, group_by_proc:) ⇒ Media

Returns a new instance of Media.



5
6
7
8
9
# File 'lib/kodi_dedup/classes/media.rb', line 5

def initialize(media:, singular_class:, group_by_proc: )
  @singular_class = singular_class
  @group_by_proc = group_by_proc
  super(media.map { |m| singular_class.wrap(m) }.select { |m| m.exists? })
end

Instance Attribute Details

#group_by_procObject (readonly)

Returns the value of attribute group_by_proc.



3
4
5
# File 'lib/kodi_dedup/classes/media.rb', line 3

def group_by_proc
  @group_by_proc
end

#singular_classObject (readonly)

Returns the value of attribute singular_class.



3
4
5
# File 'lib/kodi_dedup/classes/media.rb', line 3

def singular_class
  @singular_class
end

Instance Method Details

#groupedObject



11
12
13
# File 'lib/kodi_dedup/classes/media.rb', line 11

def grouped
  group_by(&@group_by_proc).values.select { |media| media.length > 1 }.map { |media| self.class.new(media) }
end

#total_playcountObject



19
20
21
# File 'lib/kodi_dedup/classes/media.rb', line 19

def total_playcount
  sum { |e| e.playcount }
end

#unplayedObject



15
16
17
# File 'lib/kodi_dedup/classes/media.rb', line 15

def unplayed
  select { |e| e.playcount == 0 }
end