paradiso 0.1.5 → 0.3.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.
- data/.gitignore +1 -0
- data/README.rdoc +46 -0
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/lib/paradiso/base.rb +42 -30
- data/lib/paradiso/playlist.rb +27 -18
- data/lib/paradiso.rb +7 -10
- data/paradiso.gemspec +6 -8
- metadata +8 -21
- data/README.rst +0 -15
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
pkg/*
|
data/README.rdoc
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
= Paradiso
|
2
|
+
|
3
|
+
A small lightweight command line interface for mplayer.
|
4
|
+
|
5
|
+
== Install
|
6
|
+
|
7
|
+
sudo gem install paradiso
|
8
|
+
|
9
|
+
== Usage
|
10
|
+
|
11
|
+
To play files
|
12
|
+
|
13
|
+
paradiso file1 file2
|
14
|
+
|
15
|
+
To create a playlist
|
16
|
+
|
17
|
+
paradiso -pn playlist file1 file2 dir1
|
18
|
+
|
19
|
+
To play a playlist and remove the items that has been already played
|
20
|
+
|
21
|
+
paradiso -pd playlist
|
22
|
+
|
23
|
+
== Config file
|
24
|
+
|
25
|
+
Paradiso has some basic support for a config file
|
26
|
+
|
27
|
+
touch ~/.paradiso
|
28
|
+
|
29
|
+
Sample config file, in YAML
|
30
|
+
|
31
|
+
fullscreen : true
|
32
|
+
aspectratio : "16:10"
|
33
|
+
|
34
|
+
== TODO
|
35
|
+
|
36
|
+
* Handling rar-archives
|
37
|
+
* Better playlist support
|
38
|
+
* Other mediums then just avi et al(DVD, Bluray and so on)
|
39
|
+
* Handle meta-data
|
40
|
+
* Config stuff, file ratios and such.
|
41
|
+
|
42
|
+
== Copyright
|
43
|
+
|
44
|
+
Copyright (c) 2010 Victor Bergöö. See LICENSE for details.
|
45
|
+
|
46
|
+
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/lib/paradiso/base.rb
CHANGED
@@ -8,47 +8,41 @@ require 'paradiso/playlist'
|
|
8
8
|
module Paradiso
|
9
9
|
class Paradiso
|
10
10
|
def initialize options, args
|
11
|
+
@playlist = []
|
11
12
|
@options = options
|
12
|
-
@pl_file = nil
|
13
13
|
@pid = nil
|
14
|
+
@amount_played = 0
|
14
15
|
|
15
|
-
if @options[:playlist] and args.size > 1 and not @options[:path]
|
16
|
-
puts "Error: Can only handle one playlist"
|
17
|
-
exit 1
|
18
|
-
end
|
19
|
-
|
20
16
|
if @options[:playlist] and not @options[:path]
|
21
|
-
|
22
|
-
|
17
|
+
args.each do |pl|
|
18
|
+
unless File.exist? pl
|
19
|
+
puts "Warning: playlist %s does not exist" % [pl]
|
20
|
+
next
|
21
|
+
end
|
22
|
+
|
23
|
+
@playlist << Playlist.create_from_file(pl)
|
24
|
+
end
|
23
25
|
else
|
24
|
-
@playlist
|
26
|
+
@playlist << Playlist.new(args, @options[:path])
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
28
30
|
def run
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
@playlist.each do |item|
|
33
|
-
if @options[:amount]
|
34
|
-
break if amount == @options[:amount]
|
35
|
-
amount += 1
|
36
|
-
end
|
37
|
-
|
38
|
-
puts "Playing #{item}"
|
39
|
-
|
40
|
-
cmd = "mplayer #{options_str} \"#{item}\""
|
41
|
-
POpen4::popen4(cmd) do |stdout, stderr, stdin, pid|
|
42
|
-
@pid = pid
|
43
|
-
end
|
31
|
+
@playlist.each do |pl|
|
32
|
+
break unless play? pl
|
44
33
|
end
|
45
34
|
rescue Interrupt
|
46
35
|
Process.kill(9, @pid) if @pid
|
47
36
|
puts "Exiting..."
|
48
37
|
ensure
|
49
|
-
|
50
|
-
|
51
|
-
|
38
|
+
@playlist.each do |pl|
|
39
|
+
if @options[:delete] and pl.empty?
|
40
|
+
pl.delete
|
41
|
+
end
|
42
|
+
|
43
|
+
if ((@options[:path] or @options[:delete]) and @options[:playlist]) and not pl.empty?
|
44
|
+
pl.create @options[:delete]
|
45
|
+
end
|
52
46
|
end
|
53
47
|
end
|
54
48
|
|
@@ -59,9 +53,7 @@ module Paradiso
|
|
59
53
|
ratio = @options[:aspectratio]
|
60
54
|
|
61
55
|
str += ['-monitoraspect', ratio, '-aspect', ratio]
|
62
|
-
if @options[:fullscreen]
|
63
|
-
str << "-fs"
|
64
|
-
end
|
56
|
+
str << "-fs" if @options[:fullscreen]
|
65
57
|
|
66
58
|
# more platforms needs to be added
|
67
59
|
if RUBY_PLATFORM =~ /darwin10/
|
@@ -70,6 +62,26 @@ module Paradiso
|
|
70
62
|
|
71
63
|
str.join " "
|
72
64
|
end
|
65
|
+
|
66
|
+
def play? playlist
|
67
|
+
options_str = handle_options
|
68
|
+
|
69
|
+
playlist.each do |item|
|
70
|
+
unless @options[:amount].nil?
|
71
|
+
return false if @amount_played == @options[:amount]
|
72
|
+
@amount_played += 1
|
73
|
+
end
|
74
|
+
|
75
|
+
puts "Playing #{item}"
|
76
|
+
|
77
|
+
cmd = "mplayer #{options_str} \"#{item}\""
|
78
|
+
POpen4::popen4(cmd) do |stdout, stderr, stdin, pid|
|
79
|
+
@pid = pid
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
true
|
84
|
+
end
|
73
85
|
end
|
74
86
|
end
|
75
87
|
|
data/lib/paradiso/playlist.rb
CHANGED
@@ -18,12 +18,13 @@ module Paradiso
|
|
18
18
|
items << line.sub(/[\r\n]+/, '')
|
19
19
|
end
|
20
20
|
|
21
|
-
new items
|
21
|
+
new items, file
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
def initialize files
|
25
|
+
def initialize files, path=nil
|
26
26
|
@files = []
|
27
|
+
@path = path
|
27
28
|
@current_idx = -1
|
28
29
|
|
29
30
|
files.each do |file|
|
@@ -52,31 +53,39 @@ module Paradiso
|
|
52
53
|
|
53
54
|
@files << other.files
|
54
55
|
end
|
55
|
-
|
56
|
-
def create
|
57
|
-
|
58
|
-
start_point = case @current_idx
|
59
|
-
when -1 then 0
|
60
|
-
when 0 then 1
|
61
|
-
else @current_idx + 1
|
62
|
-
end
|
63
|
-
start_point = 0 unless delete
|
64
|
-
|
65
|
-
if (start_point >= @files.size) and delete
|
66
|
-
File.delete path
|
67
|
-
return
|
68
|
-
end
|
56
|
+
|
57
|
+
def create delete=false
|
58
|
+
sp = delete ? start_point : 0
|
69
59
|
|
70
|
-
File.open(path, 'w') do |f|
|
71
|
-
@files[
|
60
|
+
File.open(@path, 'w') do |f|
|
61
|
+
@files[sp..-1].each { |line| f.puts line }
|
72
62
|
end
|
73
63
|
end
|
74
64
|
|
65
|
+
def delete
|
66
|
+
File.delete(@path) unless @path.nil?
|
67
|
+
end
|
68
|
+
|
75
69
|
def each
|
76
70
|
@files.each_index do |idx|
|
77
71
|
yield @files[idx]
|
78
72
|
@current_idx = idx
|
79
73
|
end
|
80
74
|
end
|
75
|
+
|
76
|
+
def empty?
|
77
|
+
start_point >= @files.size
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def start_point
|
83
|
+
# can this be made in a nicer way?
|
84
|
+
case @current_idx
|
85
|
+
when -1 then 0
|
86
|
+
when 0 then 1
|
87
|
+
else @current_idx + 1
|
88
|
+
end
|
89
|
+
end
|
81
90
|
end
|
82
91
|
end
|
data/lib/paradiso.rb
CHANGED
@@ -5,8 +5,9 @@
|
|
5
5
|
dir = File.dirname(__FILE__)
|
6
6
|
$LOAD_PATH.unshift(dir) unless $LOAD_PATH.include? dir
|
7
7
|
|
8
|
-
require 'json'
|
9
8
|
require 'optparse'
|
9
|
+
require 'yaml'
|
10
|
+
|
10
11
|
require 'paradiso/base'
|
11
12
|
|
12
13
|
module Paradiso
|
@@ -36,13 +37,9 @@ module Paradiso
|
|
36
37
|
|
37
38
|
config_file = File.expand_path('~/.paradiso')
|
38
39
|
if File.exist? config_file
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
options[key.to_sym] = value
|
43
|
-
end
|
44
|
-
rescue JSON::ParserError => e
|
45
|
-
puts "Error: Parsing the config file failed, please check it"
|
40
|
+
yaml = YAML::load(File.open(config_file, 'r').read())
|
41
|
+
yaml.each_pair do |key, value|
|
42
|
+
options[key.to_sym] = value
|
46
43
|
end
|
47
44
|
end
|
48
45
|
|
@@ -53,7 +50,7 @@ module Paradiso
|
|
53
50
|
args.options do |o|
|
54
51
|
o.set_summary_indent ' '
|
55
52
|
o.banner = "Usage: #{File.basename $0} [Options]"
|
56
|
-
o.define_head "A simple mplayer CLI"
|
53
|
+
o.define_head "Paradiso #{VERSION}: A simple mplayer CLI"
|
57
54
|
|
58
55
|
o.on_tail("-h", "--help", "Show this help message.") { puts o; exit }
|
59
56
|
o.on_tail("-v", "--version", "Show version number") { puts "Paradiso %s" % [VERSION]; exit}
|
@@ -78,7 +75,7 @@ module Paradiso
|
|
78
75
|
options[:path] = path
|
79
76
|
}
|
80
77
|
|
81
|
-
o.on("-p", "--playlist", "The
|
78
|
+
o.on("-p", "--playlist", "The arguments is playlists") {
|
82
79
|
options[:playlist] = true
|
83
80
|
}
|
84
81
|
|
data/paradiso.gemspec
CHANGED
@@ -5,22 +5,23 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{paradiso}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Victor Bergoo"]
|
12
|
-
s.date = %q{2010-10-
|
12
|
+
s.date = %q{2010-10-08}
|
13
13
|
s.default_executable = %q{paradiso}
|
14
14
|
s.description = %q{A simplified mplayer command line interface}
|
15
15
|
s.email = %q{victor.bergoo@gmail.com}
|
16
16
|
s.executables = ["paradiso"]
|
17
17
|
s.extra_rdoc_files = [
|
18
18
|
"LICENSE",
|
19
|
-
"README.
|
19
|
+
"README.rdoc"
|
20
20
|
]
|
21
21
|
s.files = [
|
22
|
-
"
|
23
|
-
"
|
22
|
+
".gitignore",
|
23
|
+
"LICENSE",
|
24
|
+
"README.rdoc",
|
24
25
|
"Rakefile",
|
25
26
|
"VERSION",
|
26
27
|
"bin/paradiso",
|
@@ -41,14 +42,11 @@ Gem::Specification.new do |s|
|
|
41
42
|
|
42
43
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
43
44
|
s.add_runtime_dependency(%q<popen4>, [">= 0"])
|
44
|
-
s.add_runtime_dependency(%q<json>, [">= 0"])
|
45
45
|
else
|
46
46
|
s.add_dependency(%q<popen4>, [">= 0"])
|
47
|
-
s.add_dependency(%q<json>, [">= 0"])
|
48
47
|
end
|
49
48
|
else
|
50
49
|
s.add_dependency(%q<popen4>, [">= 0"])
|
51
|
-
s.add_dependency(%q<json>, [">= 0"])
|
52
50
|
end
|
53
51
|
end
|
54
52
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paradiso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Victor Bergoo
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-08 00:00:00 +02:00
|
19
19
|
default_executable: paradiso
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -32,20 +32,6 @@ dependencies:
|
|
32
32
|
version: "0"
|
33
33
|
type: :runtime
|
34
34
|
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: json
|
37
|
-
prerelease: false
|
38
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
version: "0"
|
47
|
-
type: :runtime
|
48
|
-
version_requirements: *id002
|
49
35
|
description: A simplified mplayer command line interface
|
50
36
|
email: victor.bergoo@gmail.com
|
51
37
|
executables:
|
@@ -54,10 +40,11 @@ extensions: []
|
|
54
40
|
|
55
41
|
extra_rdoc_files:
|
56
42
|
- LICENSE
|
57
|
-
- README.
|
43
|
+
- README.rdoc
|
58
44
|
files:
|
45
|
+
- .gitignore
|
59
46
|
- LICENSE
|
60
|
-
- README.
|
47
|
+
- README.rdoc
|
61
48
|
- Rakefile
|
62
49
|
- VERSION
|
63
50
|
- bin/paradiso
|
data/README.rst
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
Paradiso
|
2
|
-
========
|
3
|
-
|
4
|
-
A small lightweight command line interface for mplayer_.
|
5
|
-
|
6
|
-
TODO
|
7
|
-
----
|
8
|
-
|
9
|
-
* Handling rar-archives(code already exists but doesn't work that great with OS X unrar)
|
10
|
-
* Better playlist support
|
11
|
-
* Other mediums then just avi et al(DVD, Bluray and so on)
|
12
|
-
* Proper ID3 et al parsing
|
13
|
-
* Config stuff, file ratios and such.
|
14
|
-
|
15
|
-
.. _mplayer: http://www.mplayerhq.hu
|