mpv 1.1.2 → 1.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/lib/mpv.rb +3 -1
- data/lib/mpv/exceptions.rb +16 -0
- data/lib/mpv/server.rb +38 -1
- data/lib/mpv/utils.rb +13 -0
- 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: a56beb79994103bfdb822f55160b357c84288459
|
|
4
|
+
data.tar.gz: 8c8356594fd17c1887019136f3f57f9eb359668d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a5cccbc367d135c2da27cc9dc881df213df3ddb3a85585381828283197f5a3eb8e28ca9077d43209076c62899085fa92a449b18099807191612fb41d3ad0ab6d
|
|
7
|
+
data.tar.gz: d76614aacb7a00f0fba4758ff0c30f857b43fadb02c2747bef1e72a6c88aea3c71af3a1cd2f299430e346ba4f398aa33bef638f23f3debb173f22564ab9a391d
|
data/lib/mpv.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require_relative "mpv/exceptions"
|
|
2
|
+
require_relative "mpv/utils"
|
|
1
3
|
require_relative "mpv/callback"
|
|
2
4
|
require_relative "mpv/client"
|
|
3
5
|
require_relative "mpv/server"
|
|
@@ -6,5 +8,5 @@ require_relative "mpv/session"
|
|
|
6
8
|
# The toplevel namespace for ruby-mpv.
|
|
7
9
|
module MPV
|
|
8
10
|
# The current version of ruby-mpv.
|
|
9
|
-
VERSION = "1.
|
|
11
|
+
VERSION = "1.2.0".freeze
|
|
10
12
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module MPV
|
|
2
|
+
class MPVError < RuntimeError
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
class MPVNotAvailableError < MPVError
|
|
6
|
+
def initialize
|
|
7
|
+
super "Could not find an mpv binary to execute in the system path"
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class MPVUnsupportedFlagError < MPVError
|
|
12
|
+
def initialize(flag)
|
|
13
|
+
super "Installed mpv doesn't support the #{flag} flag"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
data/lib/mpv/server.rb
CHANGED
|
@@ -12,19 +12,56 @@ module MPV
|
|
|
12
12
|
# @return [Fixnum] the process id of the mpv process
|
|
13
13
|
attr_reader :pid
|
|
14
14
|
|
|
15
|
+
# @return [Boolean] whether `mpv` is executable within the system path
|
|
16
|
+
def self.available?
|
|
17
|
+
Utils.which?("mpv")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# @return [Boolean] whether `mpv` supports the given flag
|
|
21
|
+
# @note returns false if `mpv` is not available
|
|
22
|
+
def self.has_flag?(flag)
|
|
23
|
+
return false unless available?
|
|
24
|
+
|
|
25
|
+
# MPV allows flags to be suffixed with =yes or =no, but doesn't
|
|
26
|
+
# include these variations in their list. They also allow a --no-
|
|
27
|
+
# prefix that isn't included in the list, so we normalize these out.
|
|
28
|
+
# Additionally, we need to remove trailing arguments.
|
|
29
|
+
normalized_flag = flag.sub(/^--no-/, '--').sub(/=\S*/, '')
|
|
30
|
+
|
|
31
|
+
flags = `mpv --list-options`.split.select { |s| s.start_with?("--") }
|
|
32
|
+
flags.include?(normalized_flag)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Ensures that a binary named `mpv` can be executed.
|
|
36
|
+
# @raise [MPVNotAvailableError] if no `mpv` executable in the system path
|
|
37
|
+
def self.ensure_available!
|
|
38
|
+
raise MPVNotAvailableError unless available?
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Ensures that that the `mpv` being executed supports the given flag.
|
|
42
|
+
# @raise [MPVNotAvailableError] if no `mpv` executable in the system path
|
|
43
|
+
# @raise [MPVUnsupportedFlagError] if `mpv` does not support the given flag
|
|
44
|
+
def self.ensure_flag!(flag)
|
|
45
|
+
ensure_available!
|
|
46
|
+
raise MPVUnsupportedFlagError, flag unless has_flag?(flag)
|
|
47
|
+
end
|
|
48
|
+
|
|
15
49
|
# @param path [String] the path of the socket to be created
|
|
16
50
|
# (defaults to a tmpname in `/tmp`)
|
|
17
51
|
# @param user_args [Array<String>] additional arguments to use when
|
|
18
52
|
# spawning mpv
|
|
19
53
|
def initialize(path: Dir::Tmpname.make_tmpname("/tmp/mpv", ".sock"),
|
|
20
54
|
user_args: [])
|
|
55
|
+
|
|
21
56
|
@socket_path = path
|
|
22
57
|
@args = [
|
|
23
58
|
"--idle",
|
|
24
|
-
"--no
|
|
59
|
+
"--terminal=no",
|
|
25
60
|
"--input-ipc-server=%{path}" % { path: @socket_path },
|
|
26
61
|
].concat(user_args).uniq
|
|
27
62
|
|
|
63
|
+
@args.each { |arg| self.class.ensure_flag! arg }
|
|
64
|
+
|
|
28
65
|
@pid = Process.spawn("mpv", *@args)
|
|
29
66
|
end
|
|
30
67
|
|
data/lib/mpv/utils.rb
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module MPV
|
|
2
|
+
module Utils
|
|
3
|
+
# Tests whether the given utility is available in the system path.
|
|
4
|
+
# @param util [String] the utility to test
|
|
5
|
+
# @return [Boolean] whether or not the utility is available
|
|
6
|
+
# @api private
|
|
7
|
+
def self.which?(util)
|
|
8
|
+
ENV["PATH"].split(File::PATH_SEPARATOR).any? do |path|
|
|
9
|
+
File.executable?(File.join(path, util))
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mpv
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- William Woodruff
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-01-
|
|
11
|
+
date: 2017-01-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: A library for creating and controlling mpv instances.
|
|
14
14
|
email: william@tuffbizz.com
|
|
@@ -22,8 +22,10 @@ files:
|
|
|
22
22
|
- lib/mpv.rb
|
|
23
23
|
- lib/mpv/callback.rb
|
|
24
24
|
- lib/mpv/client.rb
|
|
25
|
+
- lib/mpv/exceptions.rb
|
|
25
26
|
- lib/mpv/server.rb
|
|
26
27
|
- lib/mpv/session.rb
|
|
28
|
+
- lib/mpv/utils.rb
|
|
27
29
|
homepage: https://github.com/woodruffw/ruby-mpv
|
|
28
30
|
licenses:
|
|
29
31
|
- MIT
|