class Kagu::Playlists
Public Instance Methods
build(attributes = {})
click to toggle source
# File lib/kagu/playlists.rb, line 7 def build(attributes = {}) Playlist.new(attributes) end
create(attributes = {})
click to toggle source
# File lib/kagu/playlists.rb, line 11 def create(attributes = {}) build(attributes).tap(&:save) end
each() { |playlist(name: playlist_name, tracks: playlist_tracks)| ... }
click to toggle source
# File lib/kagu/playlists.rb, line 15 def each return unless block_given? Kagu.logger.debug('Kagu') { 'Loading library playlists' } tracks = {}.tap do |items| Tracks.new.each { |track| items[track.id] = track } end playlist_name = nil playlist_tracks = [] SwiftHelper.execute(" import iTunesLibrary let library = try! ITLibrary(apiVersion: \"1\") for playlist in library.allPlaylists.filter({ !$0.isMaster }) { print(\"BEGIN_PLAYLIST\") print(playlist.name) for track in playlist.items.filter({ $0.mediaKind == ITLibMediaItemMediaKind.kindSong }) { print(String(track.persistentID.uint64Value, radix: 16).uppercased()) } print(\"END_PLAYLIST\") } ").each do |line| if line == 'BEGIN_PLAYLIST' playlist_name = nil playlist_tracks = [] elsif line == 'END_PLAYLIST' yield(Playlist.new(name: playlist_name, tracks: playlist_tracks)) if playlist_name.present? elsif playlist_name.nil? playlist_name = line else playlist_tracks << tracks[line] end end nil end