hearken 0.1.1 → 0.1.3
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 +7 -0
- data/.rubocop.yml +14 -0
- data/.tool-versions +1 -0
- data/Gemfile +7 -1
- data/Gemfile.lock +95 -0
- data/{README.rdoc → README.md} +12 -50
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/exe/hearken +9 -0
- data/exe/hearken_index +13 -0
- data/hearken.gemspec +35 -35
- data/lib/hearken/colour.rb +3 -1
- data/lib/hearken/command/enqueue.rb +35 -10
- data/lib/hearken/command/reload.rb +18 -6
- data/lib/hearken/command/search.rb +31 -20
- data/lib/hearken/console.rb +11 -27
- data/lib/hearken/debug.rb +6 -6
- data/lib/hearken/indexing/ffmpeg_file.rb +7 -0
- data/lib/hearken/indexing/file.rb +3 -1
- data/lib/hearken/indexing/indexer.rb +32 -24
- data/lib/hearken/library.rb +49 -41
- data/lib/hearken/monkey_violence.rb +9 -7
- data/lib/hearken/paths.rb +13 -19
- data/lib/hearken/range_expander.rb +18 -13
- data/lib/hearken/tagged.rb +15 -11
- data/lib/hearken/track.rb +53 -39
- data/lib/hearken.rb +2 -2
- metadata +52 -141
- data/.gitignore +0 -5
- data/HISTORY.rdoc +0 -38
- data/MIT-LICENSE +0 -20
- data/bin/hearken +0 -7
- data/bin/hearken_index +0 -12
- data/lib/hearken/command/list.rb +0 -32
- data/lib/hearken/command/love.rb +0 -7
- data/lib/hearken/command/profile.rb +0 -7
- data/lib/hearken/command/recent.rb +0 -38
- data/lib/hearken/command/remove.rb +0 -15
- data/lib/hearken/command/restart.rb +0 -7
- data/lib/hearken/command/scrobbling.rb +0 -14
- data/lib/hearken/command/setup_scrobbling.rb +0 -7
- data/lib/hearken/command/shuffle.rb +0 -13
- data/lib/hearken/command/start.rb +0 -7
- data/lib/hearken/command/status.rb +0 -7
- data/lib/hearken/command/stop.rb +0 -7
- data/lib/hearken/command.rb +0 -35
- data/lib/hearken/notification/growl_notifier.rb +0 -15
- data/lib/hearken/player.rb +0 -126
- data/lib/hearken/preferences.rb +0 -30
- data/lib/hearken/queue.rb +0 -33
- data/lib/hearken/scrobbler.rb +0 -77
- data/lib/hearken/simple_scrobbler.rb +0 -94
- data/media/ice_cream.png +0 -0
- data/spec/hearken/command/enqueue_spec.rb +0 -24
- data/spec/hearken/command/list_spec.rb +0 -31
- data/spec/hearken/command/reload_spec.rb +0 -20
- data/spec/hearken/command/shuffle_spec.rb +0 -31
- data/spec/hearken/player_spec.rb +0 -38
- data/spec/hearken/range_expander_spec.rb +0 -28
- data/spec/spec_helper.rb +0 -5
@@ -1,31 +1,39 @@
|
|
1
|
-
|
2
|
-
require 'hearken/indexing/persistant_traverser'
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
require "hearken/paths"
|
4
|
+
require "hearken/indexing/persistant_traverser"
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
module Hearken
|
7
|
+
module Indexing
|
8
|
+
class Indexer
|
9
|
+
include Hearken::Paths
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
def initialize(path)
|
12
|
+
create_paths
|
13
|
+
@path = path
|
14
|
+
end
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
def execute
|
17
|
+
start = Time.now
|
18
|
+
count = 0
|
19
|
+
traverser = Hearken::Indexing::PersistantTraverser.new @path, index_path
|
21
20
|
|
22
|
-
|
21
|
+
traverser.each do |_audio_file|
|
22
|
+
count += 1
|
23
|
+
show_progress start, count if (count % 1000).zero?
|
24
|
+
end
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
show_progress start, count
|
27
|
+
|
28
|
+
system "afplay #{File.dirname(__FILE__)}/../../../media/applause.mp3"
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def show_progress(start, count)
|
34
|
+
elapsed = Time.now - start
|
35
|
+
warn "Processed #{count} audio files in #{elapsed} seconds (#{elapsed / count} per file)"
|
36
|
+
end
|
37
|
+
end
|
30
38
|
end
|
31
|
-
end
|
39
|
+
end
|
data/lib/hearken/library.rb
CHANGED
@@ -1,43 +1,51 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
id
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "hearken/debug"
|
4
|
+
require "hearken/paths"
|
5
|
+
require "hearken/track"
|
6
|
+
|
7
|
+
module Hearken
|
8
|
+
class Library
|
9
|
+
include Hearken::Paths
|
10
|
+
|
11
|
+
FILE_FIELDS = %w[path timestamp].freeze
|
12
|
+
TAG_FIELDS = %w[album track title artist time date albumartist puid mbartistid mbalbumid mbalbumartistid asin].freeze
|
13
|
+
FIELDS = FILE_FIELDS + TAG_FIELDS
|
14
|
+
|
15
|
+
include Hearken::Debug
|
16
|
+
attr_reader :tracks
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
@tracks = []
|
20
|
+
create_paths
|
21
|
+
reload
|
22
|
+
end
|
23
|
+
|
24
|
+
def count
|
25
|
+
@tracks.count
|
26
|
+
end
|
27
|
+
|
28
|
+
def row(id)
|
29
|
+
@tracks[id]
|
30
|
+
end
|
31
|
+
|
32
|
+
def with_track(id)
|
33
|
+
yield @tracks[id]
|
34
|
+
end
|
35
|
+
|
36
|
+
def reload
|
37
|
+
return unless File.exist?(index_path)
|
38
|
+
|
39
|
+
File.open index_path do |file|
|
40
|
+
id = 0
|
41
|
+
while (line = file.gets)
|
42
|
+
row = line.chomp.split "<->"
|
43
|
+
track = Hearken::Track.new id
|
44
|
+
FIELDS.each { |field| track.send "#{field}=", row.shift }
|
45
|
+
@tracks << track
|
46
|
+
id += 1
|
47
|
+
end
|
40
48
|
end
|
41
|
-
end
|
49
|
+
end
|
42
50
|
end
|
43
|
-
end
|
51
|
+
end
|
@@ -1,21 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class String
|
2
4
|
def from_home
|
3
|
-
File.expand_path(
|
5
|
+
"#{File.expand_path("~")}/#{self}"
|
4
6
|
end
|
5
7
|
|
6
|
-
def escape
|
8
|
+
def escape(char)
|
7
9
|
gsub(char) { "\\#{char}" }
|
8
10
|
end
|
9
11
|
|
10
|
-
def escape_all
|
11
|
-
chars.inject(self) {|s,t| s.escape t }
|
12
|
+
def escape_all(chars)
|
13
|
+
chars.inject(self) { |s, t| s.escape t }
|
12
14
|
end
|
13
15
|
|
14
16
|
def escape_for_sh
|
15
|
-
|
17
|
+
escape_all " `';&!()$".scan(/./)
|
16
18
|
end
|
17
19
|
|
18
20
|
def escape_for_sh_quoted
|
19
|
-
|
21
|
+
escape "`"
|
20
22
|
end
|
21
|
-
end
|
23
|
+
end
|
data/lib/hearken/paths.rb
CHANGED
@@ -1,24 +1,18 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
attr_reader :base_path, :preferences_path, :queue_path, :index_path
|
3
|
+
require "fileutils"
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
@queue_path = '.hearken/queue'.from_home
|
10
|
-
@index_path = '.hearken/music'.from_home
|
11
|
-
FileUtils.mv '.hearken'.from_home, '.hearken.tmp'.from_home if File.exist?('.hearken'.from_home) && File.file?('.hearken'.from_home)
|
12
|
-
FileUtils.mkdir_p '.hearken/queue'.from_home
|
13
|
-
FileUtils.mv '.hearken.tmp'.from_home, @preferences_path if File.exist? '.hearken.tmp'.from_home
|
14
|
-
FileUtils.mv '.music'.from_home, @index_path if File.exist? '.music'.from_home
|
15
|
-
end
|
5
|
+
module Hearken
|
6
|
+
module Paths
|
7
|
+
attr_reader :base_path, :index_path
|
16
8
|
|
17
|
-
|
18
|
-
|
19
|
-
|
9
|
+
def create_paths
|
10
|
+
@base_path = ".hearken".from_home
|
11
|
+
@index_path = ".hearken/music".from_home
|
12
|
+
end
|
20
13
|
|
21
|
-
|
22
|
-
|
14
|
+
def in_base_dir(&block)
|
15
|
+
Dir.chdir(base_path, &block)
|
16
|
+
end
|
23
17
|
end
|
24
|
-
end
|
18
|
+
end
|
@@ -1,30 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Hearken
|
2
4
|
class RangeExpander
|
3
|
-
def expand
|
4
|
-
text.split(/[^0-9a-z-]/).inject([]) {|acc, term| acc + expand_term(term) }
|
5
|
+
def expand(text)
|
6
|
+
text.split(/[^0-9a-z-]/).inject([]) { |acc, term| acc + expand_term(term) }
|
5
7
|
end
|
6
8
|
|
7
|
-
def expand_to_ids
|
8
|
-
expand(text).map {|number| from_number number }
|
9
|
+
def expand_to_ids(text)
|
10
|
+
expand(text).map { |number| from_number number }
|
9
11
|
end
|
10
|
-
|
11
|
-
|
12
|
-
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def expand_term(term)
|
16
|
+
words = term.split "-"
|
13
17
|
words.empty? ? [] : range(words.first, words.last)
|
14
18
|
end
|
15
19
|
|
16
|
-
def range
|
17
|
-
f
|
18
|
-
t = to_number(
|
20
|
+
def range(from, to)
|
21
|
+
f = to_number(from)
|
22
|
+
t = to_number(to)
|
23
|
+
t = to_number(from.slice(0...from.size - to.size) + to) if t < f
|
19
24
|
(f..t).to_a
|
20
25
|
end
|
21
26
|
|
22
|
-
def from_number
|
27
|
+
def from_number(term)
|
23
28
|
term.to_s 36
|
24
29
|
end
|
25
30
|
|
26
|
-
def to_number
|
31
|
+
def to_number(term)
|
27
32
|
term.to_i 36
|
28
33
|
end
|
29
34
|
end
|
30
|
-
end
|
35
|
+
end
|
data/lib/hearken/tagged.rb
CHANGED
@@ -1,15 +1,19 @@
|
|
1
|
-
|
2
|
-
FILE_FIELDS = %w{path timestamp}
|
3
|
-
TAG_FIELDS = %w{album track title artist time date albumartist puid mbartistid mbalbumid mbalbumartistid asin}
|
4
|
-
FIELDS = FILE_FIELDS + TAG_FIELDS
|
1
|
+
# frozen_string_literal: true
|
5
2
|
|
6
|
-
|
3
|
+
module Hearken
|
4
|
+
module Tagged
|
5
|
+
FILE_FIELDS = %w[path timestamp].freeze
|
6
|
+
TAG_FIELDS = %w[album track title artist time date albumartist puid mbartistid mbalbumid mbalbumartistid asin].freeze
|
7
|
+
FIELDS = FILE_FIELDS + TAG_FIELDS
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
attr_accessor(*FIELDS.map(&:to_sym))
|
10
|
+
|
11
|
+
def no_tag_fields?
|
12
|
+
TAG_FIELDS.select { |field| send field }.empty?
|
13
|
+
end
|
11
14
|
|
12
|
-
|
13
|
-
|
15
|
+
def to_a
|
16
|
+
FIELDS.map { |field| send field }
|
17
|
+
end
|
14
18
|
end
|
15
|
-
end
|
19
|
+
end
|
data/lib/hearken/track.rb
CHANGED
@@ -1,39 +1,53 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "hearken/tagged"
|
4
|
+
require "hearken/colour"
|
5
|
+
|
6
|
+
module Hearken
|
7
|
+
class Track
|
8
|
+
include Hearken::Tagged
|
9
|
+
include Hearken::Colour
|
10
|
+
|
11
|
+
attr_accessor :id, :started
|
12
|
+
|
13
|
+
def initialize(id = nil)
|
14
|
+
@id = id
|
15
|
+
end
|
16
|
+
|
17
|
+
def [](key)
|
18
|
+
send key
|
19
|
+
end
|
20
|
+
|
21
|
+
def valid?
|
22
|
+
@track
|
23
|
+
end
|
24
|
+
|
25
|
+
def search_id
|
26
|
+
id.to_s 36
|
27
|
+
end
|
28
|
+
|
29
|
+
def search_string
|
30
|
+
"#{artist.to_s.downcase}#{album.to_s.downcase}#{title.to_s.downcase}#{date}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_s
|
34
|
+
[
|
35
|
+
"[#{my(:search_id, :white)}]",
|
36
|
+
my(:artist, :yellow),
|
37
|
+
my(:album, :cyan),
|
38
|
+
my(:track, :magenta),
|
39
|
+
my(:title, :green),
|
40
|
+
my(:date, :white),
|
41
|
+
my(:time, :white)
|
42
|
+
].join(" ")
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_short_s
|
46
|
+
"#{track} #{title}\n#{artist}\n#{album}"
|
47
|
+
end
|
48
|
+
|
49
|
+
def my(field, colour)
|
50
|
+
c send(field).to_s, colour
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/hearken.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Hearken
|
2
|
-
VERSION = '0.1.
|
3
|
-
end
|
2
|
+
VERSION = '0.1.3'
|
3
|
+
end
|
metadata
CHANGED
@@ -1,106 +1,49 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hearken
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Mark Ryall
|
9
|
-
autorequire:
|
10
|
-
bindir:
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2022-09-26 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: shell_shock
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
30
13
|
- !ruby/object:Gem::Dependency
|
31
14
|
name: rainbow
|
32
15
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ~>
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '1'
|
38
|
-
type: :runtime
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '1'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: nokogiri
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
16
|
requirements:
|
51
|
-
- - ~>
|
17
|
+
- - "~>"
|
52
18
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
19
|
+
version: '2'
|
54
20
|
type: :runtime
|
55
21
|
prerelease: false
|
56
22
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
23
|
requirements:
|
59
|
-
- - ~>
|
24
|
+
- - "~>"
|
60
25
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
26
|
+
version: '2'
|
62
27
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
28
|
+
name: shell_shock
|
64
29
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
30
|
requirements:
|
67
|
-
- -
|
31
|
+
- - ">="
|
68
32
|
- !ruby/object:Gem::Version
|
69
33
|
version: '0'
|
70
|
-
type: :
|
34
|
+
type: :runtime
|
71
35
|
prerelease: false
|
72
36
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
37
|
requirements:
|
75
|
-
- -
|
38
|
+
- - ">="
|
76
39
|
- !ruby/object:Gem::Version
|
77
40
|
version: '0'
|
78
|
-
|
79
|
-
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ~>
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '2'
|
86
|
-
type: :development
|
87
|
-
prerelease: false
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '2'
|
94
|
-
description: ! 'A command line tool to enqueue and play music tracks.
|
95
|
-
|
96
|
-
|
97
|
-
This also extracts the tags from a collection of folders.
|
41
|
+
description: |
|
42
|
+
A command line tool to enqueue and play music trackspec.
|
98
43
|
|
44
|
+
This also extracts the tags from a collection of folderspec.
|
99
45
|
|
100
|
-
This replaces and combines the functionality from a couple of other gems (audio_library
|
101
|
-
and songbirdsh).
|
102
|
-
|
103
|
-
'
|
46
|
+
This replaces and combines the functionality from a couple of other gems (audio_library and songbirdsh).
|
104
47
|
email:
|
105
48
|
- mark@ryall.name
|
106
49
|
executables:
|
@@ -109,41 +52,30 @@ executables:
|
|
109
52
|
extensions: []
|
110
53
|
extra_rdoc_files: []
|
111
54
|
files:
|
112
|
-
- .cards/4d6da46f-8838-488f-997b-9ec873092d5d
|
113
|
-
- .cards/68695ed3-ef6c-4c65-939e-48695a4511c8
|
114
|
-
- .cards/6ed72945-35a4-4372-97d8-13b357d8c7c0
|
115
|
-
- .cards/91de072e-4427-48dc-89ad-0b03756eb689
|
116
|
-
- .cards/9242c879-a66f-4144-8f24-b05f7c5a49f3
|
117
|
-
- .cards/94f23de2-4e0c-417a-aa82-3147908e2481
|
118
|
-
- .cards/a5be50c4-2117-4ecf-bc64-e9977f4d52c1
|
119
|
-
- .cards/f742a9f4-36af-43e5-a7cb-480049a43821
|
120
|
-
- .
|
55
|
+
- ".cards/4d6da46f-8838-488f-997b-9ec873092d5d"
|
56
|
+
- ".cards/68695ed3-ef6c-4c65-939e-48695a4511c8"
|
57
|
+
- ".cards/6ed72945-35a4-4372-97d8-13b357d8c7c0"
|
58
|
+
- ".cards/91de072e-4427-48dc-89ad-0b03756eb689"
|
59
|
+
- ".cards/9242c879-a66f-4144-8f24-b05f7c5a49f3"
|
60
|
+
- ".cards/94f23de2-4e0c-417a-aa82-3147908e2481"
|
61
|
+
- ".cards/a5be50c4-2117-4ecf-bc64-e9977f4d52c1"
|
62
|
+
- ".cards/f742a9f4-36af-43e5-a7cb-480049a43821"
|
63
|
+
- ".rubocop.yml"
|
64
|
+
- ".tool-versions"
|
121
65
|
- Gemfile
|
122
|
-
-
|
123
|
-
-
|
124
|
-
- README.rdoc
|
66
|
+
- Gemfile.lock
|
67
|
+
- README.md
|
125
68
|
- Rakefile
|
126
|
-
- bin/
|
127
|
-
- bin/
|
69
|
+
- bin/console
|
70
|
+
- bin/setup
|
71
|
+
- exe/hearken
|
72
|
+
- exe/hearken_index
|
128
73
|
- hearken.gemspec
|
129
74
|
- lib/hearken.rb
|
130
75
|
- lib/hearken/colour.rb
|
131
|
-
- lib/hearken/command.rb
|
132
76
|
- lib/hearken/command/enqueue.rb
|
133
|
-
- lib/hearken/command/list.rb
|
134
|
-
- lib/hearken/command/love.rb
|
135
|
-
- lib/hearken/command/profile.rb
|
136
|
-
- lib/hearken/command/recent.rb
|
137
77
|
- lib/hearken/command/reload.rb
|
138
|
-
- lib/hearken/command/remove.rb
|
139
|
-
- lib/hearken/command/restart.rb
|
140
|
-
- lib/hearken/command/scrobbling.rb
|
141
78
|
- lib/hearken/command/search.rb
|
142
|
-
- lib/hearken/command/setup_scrobbling.rb
|
143
|
-
- lib/hearken/command/shuffle.rb
|
144
|
-
- lib/hearken/command/start.rb
|
145
|
-
- lib/hearken/command/status.rb
|
146
|
-
- lib/hearken/command/stop.rb
|
147
79
|
- lib/hearken/console.rb
|
148
80
|
- lib/hearken/debug.rb
|
149
81
|
- lib/hearken/indexing.rb
|
@@ -157,62 +89,41 @@ files:
|
|
157
89
|
- lib/hearken/indexing/persisted_traverser.rb
|
158
90
|
- lib/hearken/library.rb
|
159
91
|
- lib/hearken/monkey_violence.rb
|
160
|
-
- lib/hearken/notification/growl_notifier.rb
|
161
92
|
- lib/hearken/paths.rb
|
162
|
-
- lib/hearken/player.rb
|
163
|
-
- lib/hearken/preferences.rb
|
164
|
-
- lib/hearken/queue.rb
|
165
93
|
- lib/hearken/range_expander.rb
|
166
|
-
- lib/hearken/scrobbler.rb
|
167
|
-
- lib/hearken/simple_scrobbler.rb
|
168
94
|
- lib/hearken/tagged.rb
|
169
95
|
- lib/hearken/track.rb
|
170
96
|
- media/applause.mp3
|
171
|
-
- media/ice_cream.png
|
172
|
-
- spec/hearken/command/enqueue_spec.rb
|
173
|
-
- spec/hearken/command/list_spec.rb
|
174
|
-
- spec/hearken/command/reload_spec.rb
|
175
|
-
- spec/hearken/command/shuffle_spec.rb
|
176
|
-
- spec/hearken/player_spec.rb
|
177
|
-
- spec/hearken/range_expander_spec.rb
|
178
|
-
- spec/spec_helper.rb
|
179
97
|
homepage: http://github.com/markryall/hearken
|
180
|
-
licenses:
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
98
|
+
licenses: []
|
99
|
+
metadata:
|
100
|
+
rubygems_mfa_required: 'true'
|
101
|
+
post_install_message: |
|
102
|
+
Hey - thanks for installing hearken.
|
103
|
+
|
104
|
+
Before doing anything else, you should index your music collection by running:
|
105
|
+
|
106
|
+
hearken_index path_to_your_music_collection
|
107
|
+
|
108
|
+
This could take a while if you have a large collection - you should hear some applause when it's done
|
109
|
+
|
110
|
+
After that just run hearken to start searching for and then queueing tracks.
|
187
111
|
rdoc_options: []
|
188
112
|
require_paths:
|
189
113
|
- lib
|
190
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
191
|
-
none: false
|
192
115
|
requirements:
|
193
|
-
- -
|
116
|
+
- - ">="
|
194
117
|
- !ruby/object:Gem::Version
|
195
|
-
version:
|
118
|
+
version: 2.6.0
|
196
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
|
-
none: false
|
198
120
|
requirements:
|
199
|
-
- -
|
121
|
+
- - ">="
|
200
122
|
- !ruby/object:Gem::Version
|
201
123
|
version: '0'
|
202
|
-
segments:
|
203
|
-
- 0
|
204
|
-
hash: 2801778265441540950
|
205
124
|
requirements: []
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
specification_version: 3
|
125
|
+
rubygems_version: 3.3.3
|
126
|
+
signing_key:
|
127
|
+
specification_version: 4
|
210
128
|
summary: command line music player
|
211
|
-
test_files:
|
212
|
-
- spec/hearken/command/enqueue_spec.rb
|
213
|
-
- spec/hearken/command/list_spec.rb
|
214
|
-
- spec/hearken/command/reload_spec.rb
|
215
|
-
- spec/hearken/command/shuffle_spec.rb
|
216
|
-
- spec/hearken/player_spec.rb
|
217
|
-
- spec/hearken/range_expander_spec.rb
|
218
|
-
- spec/spec_helper.rb
|
129
|
+
test_files: []
|