ektoplayer 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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