paradiso 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -20,6 +20,12 @@ To play a playlist and remove the items that has been already played
20
20
 
21
21
  paradiso -pd playlist
22
22
 
23
+ == RAR-archives
24
+
25
+ It's possible to stream rar-archives, it works exactly like other parameters, but will remove "duplicates", i.e. if there's a filename.rar, filename.r00 and filename.r01 then we'll just keep the first occurrence.
26
+
27
+ Note: There seems to be a problem with the unrar installed from the package manager port[http://www.macports.org/] for Mac OS X, but everything seems to work fine for the version installed through homebrew[http://github.com/mxcl/homebrew].
28
+
23
29
  == Config file
24
30
 
25
31
  Paradiso has some basic support for a config file
@@ -30,10 +36,23 @@ Sample config file, in YAML
30
36
 
31
37
  fullscreen : true
32
38
  aspectratio : "16:10"
39
+
40
+ It's also possible to tell where mplayer is located or specify another name
41
+ of mplayer by adding this to the config file:
42
+
43
+ player: /usr/local/bin/mplayer
44
+
45
+ Same goes for unrar:
46
+
47
+ unrar: /usr/local/bin/unrar
48
+
49
+ Ignore file endings:
50
+
51
+ ignore_endings: ["nfo", "sfv", "txt"] # default
52
+ ignore_endings: ["avi"]
33
53
 
34
54
  == TODO
35
55
 
36
- * Handling rar-archives
37
56
  * Better playlist support
38
57
  * Other mediums then just avi et al(DVD, Bluray and so on)
39
58
  * Handle meta-data
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.4.0
data/lib/paradiso/base.rb CHANGED
@@ -13,17 +13,26 @@ module Paradiso
13
13
  @pid = nil
14
14
  @amount_played = 0
15
15
 
16
+ if args.empty?
17
+ puts "Error: needs atleast one argument"
18
+ exit 1
19
+ end
20
+
16
21
  if @options[:playlist] and not @options[:path]
17
22
  args.each do |pl|
18
23
  unless File.exist? pl
19
24
  puts "Warning: playlist %s does not exist" % [pl]
20
25
  next
21
26
  end
22
-
23
- @playlist << Playlist.create_from_file(pl)
27
+
28
+ begin
29
+ @playlist << Playlist.create_from_file(pl, @options[:ignore_endings])
30
+ rescue ArgumentError => e
31
+ puts "Warning: #{e}"
32
+ end
24
33
  end
25
34
  else
26
- @playlist << Playlist.new(args, @options[:path])
35
+ @playlist << Playlist.new(args, @options[:path], @options[:ignore_endings])
27
36
  end
28
37
  end
29
38
 
@@ -36,12 +45,12 @@ module Paradiso
36
45
  puts "Exiting..."
37
46
  ensure
38
47
  @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]
48
+ if (@options[:path] or @options[:delete]) and @options[:playlist]
49
+ if pl.started? and not pl.empty?
50
+ pl.create @options[:delete]
51
+ elsif pl.empty?
52
+ pl.delete
53
+ end
45
54
  end
46
55
  end
47
56
  end
@@ -73,8 +82,11 @@ module Paradiso
73
82
  end
74
83
 
75
84
  puts "Playing #{item}"
76
-
77
- cmd = "mplayer #{options_str} \"#{item}\""
85
+
86
+ play_command = player item
87
+ item = "-" if item =~ /(rar|r\d{2})$/
88
+
89
+ cmd = "#{play_command} #{options_str} \"#{item}\""
78
90
  POpen4::popen4(cmd) do |stdout, stderr, stdin, pid|
79
91
  @pid = pid
80
92
  end
@@ -82,6 +94,11 @@ module Paradiso
82
94
 
83
95
  true
84
96
  end
97
+
98
+ def player file
99
+ return @options[:player] unless file =~ /(rar|r\d{2})$/
100
+ return "#{@options[:unrar]} p -inul #{file} | #{@options[:player]}"
101
+ end
85
102
  end
86
103
  end
87
104
 
@@ -11,18 +11,22 @@ module Paradiso
11
11
  include Enumerable
12
12
 
13
13
  class << self
14
- def create_from_file file
14
+ def create_from_file file, ignore_endings=[]
15
15
  items = []
16
16
 
17
17
  f = File.open(file, 'r').each_line do |line|
18
18
  items << line.sub(/[\r\n]+/, '')
19
19
  end
20
20
 
21
- new items, file
21
+ if items.empty?
22
+ raise ArgumentError, "no files in playlist #{file}"
23
+ end
24
+
25
+ new items, file, ignore_endings=[]
22
26
  end
23
27
  end
24
28
 
25
- def initialize files, path=nil
29
+ def initialize files, path=nil, ignore_endings=[]
26
30
  @files = []
27
31
  @path = path
28
32
  @current_idx = -1
@@ -30,9 +34,24 @@ module Paradiso
30
34
  files.each do |file|
31
35
  begin
32
36
  tmp = []
37
+ rars = []
33
38
 
34
39
  Find.find(file) do |f|
35
- tmp << File.expand_path(f) unless File.directory? f
40
+ next if File.directory? f
41
+ next if ignore_endings.include? f.split('.')[-1]
42
+
43
+ if f =~ /(rar|r\d{2})$/
44
+ rar = File.expand_path(f).dup
45
+ rar.gsub! /r\d{2}$/i, "rar"
46
+ rar.gsub! /part\d{2}/i, ""
47
+
48
+ unless rars.include? rar
49
+ rars << rar
50
+ tmp << File.expand_path(f)
51
+ end
52
+ else
53
+ tmp << File.expand_path(f)
54
+ end
36
55
  end
37
56
 
38
57
  @files += tmp.sort
@@ -55,7 +74,7 @@ module Paradiso
55
74
  end
56
75
 
57
76
  def create delete=false
58
- sp = delete ? start_point : 0
77
+ sp = delete ? @current_idx : 0
59
78
 
60
79
  File.open(@path, 'w') do |f|
61
80
  @files[sp..-1].each { |line| f.puts line }
@@ -68,24 +87,17 @@ module Paradiso
68
87
 
69
88
  def each
70
89
  @files.each_index do |idx|
71
- yield @files[idx]
72
90
  @current_idx = idx
91
+ yield @files[idx]
73
92
  end
74
93
  end
75
94
 
76
95
  def empty?
77
- start_point >= @files.size
96
+ @current_idx >= @files.size
78
97
  end
79
98
 
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
99
+ def started?
100
+ @current_idx > -1
89
101
  end
90
102
  end
91
103
  end
data/lib/paradiso.rb CHANGED
@@ -21,6 +21,10 @@ module Paradiso
21
21
  :amount => nil,
22
22
  :path => nil,
23
23
  :aspectratio => '16:9',
24
+ :player => 'mplayer',
25
+ :unrar => 'unrar',
26
+ :archive => false,
27
+ :ignore_endings => ['nfo', 'sfv', 'txt']
24
28
  }
25
29
 
26
30
  class << self
data/paradiso.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{paradiso}
8
- s.version = "0.3.1"
8
+ s.version = "0.4.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-10}
12
+ s.date = %q{2010-10-31}
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}
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 3
8
- - 1
9
- version: 0.3.1
7
+ - 4
8
+ - 0
9
+ version: 0.4.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Victor Bergoo
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-10 00:00:00 +02:00
17
+ date: 2010-10-31 00:00:00 +02:00
18
18
  default_executable: paradiso
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency