kagu 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.mdown +14 -1
- data/VERSION +1 -1
- data/kagu.gemspec +1 -0
- data/lib/kagu/playlist.rb +46 -0
- data/lib/kagu/playlists.rb +4 -0
- data/lib/kagu.rb +1 -0
- data/spec/kagu/playlists_spec.rb +1 -1
- data/spec/kagu/tracks_spec.rb +1 -1
- metadata +22 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b5e575043dff2dec033f7489c3597d55c299fd42
         | 
| 4 | 
            +
              data.tar.gz: 35401e87c1ffb91bc1ae6b74e31d97757f76cf4f
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2a35eddae3a6f9716a9e9deb4f56554573da0b1ef945d53387d7dffc6d26383acd41cbcce2a4636a25647d313d79f891f44e9d2e17d217004e30331804f748b5
         | 
| 7 | 
            +
              data.tar.gz: ff9d99d3298110c66afeaf4e6e4115414edf8410a8dbef6790523800c28c5f9356a31174f224961ebc1900042f65dbdee0b0d062b8520a0d4da9377c4d8adb83
         | 
    
        data/README.mdown
    CHANGED
    
    | @@ -10,7 +10,9 @@ Just add this into your `Gemfile`: | |
| 10 10 |  | 
| 11 11 | 
             
            Then, just run `bundle install`.
         | 
| 12 12 |  | 
| 13 | 
            -
            ##  | 
| 13 | 
            +
            ## Examples
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ### Displaying all tracks artist
         | 
| 14 16 |  | 
| 15 17 | 
             
                library = Kagu::Library.new
         | 
| 16 18 |  | 
| @@ -18,10 +20,21 @@ Then, just run `bundle install`. | |
| 18 20 | 
             
                  puts track.artist
         | 
| 19 21 | 
             
                end
         | 
| 20 22 |  | 
| 23 | 
            +
            ### Displaying all playlists and its tracks count
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                library = Kagu::Library.new
         | 
| 26 | 
            +
             | 
| 21 27 | 
             
                library.playlists.each do |playlist|
         | 
| 22 28 | 
             
                  puts "#{playlist.name}: #{playlist.tracks.count}"
         | 
| 23 29 | 
             
                end
         | 
| 24 30 |  | 
| 31 | 
            +
            ### Creating a playlist
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                library = Kagu::Library.new
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                tracks = library.tracks.select { |track| track.genre == 'Drum & Bass' && track.added_at > 1.week.ago }
         | 
| 36 | 
            +
                library.playlists.create(name: 'Recent - D&B', tracks: tracks)
         | 
| 37 | 
            +
             | 
| 25 38 | 
             
            ## Executing test suite
         | 
| 26 39 |  | 
| 27 40 | 
             
            This project is fully tested with [Rspec 3](http://github.com/rspec/rspec).
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0. | 
| 1 | 
            +
            0.2.0
         | 
    
        data/kagu.gemspec
    CHANGED
    
    | @@ -17,6 +17,7 @@ Gem::Specification.new do |s| | |
| 17 17 | 
             
              s.require_paths = ['lib']
         | 
| 18 18 |  | 
| 19 19 | 
             
              s.add_dependency 'activesupport', '>= 4.1.0', '< 4.2.0'
         | 
| 20 | 
            +
              s.add_dependency 'applescript', '>= 1.0', '< 2.0'
         | 
| 20 21 | 
             
              s.add_dependency 'htmlentities', '>= 4.3.0', '< 4.4.0'
         | 
| 21 22 |  | 
| 22 23 | 
             
              s.add_development_dependency 'byebug', '>= 3.2.0', '< 3.3.0'
         | 
    
        data/lib/kagu/playlist.rb
    CHANGED
    
    | @@ -11,12 +11,58 @@ module Kagu | |
| 11 11 |  | 
| 12 12 | 
             
                delegate :each, to: :tracks
         | 
| 13 13 |  | 
| 14 | 
            +
                def save
         | 
| 15 | 
            +
                  create
         | 
| 16 | 
            +
                  clear
         | 
| 17 | 
            +
                  add_tracks
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 14 20 | 
             
                def to_s
         | 
| 15 21 | 
             
                  name
         | 
| 16 22 | 
             
                end
         | 
| 17 23 |  | 
| 18 24 | 
             
                private
         | 
| 19 25 |  | 
| 26 | 
            +
                def add_tracks
         | 
| 27 | 
            +
                  ids = tracks.map(&:id)
         | 
| 28 | 
            +
                  AppleScript.execute(%Q{
         | 
| 29 | 
            +
                    tell application "iTunes"
         | 
| 30 | 
            +
                      set playlistToPush to user playlist #{name.inspect}
         | 
| 31 | 
            +
                      set idsToAdd to {#{ids.join(',')}}
         | 
| 32 | 
            +
                      repeat with idToAdd in idsToAdd
         | 
| 33 | 
            +
                        duplicate (tracks of library playlist 1 whose database ID is idToAdd) to playlistToPush
         | 
| 34 | 
            +
                      end repeat
         | 
| 35 | 
            +
                    end tell
         | 
| 36 | 
            +
                  })
         | 
| 37 | 
            +
                  nil
         | 
| 38 | 
            +
                rescue => e
         | 
| 39 | 
            +
                  raise Error.new(e)
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                def clear
         | 
| 43 | 
            +
                  AppleScript.execute(%Q{
         | 
| 44 | 
            +
                    tell application "iTunes"
         | 
| 45 | 
            +
                      delete tracks of playlist #{name.inspect}
         | 
| 46 | 
            +
                    end tell
         | 
| 47 | 
            +
                  })
         | 
| 48 | 
            +
                  nil
         | 
| 49 | 
            +
                rescue => e
         | 
| 50 | 
            +
                  raise Error.new(e)
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                def create
         | 
| 54 | 
            +
                  AppleScript.execute(%Q{
         | 
| 55 | 
            +
                    tell application "iTunes"
         | 
| 56 | 
            +
                      if not (exists user playlist #{name.inspect}) then
         | 
| 57 | 
            +
                        make new user playlist with properties { name: #{name.inspect} }
         | 
| 58 | 
            +
                      end if
         | 
| 59 | 
            +
                    end tell
         | 
| 60 | 
            +
                  })
         | 
| 61 | 
            +
                  nil
         | 
| 62 | 
            +
                rescue => e
         | 
| 63 | 
            +
                  raise Error.new(e)
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 20 66 | 
             
                def itunes_name=(value)
         | 
| 21 67 | 
             
                  @@html_entities ||= HTMLEntities.new
         | 
| 22 68 | 
             
                  self.name = @@html_entities.decode(value)
         | 
    
        data/lib/kagu/playlists.rb
    CHANGED
    
    
    
        data/lib/kagu.rb
    CHANGED
    
    
    
        data/spec/kagu/playlists_spec.rb
    CHANGED
    
    
    
        data/spec/kagu/tracks_spec.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: kagu
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Alexis Toulotte
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014-08- | 
| 11 | 
            +
            date: 2014-08-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         | 
| @@ -30,6 +30,26 @@ dependencies: | |
| 30 30 | 
             
                - - "<"
         | 
| 31 31 | 
             
                  - !ruby/object:Gem::Version
         | 
| 32 32 | 
             
                    version: 4.2.0
         | 
| 33 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 34 | 
            +
              name: applescript
         | 
| 35 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 36 | 
            +
                requirements:
         | 
| 37 | 
            +
                - - ">="
         | 
| 38 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 39 | 
            +
                    version: '1.0'
         | 
| 40 | 
            +
                - - "<"
         | 
| 41 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 42 | 
            +
                    version: '2.0'
         | 
| 43 | 
            +
              type: :runtime
         | 
| 44 | 
            +
              prerelease: false
         | 
| 45 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 46 | 
            +
                requirements:
         | 
| 47 | 
            +
                - - ">="
         | 
| 48 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 49 | 
            +
                    version: '1.0'
         | 
| 50 | 
            +
                - - "<"
         | 
| 51 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 52 | 
            +
                    version: '2.0'
         | 
| 33 53 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 34 54 | 
             
              name: htmlentities
         | 
| 35 55 | 
             
              requirement: !ruby/object:Gem::Requirement
         |