rumu 0.3.0 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/rumu +33 -28
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d06d25705c6b4da13ff00b1825e53739188fd5e2412c3135d0ce4a6586d4a7cb
|
4
|
+
data.tar.gz: 31c076843b5894506d1e706277309933ed13e2e70f9c9170225f5ddec58269ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fdcda38fa11055f5edea07c3bb83dad0a518ba6c97add5f281413b650451ed84c73e1354ed48248ab0d6a2837649a16aa94892b0a7b80d4da342a4ec183a8cc2
|
7
|
+
data.tar.gz: 6345879a1a65267e661cd755d1241d40c1f8ef297a6e8505ec675d14847cb3ab72ac761c1cb232487225bf2500f8ccfd93555b60fe0c11b6cdea45cf8761c6ca
|
data/bin/rumu
CHANGED
@@ -5,22 +5,17 @@ require 'io/console'
|
|
5
5
|
require 'pathname'
|
6
6
|
|
7
7
|
pkg='rumu'
|
8
|
-
ver='0.3'
|
8
|
+
ver='0.3.5'
|
9
9
|
pkgd="#{Dir.home}/.config/#{pkg}"
|
10
10
|
|
11
|
-
word=4
|
12
|
-
rate=44100
|
13
|
-
chan=2
|
14
|
-
cycle=0
|
15
|
-
|
16
|
-
ff_exe="ffmpeg -hide_banner"
|
11
|
+
chan,rate,word=2,44100,4
|
17
12
|
ff_fmt="-ac #{chan} -ar #{rate} -f f#{word*8}le"
|
18
|
-
ff_out="-f pulse default"
|
19
13
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
14
|
+
Dir.mkdir(pkgd) unless File.directory?(pkgd)
|
15
|
+
File.write(pkgd+"/dev","-f pulse default") unless File.file?("#{pkgd}/dev")
|
16
|
+
ff_out=File.read(pkgd+"/dev")
|
17
|
+
|
18
|
+
list,list_i,cycle,mode,ssoff,help=[],0,0,:load,'',''
|
24
19
|
if ARGV.length==0
|
25
20
|
if File.file?("#{pkgd}/list")
|
26
21
|
list=File.read("#{pkgd}/list").split("\n")
|
@@ -39,10 +34,11 @@ else
|
|
39
34
|
list=ARGV.map{|x|Pathname(x).realpath.to_s}
|
40
35
|
end
|
41
36
|
prefix=/\A(.*).*(\n\1.*)*\Z/.match(list.join("\n"))[1]
|
37
|
+
puts prefix
|
42
38
|
|
43
39
|
ii,io,ie,it=nil,nil,nil,nil
|
44
|
-
oi,oo,oe,ot=Open3.popen3("
|
45
|
-
|
40
|
+
oi,oo,oe,ot=Open3.popen3("ffmpeg -loglevel -8 #{ff_fmt} -i - #{ff_out}")
|
41
|
+
oo.close
|
46
42
|
|
47
43
|
pt=Thread.new{
|
48
44
|
until :quit == mode
|
@@ -52,42 +48,51 @@ pt=Thread.new{
|
|
52
48
|
end
|
53
49
|
case mode
|
54
50
|
when :load #load new track
|
55
|
-
io.close unless !io or io.closed?
|
56
|
-
ii,io,ie,it = Open3.popen3 "
|
57
|
-
|
51
|
+
[io,ie].each{|x|x.close} unless !io or io.closed?
|
52
|
+
ii,io,ie,it = Open3.popen3 "ffmpeg -loglevel -8 -i #{Shellwords.escape(list[list_i])} #{ssoff} #{ff_fmt} -"
|
53
|
+
ii.close
|
58
54
|
cycle=0 unless ssoff.length > 0
|
59
|
-
puts
|
55
|
+
puts "#{' '*help.length}\r#{list[list_i][prefix.length..-1]}"
|
56
|
+
ssoff=''
|
57
|
+
help=''
|
60
58
|
mode=:play
|
61
59
|
when :play
|
62
60
|
oi.write(io.read(word*chan*rate))
|
63
61
|
cycle+=1
|
64
62
|
end
|
65
63
|
end
|
64
|
+
[oi,oe].each{|x|x.close}
|
66
65
|
}
|
67
66
|
|
68
67
|
until :quit == mode
|
69
|
-
print "\r#{
|
70
|
-
case IO.console.raw{|c|c.read_nonblock(1) rescue ''}
|
68
|
+
print "\r#{cycle/60}:#{"%02d"%(cycle%60)} > "
|
69
|
+
case ch=IO.console.raw{|c|c.read_nonblock(1) rescue ''}.downcase
|
71
70
|
when 'n'
|
72
71
|
list_i+=1
|
73
72
|
mode= list_i<list.count ? :load : :quit
|
73
|
+
when 'r'
|
74
|
+
mode=:load
|
74
75
|
when 'p'
|
75
76
|
if list_i>0
|
76
77
|
list_i-=1
|
77
78
|
mode=:load
|
78
79
|
end
|
80
|
+
when 's'
|
81
|
+
print "Seek to: "
|
82
|
+
ti=(ts=IO.console.readline.chomp).split(':')
|
83
|
+
ssoff="-ss #{ts}"
|
84
|
+
cycle=(ti[-1].to_f + ti[-2].to_f*60 + ti[-3].to_f*60*60).to_i
|
85
|
+
mode=:load
|
79
86
|
when 'q'
|
80
87
|
mode=:quit
|
81
|
-
|
88
|
+
File.write(pkgd+"/list",list.join("\n"))
|
89
|
+
File.write(pkgd+"/pos",list_i.to_s+"\n"+cycle.to_s)
|
90
|
+
when ''
|
82
91
|
sleep rand
|
92
|
+
else
|
93
|
+
print (help="#{ch} < #{list_i>0?"[P]rev ":""}[R]estart [S]eek [N]ext [Q]uit")
|
83
94
|
end
|
84
95
|
end
|
85
96
|
|
86
|
-
|
87
|
-
Dir.mkdir(pkgd) unless File.directory?(pkgd)
|
88
|
-
File.write(pkgd+"/list",list.join("\n"))
|
89
|
-
File.write(pkgd+"/pos",list_i.to_s+"\n"+cycle.to_s)
|
90
|
-
end
|
91
|
-
|
92
|
-
puts " ] #{pkg} ✝ v#{ver} [ "
|
97
|
+
puts "\r ] #{pkg} ✝ v#{ver} [ "
|
93
98
|
pt.join
|
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rumu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin Cook
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-03-
|
11
|
+
date: 2021-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
14
|
-
leveraging command-line ffmpeg and pipes. After a quit, it will return
|
15
|
-
it left off when run next.
|
13
|
+
description: rumu is an aggressively minimized audio player that plays a playlist
|
14
|
+
gaplessly leveraging command-line ffmpeg and pipes. After a quit, it will return
|
15
|
+
to where it left off when run next.
|
16
16
|
email: root@baryon.it
|
17
17
|
executables:
|
18
18
|
- rumu
|