Sha256: 202ac818cc97282005ff9de4eedd334e5c2935e74e54bece5d255a8a8dfb5ac6
Contents?: true
Size: 1.58 KB
Versions: 1
Compression:
Stored size: 1.58 KB
Contents
module Kagu class Playlist MANDATORY_ATTRIBUTES = %w(name) include AttributesInitializer include Enumerable attr_reader :name, :tracks delegate :each, to: :tracks def save create clear add_tracks end def to_s name end private def add_tracks ids = tracks.map(&:id) AppleScript.execute(%Q{ tell application "iTunes" set playlistToPush to user playlist #{name.inspect} set idsToAdd to {#{ids.join(',')}} repeat with idToAdd in idsToAdd duplicate (tracks of library playlist 1 whose database ID is idToAdd) to playlistToPush end repeat end tell }) nil rescue => e raise Error.new(e) end def clear AppleScript.execute(%Q{ tell application "iTunes" delete tracks of playlist #{name.inspect} end tell }) nil rescue => e raise Error.new(e) end def create AppleScript.execute(%Q{ tell application "iTunes" if not (exists user playlist #{name.inspect}) then make new user playlist with properties { name: #{name.inspect} } end if end tell }) nil rescue => e raise Error.new(e) end def itunes_name=(value) @@html_entities ||= HTMLEntities.new self.name = @@html_entities.decode(value) end def name=(value) @name = value.to_s.squish.presence end def tracks=(values) @tracks = [values].flatten.select { |value| value.is_a?(Track) } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kagu-0.2.0 | lib/kagu/playlist.rb |