qtunes 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/bin/qtunes CHANGED
@@ -10,6 +10,7 @@ class QtunesCLI < Thor
10
10
  map 's' => :server
11
11
  desc 'server', 'Serve Qtunes frontend'
12
12
  def server
13
+ require 'qtunes/server'
13
14
  puts "== Starting Qtunes server"
14
15
  Qtunes::Server.run!
15
16
  end
data/config.ru CHANGED
@@ -1,4 +1,4 @@
1
1
  # Use this config to develop the webinterface with shotgun (which gives you reload-per-request):
2
2
  # $> bundle exec shotgun config.ru
3
- require './lib/qtunes'
3
+ require './lib/qtunes/server'
4
4
  run Qtunes::Server
data/lib/qtunes.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require "qtunes/player"
2
2
  require "qtunes/version"
3
- require "qtunes/server"
4
3
 
5
4
  module Qtunes
6
5
  end
data/lib/qtunes/server.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'qtunes'
1
2
  require 'sinatra/base'
2
3
  require 'rack-flash'
3
4
  require 'digest/sha2'
@@ -15,8 +16,11 @@ module Qtunes
15
16
  set :public, "#{dir}/server/public"
16
17
  set :static, true
17
18
 
19
+ before do
20
+ @current = self.class.song_to_hash(player.file)
21
+ end
22
+
18
23
  get '/' do
19
- @song = player.file
20
24
  @songs = queue.values
21
25
 
22
26
  erb :songs
@@ -24,7 +28,6 @@ module Qtunes
24
28
 
25
29
  get '/library' do
26
30
  @page = params[:page] ? params[:page].to_i : 1
27
- @song = player.file
28
31
  @songs = library.values.extend(Qtunes::Paginatable).page(@page)
29
32
 
30
33
  erb :songs
@@ -86,18 +89,23 @@ module Qtunes
86
89
  protected
87
90
  def self.songs_to_hash
88
91
  yield.inject({}) do |res,path|
89
- begin
90
- song = AudioInfo.open(path).to_h
91
- rescue AudioInfoError
92
- next res
93
- end
94
- res[song_id(path)] = song.merge('path' => path, 'id' => song_id(path))
92
+ res[song_id(path)] = song_to_hash(path)
95
93
  res
96
94
  end
97
95
  end
98
96
 
99
- def self.song_id(file)
100
- Digest::SHA256.hexdigest(file)[0,10]
97
+ def self.song_id(path)
98
+ Digest::SHA256.hexdigest(path)[0,10]
99
+ end
100
+
101
+ def self.song_to_hash(path)
102
+ result = {}
103
+ begin
104
+ result.merge!(AudioInfo.open(path).to_h)
105
+ rescue AudioInfoError
106
+ end
107
+ result.merge!('path' => path, 'id' => song_id(path))
108
+ result
101
109
  end
102
110
 
103
111
  def debug(object)
@@ -70,6 +70,10 @@ a:hover{
70
70
  font-size: 1.25em;
71
71
  font-weight: bold;
72
72
  }
73
+ .song.current, .song.current * {
74
+ background-color: #485460;
75
+ color: #FFF !important;
76
+ }
73
77
  .song a:hover{
74
78
  color: #000 !important;
75
79
  }
@@ -0,0 +1,15 @@
1
+ <div class="song <%= 'current' if defined?(current) %>">
2
+ <% if not defined?(current) %>
3
+ <span class="controls">
4
+ <% if queue[song['id']] %>
5
+ <a href="/remove/<%= song['id'] %>" title="remove from queue">-</a>
6
+ <% else %>
7
+ <a href="/add/<%= song['id'] %>" title="add to queue">+</a>
8
+ <% end %>
9
+ </span>
10
+ <% end %>
11
+
12
+ <span class="artist"><%= song['artist'] && !song['artist'].empty? ? song['artist'] : song['path'] %></span>
13
+ <span class="title"><%= song['title'] %></span>
14
+ <span class="album"><%= song['album'] %></span>
15
+ </div>
@@ -1,29 +1,17 @@
1
- <h3>Now playing: '<%= @song %>'</h3>
1
+ <%= erb :_song, {}, {:song => @current, :current => true} %>
2
2
 
3
3
  <% if @page %>
4
4
  <a href="?page=<%= @page - 1 %>">Previous</a>
5
5
  <a href="?page=<%= @page + 1 %>">Next</a>
6
6
  <% end %>
7
7
 
8
- <% @songs.each do |song| %>
9
- <div class="song">
10
- <span class="controls">
11
- <% if queue[song['id']] %>
12
- <a href="/remove/<%= song['id'] %>" title="remove from queue">-</a>
13
- <% else %>
14
- <a href="/add/<%= song['id'] %>" title="add to queue">+</a>
15
- <% end %>
16
- </span>
17
-
18
- <span class="artist"><%= song['artist'] %></span>
19
- <span class="title"><%= song['title'] %></span>
20
- <span class="album"><%= song['album'] %></span>
21
- </div>
8
+ <% @songs.each_with_index do |song,ix| %>
9
+ <%= erb :_song, {}, {:song => song} %>
22
10
  <% end %>
23
11
 
24
12
  <% if @songs.empty? %>
25
13
  <div class="content">
26
- No songs found!
14
+ No more songs found!
27
15
  </div>
28
16
  <% end %>
29
17
 
@@ -1,3 +1,3 @@
1
1
  module Qtunes
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qtunes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: shotgun
17
- requirement: &18146680 !ruby/object:Gem::Requirement
17
+ requirement: &17686820 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *18146680
25
+ version_requirements: *17686820
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: sinatra
28
- requirement: &18146180 !ruby/object:Gem::Requirement
28
+ requirement: &17686320 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.2.6
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *18146180
36
+ version_requirements: *17686320
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rack-flash
39
- requirement: &18145680 !ruby/object:Gem::Requirement
39
+ requirement: &17685820 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 0.1.2
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *18145680
47
+ version_requirements: *17685820
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: thor
50
- requirement: &18145220 !ruby/object:Gem::Requirement
50
+ requirement: &17685360 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 0.14.6
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *18145220
58
+ version_requirements: *17685360
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: cocaine
61
- requirement: &18144760 !ruby/object:Gem::Requirement
61
+ requirement: &17684900 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 0.2.0
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *18144760
69
+ version_requirements: *17684900
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: ruby-audioinfo
72
- requirement: &18144300 !ruby/object:Gem::Requirement
72
+ requirement: &17684440 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,7 +77,7 @@ dependencies:
77
77
  version: 0.1.7
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *18144300
80
+ version_requirements: *17684440
81
81
  description: add songs to queue, let cmus eat it
82
82
  email:
83
83
  - gert@thinkcreate.nl
@@ -97,6 +97,7 @@ files:
97
97
  - lib/qtunes/player.rb
98
98
  - lib/qtunes/server.rb
99
99
  - lib/qtunes/server/public/base.css
100
+ - lib/qtunes/server/views/_song.erb
100
101
  - lib/qtunes/server/views/layout.erb
101
102
  - lib/qtunes/server/views/songs.erb
102
103
  - lib/qtunes/version.rb