soundcloud9000 0.1.0

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.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +7 -0
  5. data/README.md +65 -0
  6. data/Rakefile +46 -0
  7. data/bin/soundcloud9000 +9 -0
  8. data/lib/soundcloud9000.rb +22 -0
  9. data/lib/soundcloud9000/application.rb +93 -0
  10. data/lib/soundcloud9000/client.rb +51 -0
  11. data/lib/soundcloud9000/controllers/controller.rb +19 -0
  12. data/lib/soundcloud9000/controllers/player_controller.rb +75 -0
  13. data/lib/soundcloud9000/controllers/track_controller.rb +90 -0
  14. data/lib/soundcloud9000/download_thread.rb +51 -0
  15. data/lib/soundcloud9000/events.rb +17 -0
  16. data/lib/soundcloud9000/models/collection.rb +42 -0
  17. data/lib/soundcloud9000/models/player.rb +138 -0
  18. data/lib/soundcloud9000/models/playlist.rb +22 -0
  19. data/lib/soundcloud9000/models/track.rb +56 -0
  20. data/lib/soundcloud9000/models/track_collection.rb +71 -0
  21. data/lib/soundcloud9000/models/user.rb +26 -0
  22. data/lib/soundcloud9000/time_helper.rb +23 -0
  23. data/lib/soundcloud9000/ui/canvas.rb +21 -0
  24. data/lib/soundcloud9000/ui/color.rb +46 -0
  25. data/lib/soundcloud9000/ui/input.rb +56 -0
  26. data/lib/soundcloud9000/ui/rect.rb +14 -0
  27. data/lib/soundcloud9000/ui/table.rb +132 -0
  28. data/lib/soundcloud9000/ui/view.rb +73 -0
  29. data/lib/soundcloud9000/views/player_view.rb +63 -0
  30. data/lib/soundcloud9000/views/splash.rb +69 -0
  31. data/lib/soundcloud9000/views/tracks_table.rb +14 -0
  32. data/soundcloud9000 +8 -0
  33. data/soundcloud9000.gemspec +27 -0
  34. data/spec/controllers/track_controller_spec.rb +59 -0
  35. data/spec/spec_helper.rb +2 -0
  36. metadata +165 -0
@@ -0,0 +1,14 @@
1
+ require_relative '../ui/table'
2
+
3
+ module Soundcloud9000
4
+ module Views
5
+ # this view is responsible for the bar that separates the player and track list
6
+ class TracksTable < UI::Table
7
+ def initialize(*args)
8
+ super
9
+ self.header = %w(Title User Length Plays Likes Comments)
10
+ self.keys = [:title, :username, :length, :plays, :likes, :comments]
11
+ end
12
+ end
13
+ end
14
+ end
data/soundcloud9000 ADDED
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+
3
+ ROOT_PATH=$(dirname $0)
4
+
5
+ export DYLD_LIBRARY_PATH=$ROOT_PATH/dyld
6
+ export RUBYLIB=$ROOT_PATH/lib
7
+
8
+ $ROOT_PATH/ruby $ROOT_PATH/bin/soundcloud9000
@@ -0,0 +1,27 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "soundcloud9000"
5
+ s.version = "0.1.0"
6
+ s.authors = ["Tobias Schmidt", "Matthias Georgi", "Sumanth Ratna"]
7
+ s.email = "sratna@sumanthratna.gq"
8
+ s.homepage = "http://www.github.com/sumanthratna/soundcloud9000"
9
+ s.summary = "SoundCloud without the stupid CSS files"
10
+ s.description = "The next generation SoundCloud client"
11
+ s.license = 'MIT'
12
+
13
+ s.bindir = 'bin'
14
+ s.files = `git ls-files`.split("\n")
15
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
16
+ s.require_paths = ["lib"]
17
+
18
+ s.add_dependency "json", "~> 1.8"
19
+ s.add_dependency "audite", "~> 0.4"
20
+ s.add_dependency "curses", "~> 1.0"
21
+
22
+ s.add_development_dependency "bundler", "~> 1.3"
23
+ s.add_development_dependency "rake", "~> 10.5"
24
+ s.add_development_dependency "mocha", "~> 1.1"
25
+
26
+ s.extra_rdoc_files = ["README.md"]
27
+ end
@@ -0,0 +1,59 @@
1
+ require_relative '../spec_helper'
2
+ require_relative '../../lib/soundcloud9000/controllers/track_controller'
3
+
4
+ module Soundcloud9000
5
+ module Controllers
6
+ describe TrackController do
7
+ let(:tracks) { mock }
8
+ let(:table) { mock }
9
+ let(:client) { mock }
10
+
11
+ subject { TrackController.new(table, client) }
12
+
13
+ before do
14
+ table.expects(:bind_to)
15
+
16
+ subject.bind_to(tracks)
17
+ end
18
+
19
+ it 'plays next track' do
20
+ table.expects(:down)
21
+ table.expects(:select)
22
+ table.expects(:current).returns(mock)
23
+ tracks.expects(:[]).returns(mock)
24
+
25
+ subject.next_track
26
+ end
27
+
28
+ it 'on key enter' do
29
+ table.expects(:select)
30
+ table.expects(:current).returns(mock)
31
+ tracks.expects(:[]).returns(mock)
32
+
33
+ subject.events.trigger(:key, :enter)
34
+ end
35
+
36
+ it 'on key up' do
37
+ table.expects(:up)
38
+
39
+ subject.events.trigger(:key, :up)
40
+ end
41
+
42
+ it 'on key down' do
43
+ table.expects(:down)
44
+ table.expects(:bottom?).returns(true)
45
+ tracks.expects(:load_more)
46
+
47
+ subject.events.trigger(:key, :down)
48
+ end
49
+
50
+ it 'on key u' do
51
+ UI::Input.expects(:getstr).returns(:permalink)
52
+ client.expects(:resolve).returns(:user)
53
+ tracks.expects(:user=)
54
+
55
+ subject.events.trigger(:key, :u)
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,2 @@
1
+ require 'minitest/autorun'
2
+ require 'mocha'
metadata ADDED
@@ -0,0 +1,165 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: soundcloud9000
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Tobias Schmidt
8
+ - Matthias Georgi
9
+ - Sumanth Ratna
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2019-04-29 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: json
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.8'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.8'
29
+ - !ruby/object:Gem::Dependency
30
+ name: audite
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '0.4'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '0.4'
43
+ - !ruby/object:Gem::Dependency
44
+ name: curses
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: bundler
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.3'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.3'
71
+ - !ruby/object:Gem::Dependency
72
+ name: rake
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '10.5'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '10.5'
85
+ - !ruby/object:Gem::Dependency
86
+ name: mocha
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '1.1'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '1.1'
99
+ description: The next generation SoundCloud client
100
+ email: sratna@sumanthratna.gq
101
+ executables:
102
+ - soundcloud9000
103
+ extensions: []
104
+ extra_rdoc_files:
105
+ - README.md
106
+ files:
107
+ - ".gitignore"
108
+ - Gemfile
109
+ - LICENSE
110
+ - README.md
111
+ - Rakefile
112
+ - bin/soundcloud9000
113
+ - lib/soundcloud9000.rb
114
+ - lib/soundcloud9000/application.rb
115
+ - lib/soundcloud9000/client.rb
116
+ - lib/soundcloud9000/controllers/controller.rb
117
+ - lib/soundcloud9000/controllers/player_controller.rb
118
+ - lib/soundcloud9000/controllers/track_controller.rb
119
+ - lib/soundcloud9000/download_thread.rb
120
+ - lib/soundcloud9000/events.rb
121
+ - lib/soundcloud9000/models/collection.rb
122
+ - lib/soundcloud9000/models/player.rb
123
+ - lib/soundcloud9000/models/playlist.rb
124
+ - lib/soundcloud9000/models/track.rb
125
+ - lib/soundcloud9000/models/track_collection.rb
126
+ - lib/soundcloud9000/models/user.rb
127
+ - lib/soundcloud9000/time_helper.rb
128
+ - lib/soundcloud9000/ui/canvas.rb
129
+ - lib/soundcloud9000/ui/color.rb
130
+ - lib/soundcloud9000/ui/input.rb
131
+ - lib/soundcloud9000/ui/rect.rb
132
+ - lib/soundcloud9000/ui/table.rb
133
+ - lib/soundcloud9000/ui/view.rb
134
+ - lib/soundcloud9000/views/player_view.rb
135
+ - lib/soundcloud9000/views/splash.rb
136
+ - lib/soundcloud9000/views/tracks_table.rb
137
+ - soundcloud9000
138
+ - soundcloud9000.gemspec
139
+ - spec/controllers/track_controller_spec.rb
140
+ - spec/spec_helper.rb
141
+ homepage: http://www.github.com/sumanthratna/soundcloud9000
142
+ licenses:
143
+ - MIT
144
+ metadata: {}
145
+ post_install_message:
146
+ rdoc_options: []
147
+ require_paths:
148
+ - lib
149
+ required_ruby_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ required_rubygems_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ requirements: []
160
+ rubyforge_project:
161
+ rubygems_version: 2.5.2.3
162
+ signing_key:
163
+ specification_version: 4
164
+ summary: SoundCloud without the stupid CSS files
165
+ test_files: []