spty 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.md +17 -2
- data/lib/spty/cli.rb +1 -1
- data/lib/spty/commands/base_command.rb +13 -0
- data/lib/spty/commands/player_command.rb +1 -11
- data/lib/spty/commands/track_command.rb +48 -0
- data/lib/spty/commands/version_command.rb +1 -1
- data/lib/spty/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 522850d6e6a9a6eb5f13810aa5d6fd1a7b5b2c5e
|
4
|
+
data.tar.gz: a60e505c3c678e4192c59d5eb92ac31e55f1295d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71ce6cce28e3d61f19cf9eb95f9cc6e6b2103f2bf414536df847ab49d467959a983765f050fffb2ef8b117916cc3a66cf8ae4bb2185424ae2f903b978ebe28ef
|
7
|
+
data.tar.gz: 15f6143a5197f7f1f7c677518ac3c30bb5f9d9be62779508e0f1f2031a1e8a9ed2fd50e7949a7716709838812d6c57d305c8315ff8e1c8afc4f433ac257779bb
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# Spty
|
2
2
|
|
3
3
|
Spotify Player Terminal Utility. CLI that lets you control your
|
4
|
-
(
|
5
|
-
it uses
|
4
|
+
[Spotify](http://spotify.com) player from the terminal. Only works on MacOSX as
|
5
|
+
it uses [AppleScript API](https://developer.spotify.com/applescript-api/)
|
6
6
|
to control the player.
|
7
7
|
|
8
8
|
## Installation
|
@@ -30,6 +30,21 @@ Toggle player play / pause
|
|
30
30
|
$ spty player toggle
|
31
31
|
```
|
32
32
|
|
33
|
+
Get track title and artist
|
34
|
+
```
|
35
|
+
$ spty track info
|
36
|
+
```
|
37
|
+
|
38
|
+
Skip track and play the next track
|
39
|
+
```
|
40
|
+
$ spty track skip
|
41
|
+
```
|
42
|
+
|
43
|
+
Replay previous track
|
44
|
+
```
|
45
|
+
$ spty track replay
|
46
|
+
```
|
47
|
+
|
33
48
|
## Contributing
|
34
49
|
|
35
50
|
Bug reports and pull requests are welcome on GitHub at
|
data/lib/spty/cli.rb
CHANGED
@@ -5,7 +5,7 @@ module Spty
|
|
5
5
|
|
6
6
|
begin
|
7
7
|
klass = Object.const_get("Spty::Command::#{command.capitalize}Command")
|
8
|
-
klass.(args)
|
8
|
+
klass.(args, command)
|
9
9
|
rescue NameError => _e
|
10
10
|
puts "Do not understand command: #{command}"
|
11
11
|
# [todo] display help menu with list of all valid commands
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Spty::Command
|
2
|
+
class BaseCommand
|
3
|
+
def self.call(options, command)
|
4
|
+
action = options.shift
|
5
|
+
|
6
|
+
begin
|
7
|
+
self.send(action.to_sym, options)
|
8
|
+
rescue NameError => _e
|
9
|
+
puts "Do not understand command: #{command} #{action}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,15 +1,5 @@
|
|
1
1
|
module Spty::Command
|
2
|
-
class PlayerCommand
|
3
|
-
def self.call(options)
|
4
|
-
action = options.shift
|
5
|
-
|
6
|
-
begin
|
7
|
-
self.send(action.to_sym, options)
|
8
|
-
rescue NameError => _e
|
9
|
-
puts "Do not understand command: player #{action}"
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
2
|
+
class PlayerCommand < BaseCommand
|
13
3
|
# Check if the application is running
|
14
4
|
ASCRIPT_PLAYER_DETECT = <<-EOL
|
15
5
|
if application "Spotify" is running then
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Spty::Command
|
2
|
+
class TrackCommand < BaseCommand
|
3
|
+
ASCRIPT_TRACK_INFO = <<-EOL
|
4
|
+
tell application "Spotify"
|
5
|
+
set currentTrack to name of current track as string
|
6
|
+
set currentArtist to artist of current track as string
|
7
|
+
|
8
|
+
return currentTrack & " - " & currentArtist
|
9
|
+
end tell
|
10
|
+
EOL
|
11
|
+
def self.info(_)
|
12
|
+
if Spty::Command::PlayerCommand.running?
|
13
|
+
track_info = Spty::AppleScriptRunner.(ASCRIPT_TRACK_INFO)
|
14
|
+
player_state_script = Spty::Command::PlayerCommand::ASCRIPT_PLAYER_STATE
|
15
|
+
player_state = Spty::AppleScriptRunner.(player_state_script)
|
16
|
+
|
17
|
+
puts "=> #{track_info.strip} [#{player_state.strip}]"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
ASCRIPT_TRACK_SKIP = <<-EOL
|
22
|
+
tell application "Spotify"
|
23
|
+
next track
|
24
|
+
end tell
|
25
|
+
EOL
|
26
|
+
def self.skip(_)
|
27
|
+
move_track(ASCRIPT_TRACK_SKIP)
|
28
|
+
end
|
29
|
+
|
30
|
+
ASCRIPT_TRACK_REPLAY = <<-EOL
|
31
|
+
tell application "Spotify"
|
32
|
+
previous track
|
33
|
+
end tell
|
34
|
+
EOL
|
35
|
+
def self.replay(_)
|
36
|
+
move_track(ASCRIPT_TRACK_REPLAY)
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.move_track(ascript)
|
40
|
+
if Spty::Command::PlayerCommand.running?
|
41
|
+
Spty::AppleScriptRunner.(ascript)
|
42
|
+
Spty::Command::TrackCommand.info(nil)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
private_class_method :move_track
|
47
|
+
end
|
48
|
+
end
|
data/lib/spty/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- J Shamsul
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -90,7 +90,9 @@ files:
|
|
90
90
|
- lib/spty.rb
|
91
91
|
- lib/spty/apple_script_runner.rb
|
92
92
|
- lib/spty/cli.rb
|
93
|
+
- lib/spty/commands/base_command.rb
|
93
94
|
- lib/spty/commands/player_command.rb
|
95
|
+
- lib/spty/commands/track_command.rb
|
94
96
|
- lib/spty/commands/version_command.rb
|
95
97
|
- lib/spty/version.rb
|
96
98
|
- spty.gemspec
|