ektoplayer 0.1.5 → 0.1.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d45cf3f25e3f52e0d259b0396903d2bee9ae811
4
- data.tar.gz: cee36a784279f4b0698adadfa8fb99df16b979be
3
+ metadata.gz: 2f582176b442c800e228430df528410b4da17417
4
+ data.tar.gz: 79c3b9f12acb319956f5d47aa98ca00795ed73ca
5
5
  SHA512:
6
- metadata.gz: 82df89a2a491c4171a7f91f0d46d42e630d1ab1f942785a02ae570d13ecd9ac6f993eddfe720555c0b8bb256810c4d43a96bd2a6da5e24721b5123209e454bab
7
- data.tar.gz: a553baadb74b75f7053a7dca15bb2305887482ff9596d04fb70acc68b4b22415655480d70a2554da70995c4caeafb0ed0cde08f19acc58093c54af627f7d933c
6
+ metadata.gz: 1772fa75068b45cb11c0ae4dad2e060459eab414f05a93adf774ccb2451b1918c11a915c0d367369006dd66d9a2cf054ff9ac5e83463994ab7c0c9675e3816dd
7
+ data.tar.gz: 06e9ac4671e584d4a647e3b88939c4154fa90719e05a6e0535728c535e760430430c44463aa0c4c93ffe2d778b2834ac3b455a388a2c03ee6af9b202282c4448
data/README.md CHANGED
@@ -18,9 +18,10 @@ It allows you to
18
18
 
19
19
  ## Screenshots
20
20
 
21
- ![Screenshot 2017-03-18](http://pixelbanane.de/yafu/1384751165/ekto1.gif)
22
- ![Screenshot 2017-03-18](http://pixelbanane.de/yafu/3868182865/ekto2.gif)
23
- ![Screenshot 2017-03-18](http://pixelbanane.de/yafu/2446075869/ekto3.gif)
21
+ ![Screenshot 2017-03-20](http://pixelbanane.de/yafu/454463454/ekto1.gif)
22
+ ![Screenshot 2017-03-20](http://pixelbanane.de/yafu/1213960318/ekto2.gif)
23
+ ![Screenshot 2017-03-20](http://pixelbanane.de/yafu/1573688123/ekto3.gif)
24
+ ![Screenshot 2017-03-20](http://pixelbanane.de/yafu/3388136564/ekto4.gif)
24
25
 
25
26
  ## Requirements
26
27
 
@@ -10,7 +10,7 @@ require 'date'
10
10
 
11
11
  module Ektoplayer
12
12
  class Application
13
- VERSION = '0.1.5'.freeze
13
+ VERSION = '0.1.6'.freeze
14
14
  GITHUB_URL = 'https://github.com/braph/ektoplayer'.freeze
15
15
  EKTOPLAZM_URL = 'http://www.ektoplazm.com'.freeze
16
16
 
@@ -153,7 +153,7 @@ module Ektoplayer
153
153
  end
154
154
 
155
155
  if (n = Config[:playlist_load_newest]) > 0
156
- r = client.database.select(order_by: 'date', limit: n)
156
+ r = client.database.select(order_by: 'date desc,album,number', limit: n)
157
157
  playlist.add(*r)
158
158
  end
159
159
 
@@ -75,12 +75,12 @@ module Ektoplayer
75
75
  :'playlist.show' => [?1 ],
76
76
  :'browser.show' => [?2 ],
77
77
  :'info.show' => [?3 ],
78
- :'help.show' => [?4 ],
78
+ :'help.show' => [?4, Curses::KEY_F1 ],
79
79
 
80
- :'playinginfo.toggle' => [ Curses::KEY_F2 ],
81
- :'progressbar.toggle' => [ Curses::KEY_F3 ],
82
- :'tabbar.toggle' => [ Curses::KEY_F4 ],
83
- :'volumemeter.toggle' => [ Curses::KEY_F5 ],
80
+ :'playinginfo.toggle' => [?!, Curses::KEY_F2 ],
81
+ :'progressbar.toggle' => [?%, Curses::KEY_F3 ],
82
+ :'tabbar.toggle' => [?=, Curses::KEY_F4 ],
83
+ :'volumemeter.toggle' => [?~, Curses::KEY_F5 ],
84
84
 
85
85
  :'player.forward' => [?f, Curses::KEY_RIGHT ],
86
86
  :'player.backward' => [?b, Curses::KEY_LEFT ],
@@ -90,8 +90,8 @@ module Ektoplayer
90
90
  :'playlist.play_next' => [?> ],
91
91
  :'playlist.play_prev' => [?< ],
92
92
 
93
- :'tabs.next' => [?l ],
94
- :'tabs.prev' => [?h ],
93
+ :'tabs.next' => [?l, ?}, 9 ],
94
+ :'tabs.prev' => [?h, ?{, 353 ],
95
95
 
96
96
  :quit => [?q ],
97
97
  :refresh => ['^l' ],
@@ -134,7 +134,7 @@ module Ektoplayer
134
134
  :'browser.search_down' => [?/ ],
135
135
  # browser
136
136
  :'browser.add_to_playlist' => [' ', ?a ],
137
- :'browser.enter' => [?E, Curses::KEY_ENTER ],
137
+ :'browser.enter' => [ Curses::KEY_ENTER ],
138
138
  :'browser.back' => [?B, Curses::KEY_BACKSPACE ]},
139
139
  help: {
140
140
  :'help.top' => [?g, Curses::KEY_HOME ],
@@ -1,6 +1,7 @@
1
1
  #!/bin/ruby
2
2
 
3
3
  require 'nokogiri'
4
+ require 'date'
4
5
  require 'base64'
5
6
  require 'scanf'
6
7
  require 'open-uri'
@@ -50,7 +51,7 @@ module Ektoplayer
50
51
 
51
52
  doc.xpath('//div[starts-with(@id, "post-")]').each do |post|
52
53
  album = { tracks: [] }
53
- album[:date] = post.at_css('.d').text rescue nil
54
+ album[:date] = Date.parse(post.at_css('.d').text).iso8601 rescue nil
54
55
  album[:category] = post.at_css('.c a').text rescue nil
55
56
 
56
57
  album[:styles] = []
@@ -50,19 +50,19 @@ module Ektoplayer
50
50
  CONFIG_DIR = File.join(Dir.home, '.config', 'ektoplayer').freeze
51
51
  CONFIG_FILE = File.join(CONFIG_DIR, 'ektoplayer.rc').freeze
52
52
 
53
- DEFAULT_PLAYLIST_FORMAT = (
54
- '<number size="3" fg="magenta" />' +
55
- '<artist rel="25" fg="blue" />' +
56
- '<album rel="30" fg="red" />' +
57
- '<title rel="33" fg="yellow" />' +
58
- '<styles rel="20" fg="cyan" />' +
59
- '<bpm size="4" fg="green" justify="right" />').freeze
53
+ DEFAULT_PLAYLIST_FORMAT = %{
54
+ <number size="3" fg="magenta" />
55
+ <artist rel="25" fg="blue" />
56
+ <album rel="30" fg="red" />
57
+ <title rel="33" fg="yellow" />
58
+ <styles rel="20" fg="cyan" />
59
+ <bpm size="4" fg="green" justify="right" />}.squeeze(' ').freeze
60
60
 
61
61
  DEFAULT_PLAYINGINFO_FORMAT1 =
62
62
  '<text fg="black">&lt;&lt; </text><title bold="on" fg="yellow" /><text fg="black"> &gt;&gt;</text>'.freeze
63
63
 
64
64
  DEFAULT_PLAYINGINFO_FORMAT2 =
65
- '<artist bold="on" fg="blue" /><text> - </text><album bold="on" fg="red" /><text> (</text><date fg="cyan" /><text>)</text>'.freeze
65
+ '<artist bold="on" fg="blue" /><text> - </text><album bold="on" fg="red" /><text> (</text><year fg="cyan" /><text>)</text>'.freeze
66
66
 
67
67
  def register(key, description, default, method=nil)
68
68
  # parameter `description` is used by tools/mkconfig.rb, but not here
@@ -118,7 +118,7 @@ module Ektoplayer
118
118
 
119
119
  reg :playlist_load_newest,
120
120
  %{How many tracks from database should be added to
121
- the playlist on application start.}, 100
121
+ the playlist on application start.}, 300
122
122
 
123
123
  reg :use_cache,
124
124
  %{Enable/disable local mp3 cache.
@@ -26,15 +26,17 @@ module Ektoplayer
26
26
  end
27
27
 
28
28
  # TODO: mouse?
29
- view.mouse.on(65536) do view.scroll_up(3) end
30
- view.mouse.on(2097152) do view.scroll_down(3) end
29
+ view.mouse.on(65536) do view.up(5) end
30
+ view.mouse.on(2097152) do view.down(5) end
31
31
 
32
- view.mouse.on(Curses::BUTTON1_DOUBLE_CLICKED) do |mevent|
33
- view.select_from_cursorpos(mevent.y)
34
- view_operations.send(:'browser.enter')
32
+ [Curses::BUTTON1_DOUBLE_CLICKED, Curses::BUTTON3_CLICKED].each do |btn|
33
+ view.mouse.on(btn) do |mevent|
34
+ view.select_from_cursorpos(mevent.y)
35
+ view_operations.send(:'browser.enter')
36
+ end
35
37
  end
36
38
 
37
- [Curses::BUTTON1_CLICKED, Curses::BUTTON2_CLICKED, Curses::BUTTON3_CLICKED].
39
+ [Curses::BUTTON1_CLICKED, Curses::BUTTON2_CLICKED].
38
40
  each do |button|
39
41
  view.mouse.on(button) do |mevent|
40
42
  view.select_from_cursorpos(mevent.y)
@@ -40,19 +40,21 @@ module Ektoplayer
40
40
  end
41
41
 
42
42
  # TODO: mouse?
43
- view.mouse.on(65536) do view.scroll_up(3) end
44
- view.mouse.on(2097152) do view.scroll_down(3) end
43
+ view.mouse.on(65536) do view.up(5) end
44
+ view.mouse.on(2097152) do view.down(5) end
45
45
 
46
- [Curses::BUTTON1_CLICKED, Curses::BUTTON2_CLICKED, Curses::BUTTON3_CLICKED].
46
+ [Curses::BUTTON1_CLICKED, Curses::BUTTON2_CLICKED].
47
47
  each do |button|
48
48
  view.mouse.on(button) do |mevent|
49
49
  view.select_from_cursorpos(mevent.y)
50
50
  end
51
51
  end
52
52
 
53
- view.mouse.on(Curses::BUTTON1_DOUBLE_CLICKED) do |mevent|
54
- view.select_from_cursorpos(mevent.y)
55
- view_operations.send('playlist.play')
53
+ [Curses::BUTTON1_DOUBLE_CLICKED, Curses::BUTTON3_CLICKED].each do |btn|
54
+ view.mouse.on(btn) do |mevent|
55
+ view.select_from_cursorpos(mevent.y)
56
+ view_operations.send('playlist.play')
57
+ end
56
58
  end
57
59
  end
58
60
  end
@@ -37,6 +37,10 @@ module Ektoplayer
37
37
  a.votes AS votes,
38
38
  a.download_count AS download_count,
39
39
 
40
+ strftime('%%Y', date) AS year,
41
+ strftime('%%m', date) AS month,
42
+ strftime('%%d', date) AS day,
43
+
40
44
  a_s.style AS style,
41
45
 
42
46
  (
@@ -6,12 +6,13 @@ module Ektoplayer
6
6
  PARENT_DIRECTORY = '..'.freeze
7
7
 
8
8
  PATHS = {
9
- style: [:style ].freeze,
10
9
  artist: [:artist ].freeze,
11
10
  album: [:album ].freeze,
11
+ style: [:style ].freeze,
12
+ year: [:year ].freeze,
13
+ title: [].freeze,
12
14
  released_by: [:released_by].freeze,
13
- posted_by: [:posted_by ].freeze,
14
- tracks: [].freeze
15
+ posted_by: [:posted_by ].freeze
15
16
  }.freeze
16
17
 
17
18
  def initialize(client)
@@ -119,7 +120,9 @@ module Ektoplayer
119
120
  end
120
121
 
121
122
  def tracks(index)
122
- @database.select()
123
+ @database.select(
124
+ order_by: CONTENTS[index].to_s + ",album,year,number".sub(",#{CONTENTS[index]}", '')
125
+ )
123
126
  end
124
127
  end
125
128
  end
@@ -104,8 +104,8 @@ module UI
104
104
  def bottom; self.selected=(index_last) end
105
105
  def page_up; self.scroll_up(size.height) end
106
106
  def page_down; self.scroll_down(size.height) end
107
- def up; self.selected=(selected - 1) end
108
- def down; self.selected=(selected + 1) end
107
+ def up(n=1) self.selected=(selected - n) end
108
+ def down(n=1) self.selected=(selected + n) end
109
109
  def center; self.force_cursorpos(@size.height / 2) end
110
110
 
111
111
  def list=(list)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ektoplayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Abendroth