kagu 3.0.6 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e4e99368adaa97b1dc53ed962f73aaa70fb9215f63d19cd0d7d064723814877f
4
- data.tar.gz: 7bed18a725c323edcde770be5f49cf1113d0b90d95a6fdd356bb274cf05923d5
3
+ metadata.gz: 5358df20144489a5d2c8a49fec5716a2078046631b9c43e52b6ecf3265cec875
4
+ data.tar.gz: 6cce3b0f9f8c8d32bfdd6eeb0615a0cfc6402201c0f977db4ee2007fc0b4a761
5
5
  SHA512:
6
- metadata.gz: 4348fc1cfcba406c528d8719eec7b0147bd3fd82d8b19472d5b786a06ac0ba14fc1a3d73193a6cea95cefb7323c8a175d94a35d36dfe2782b1349e33441c0833
7
- data.tar.gz: 509cc114a1c0087d5df86195cdb868cac1ed4d2ec83ea53a3d25fdb9defe5990e16c478712d7eade5fe279c11799671a961b65cfc906085ceffea43c7cee7232
6
+ metadata.gz: 7fd8f9d7221dde8a0fb25ab993e4dd97cc127fa003ee385ed7133dccee2f6ec84ccd2a93e60aac15dc2d79ee8f044a3c11bbcca7914a4a0e245a9ae278f75cec
7
+ data.tar.gz: c1f3fbfb7413b0aa9de63931f6a71fcaf454e47bfd918dd12c74cfbad2df03033c499d6754fae82f32025ed9d60ed69878421cc6d53e54a837f1cdb29dc55481
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.0.6
1
+ 3.1.0
@@ -7,7 +7,7 @@ module Kagu
7
7
  send("#{name}=", value) if respond_to?("#{name}=", true)
8
8
  end
9
9
  self.class.const_get(:MANDATORY_ATTRIBUTES).each do |attribute|
10
- raise Error.new("#{self.class}##{attribute} is mandatory") if send(attribute).nil?
10
+ raise Error.new("#{self.class}##{attribute} is mandatory for #{inspect}") if send(attribute).nil?
11
11
  end
12
12
  end
13
13
 
@@ -28,11 +28,11 @@ module Kagu
28
28
  print("BEGIN_PLAYLIST")
29
29
  print(playlist.name)
30
30
  for track in playlist.items.filter({ $0.mediaKind == ITLibMediaItemMediaKind.kindSong }) {
31
- print(String(format: "%02X", track.persistentID.intValue))
31
+ print(String(track.persistentID.uint64Value, radix: 16).uppercased())
32
32
  }
33
33
  print("END_PLAYLIST")
34
34
  }
35
- }) do |line|
35
+ }).each do |line|
36
36
  if line == 'BEGIN_PLAYLIST'
37
37
  playlist_name = nil
38
38
  playlist_tracks = []
@@ -44,6 +44,7 @@ module Kagu
44
44
  playlist_tracks << tracks[line]
45
45
  end
46
46
  end
47
+ nil
47
48
  end
48
49
 
49
50
  end
@@ -2,7 +2,7 @@ module Kagu
2
2
 
3
3
  module SwiftHelper
4
4
 
5
- def self.execute(code, &block)
5
+ def self.execute(code)
6
6
  tempfile = Tempfile.new
7
7
  begin
8
8
  tempfile << code
@@ -12,12 +12,7 @@ module Kagu
12
12
  begin
13
13
  stdout, stderr, result = Open3.capture3("swift #{tempfile.path.inspect}")
14
14
  raise(stderr.presence || "Swift command returned with code: #{result.exitstatus}") unless result.success?
15
- if block_given?
16
- stdout.lines.each { |line| yield(line.chomp) }
17
- nil
18
- else
19
- stdout
20
- end
15
+ stdout.lines.map(&:chomp)
21
16
  ensure
22
17
  tempfile.unlink
23
18
  end
@@ -5,7 +5,7 @@ module Kagu
5
5
  include AttributesInitializer
6
6
  include Comparable
7
7
 
8
- MANDATORY_ATTRIBUTES = %w(added_at id length path)
8
+ MANDATORY_ATTRIBUTES = %w(added_at id length)
9
9
 
10
10
  attr_reader :added_at, :album, :artist, :bpm, :genre, :id, :length, :path, :title, :year
11
11
 
@@ -22,19 +22,14 @@ module Kagu
22
22
  super || self == other
23
23
  end
24
24
 
25
- def exists?
26
- path.file?
25
+ def exists_on_disk?
26
+ path.present? && path.file?
27
27
  end
28
28
 
29
29
  def hash
30
30
  [artist, title].hash
31
31
  end
32
32
 
33
- def relative_path(directory)
34
- directory = directory.to_s
35
- directory.present? ? Pathname.new(path.to_s.gsub(/\A#{Regexp.escape(directory)}\//, '')) : path
36
- end
37
-
38
33
  def to_s
39
34
  "#{artist} - #{title}"
40
35
  end
@@ -59,7 +54,8 @@ module Kagu
59
54
  end
60
55
 
61
56
  def bpm=(value)
62
- @bpm = value.to_s =~ /\A[0-9]+\z/ ? value.to_i : nil
57
+ value = value.to_s =~ /\A[0-9]+\z/ ? value.to_i : nil
58
+ @bpm = (value && value > 0) ? value : nil
63
59
  end
64
60
 
65
61
  def genre=(value)
@@ -76,11 +72,9 @@ module Kagu
76
72
 
77
73
  def path=(value)
78
74
  value = value.to_s.presence
79
- value = URI.unescape(URI.parse(value).path) if value.is_a?(String) && value.starts_with?('file://')
80
- value = value.encode('UTF-8', 'UTF-8-MAC') if Kagu::IS_MAC_OS
81
- @path = Pathname.new(value)
82
- raise Error.new("No such file: #{path.to_s.inspect}") if path.exist? && !exists?
83
- Kagu.logger.error('Kagu') { "No such track: #{path.inspect}" } unless exists?
75
+ value = URI.unescape(URI.parse(value).path).presence if value.is_a?(String) && value.starts_with?('file://')
76
+ value = value.encode('UTF-8', 'UTF-8-MAC') if value.present? && Kagu::IS_MAC_OS
77
+ @path = value.present? ? Pathname.new(value) : nil
84
78
  end
85
79
 
86
80
  def title=(value)
@@ -35,7 +35,7 @@ module Kagu
35
35
  printObjectProperty(name: "year", value: track.year)
36
36
  print("END_TRACK")
37
37
  }
38
- }) do |line|
38
+ }).each do |line|
39
39
  if line == 'BEGIN_TRACK'
40
40
  attributes = {}
41
41
  elsif line == 'END_TRACK'
@@ -44,6 +44,7 @@ module Kagu
44
44
  attributes[match[1]] = JSON.parse(match[2])
45
45
  end
46
46
  end
47
+ nil
47
48
  end
48
49
 
49
50
  end
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: 3.0.6
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexis Toulotte
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-06 00:00:00.000000000 Z
11
+ date: 2020-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -134,7 +134,7 @@ homepage: https://github.com/alexistoulotte/kagu
134
134
  licenses:
135
135
  - MIT
136
136
  metadata: {}
137
- post_install_message:
137
+ post_install_message:
138
138
  rdoc_options: []
139
139
  require_paths:
140
140
  - lib
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  version: '0'
151
151
  requirements: []
152
152
  rubygems_version: 3.0.3
153
- signing_key:
153
+ signing_key:
154
154
  specification_version: 4
155
155
  summary: API for macOS Music
156
156
  test_files: []