qtunes 0.0.3 → 0.0.4

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/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