nehm 1.0.5 → 1.0.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 +4 -4
- data/CHANGELOG.md +35 -0
- data/lib/nehm.rb +1 -0
- data/lib/nehm/artwork.rb +1 -0
- data/lib/nehm/client.rb +2 -1
- data/lib/nehm/config.rb +2 -0
- data/lib/nehm/configure.rb +1 -0
- data/lib/nehm/help.rb +17 -15
- data/lib/nehm/track.rb +10 -9
- data/lib/nehm/track_utils.rb +7 -0
- data/lib/nehm/user.rb +11 -0
- data/lib/nehm/user_control.rb +23 -22
- data/lib/nehm/version.rb +1 -1
- data/nehm.gemspec +2 -2
- metadata +6 -5
- data/.travis.yml +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbd0359788a4269a83d34e129ecac922ca5d323f
|
4
|
+
data.tar.gz: 12081c404cc2274639d6b9a21e46b2692bcc9c20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33f2c6ea8f259d2e302a25e46d439e5a7b21491642b812fca6ff7cc241bfaa2d58ac590ad06ee762b27b63e8efb0b484bdb48e06e242ce87196e6f09a8f7da55
|
7
|
+
data.tar.gz: 2a2884f2ad85b63331989c25e045d47f2de03b8400173e0ef871c7bc0168d2b8fdce98496fab98abd7f0a456eef34c4420d169d78879a34bcef11338046b8e6f
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# nehm Change Log
|
2
|
+
|
3
|
+
## 1.0.5
|
4
|
+
|
5
|
+
* Fix bundler development dependency
|
6
|
+
|
7
|
+
## 1.0.4
|
8
|
+
|
9
|
+
* Edit summary in gemspec
|
10
|
+
|
11
|
+
## 1.0.3
|
12
|
+
|
13
|
+
* Change description of nehm
|
14
|
+
|
15
|
+
## 1.0.2
|
16
|
+
|
17
|
+
* Edit path to nehm version in Rakefile
|
18
|
+
|
19
|
+
* Fix: nehm fails, then setting tags to track
|
20
|
+
|
21
|
+
## 1.0.1
|
22
|
+
|
23
|
+
* Rakefile:
|
24
|
+
|
25
|
+
* Add push (push to rubygems.org) task
|
26
|
+
|
27
|
+
* Modify tasks
|
28
|
+
|
29
|
+
* Edit required Ruby version
|
30
|
+
|
31
|
+
* Fix: if you invalid argument in 'nehm get', then app fails
|
32
|
+
|
33
|
+
## 1.0
|
34
|
+
|
35
|
+
* First release!
|
data/lib/nehm.rb
CHANGED
data/lib/nehm/artwork.rb
CHANGED
data/lib/nehm/client.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'soundcloud'
|
2
2
|
require_relative 'config.rb'
|
3
3
|
|
4
|
+
# Just a Soundcloud API client.
|
4
5
|
module Client
|
5
|
-
# SSL
|
6
|
+
# Set a SSL certificate file path for SC API
|
6
7
|
ENV['SSL_CERT_FILE'] = File.join(__dir__, 'cacert.pem')
|
7
8
|
|
8
9
|
CLIENT_ID = '11a37feb6ccc034d5975f3f803928a32'
|
data/lib/nehm/config.rb
CHANGED
data/lib/nehm/configure.rb
CHANGED
data/lib/nehm/help.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# Help module responds to 'nehm help ...' command
|
1
2
|
module Help
|
2
3
|
|
3
4
|
# Public
|
@@ -23,23 +24,15 @@ module Help
|
|
23
24
|
|
24
25
|
module_function
|
25
26
|
|
26
|
-
def
|
27
|
-
puts '
|
28
|
-
puts 'Example: for profile url ' + Paint['soundcloud.com/qwerty', :magenta] + ' permalink is ' + Paint['qwerty', :magenta]
|
29
|
-
end
|
30
|
-
|
31
|
-
def get
|
32
|
-
puts Paint['Input: ', :yellow] + 'nehm get [options]'
|
27
|
+
def configure
|
28
|
+
puts Paint['Input: ', :yellow] + 'nehm configure'
|
33
29
|
|
34
30
|
puts Paint['Available options:', :yellow]
|
35
|
-
puts '
|
36
|
-
puts ' ' + Paint['[number] tracks', :green] + ' - Downloading, setting tags and adding to your iTunes library last [number] posts from your profile'
|
37
|
-
puts ' ' + Paint['like', :green] + ' - Downloading, setting tags and adding to your iTunes library your last like'
|
38
|
-
puts ' ' + Paint['[number] likes', :green] + ' - Downloading, setting tags and adding to your iTunes library your last [number] likes'
|
31
|
+
puts ' No options'
|
39
32
|
end
|
40
33
|
|
41
34
|
def dl
|
42
|
-
puts Paint['Input: ', :yellow] + 'nehm dl
|
35
|
+
puts Paint['Input: ', :yellow] + 'nehm dl OPTIONS'
|
43
36
|
|
44
37
|
puts Paint['Available options:', :yellow]
|
45
38
|
puts ' ' + Paint['track', :green] + ' - Downloading and setting tags last post(track or repost) from your profile'
|
@@ -48,10 +41,19 @@ module Help
|
|
48
41
|
puts ' ' + Paint['[number] likes', :green] + ' - Downloading and setting tags your last [number] likes'
|
49
42
|
end
|
50
43
|
|
51
|
-
def
|
52
|
-
puts Paint['Input: ', :yellow] + 'nehm
|
44
|
+
def get
|
45
|
+
puts Paint['Input: ', :yellow] + 'nehm get OPTIONS'
|
53
46
|
|
54
47
|
puts Paint['Available options:', :yellow]
|
55
|
-
puts '
|
48
|
+
puts ' ' + Paint['track', :green] + ' - Downloading, setting tags and adding to your iTunes library last post(track or repost) from your profile'
|
49
|
+
puts ' ' + Paint['[number] tracks', :green] + ' - Downloading, setting tags and adding to your iTunes library last [number] posts from your profile'
|
50
|
+
puts ' ' + Paint['like', :green] + ' - Downloading, setting tags and adding to your iTunes library your last like'
|
51
|
+
puts ' ' + Paint['[number] likes', :green] + ' - Downloading, setting tags and adding to your iTunes library your last [number] likes'
|
56
52
|
end
|
53
|
+
|
54
|
+
def permalink
|
55
|
+
puts 'Permalink is the last word in your profile url'
|
56
|
+
puts 'Example: for profile url ' + Paint['soundcloud.com/qwerty', :magenta] + ' permalink is ' + Paint['qwerty', :magenta]
|
57
|
+
end
|
58
|
+
|
57
59
|
end
|
data/lib/nehm/track.rb
CHANGED
@@ -18,15 +18,6 @@ class Track
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def title
|
22
|
-
if @hash['title'].include?('-')
|
23
|
-
title = @hash['title'].split('-')
|
24
|
-
title[1].lstrip
|
25
|
-
else
|
26
|
-
@hash['title']
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
21
|
def artwork
|
31
22
|
Artwork.new(self)
|
32
23
|
end
|
@@ -46,4 +37,14 @@ class Track
|
|
46
37
|
def id
|
47
38
|
@hash['id'].to_s
|
48
39
|
end
|
40
|
+
|
41
|
+
def title
|
42
|
+
if @hash['title'].include?('-')
|
43
|
+
title = @hash['title'].split('-')
|
44
|
+
title[1].lstrip
|
45
|
+
else
|
46
|
+
@hash['title']
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
49
50
|
end
|
data/lib/nehm/track_utils.rb
CHANGED
@@ -7,7 +7,9 @@ require_relative 'user.rb'
|
|
7
7
|
require_relative 'track.rb'
|
8
8
|
require_relative 'os.rb'
|
9
9
|
|
10
|
+
# TrackUtils module responds to 'nehm get/dl ...' commands
|
10
11
|
module TrackUtils
|
12
|
+
|
11
13
|
# Public
|
12
14
|
|
13
15
|
def self.get(dl, args)
|
@@ -16,16 +18,21 @@ module TrackUtils
|
|
16
18
|
case args.last
|
17
19
|
when 'like'
|
18
20
|
User.new.likes(1)
|
21
|
+
|
19
22
|
when 'post'
|
20
23
|
User.new.posts(1)
|
24
|
+
|
21
25
|
when 'likes'
|
22
26
|
count = args[-2].to_i
|
23
27
|
User.new.likes(count)
|
28
|
+
|
24
29
|
when 'posts'
|
25
30
|
count = args[-2].to_i
|
26
31
|
User.new.posts(count)
|
32
|
+
|
27
33
|
when %r{https:\/\/soundcloud.com\/}
|
28
34
|
track_from_url(args.last)
|
35
|
+
|
29
36
|
else
|
30
37
|
puts Paint['Invalid argument(s)', :red]
|
31
38
|
puts "Input #{Paint['nehm help', :yellow]} for help"
|
data/lib/nehm/user.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'faraday'
|
3
|
+
require 'paint'
|
3
4
|
require_relative 'client.rb'
|
4
5
|
require_relative 'config.rb'
|
5
6
|
require_relative 'user_control.rb'
|
@@ -17,12 +18,22 @@ class User
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def likes(count)
|
21
|
+
unless count.class == Fixnum
|
22
|
+
puts Paint['Invalid number of likes!', :red]
|
23
|
+
exit
|
24
|
+
end
|
25
|
+
|
20
26
|
client = Client.new
|
21
27
|
likes = client.get("/users/#{@id}/favorites?limit=#{count}")
|
22
28
|
likes.map { |like| Track.new(like) }
|
23
29
|
end
|
24
30
|
|
25
31
|
def posts(count)
|
32
|
+
unless count.class == Fixnum
|
33
|
+
puts Paint['Invalid number of posts!', :red]
|
34
|
+
exit
|
35
|
+
end
|
36
|
+
|
26
37
|
conn = Faraday.new(url: 'https://api-v2.soundcloud.com/') do |faraday|
|
27
38
|
faraday.request :url_encoded # form-encode POST params
|
28
39
|
faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
|
data/lib/nehm/user_control.rb
CHANGED
@@ -4,38 +4,18 @@ require_relative 'config.rb'
|
|
4
4
|
require_relative 'client.rb'
|
5
5
|
|
6
6
|
module UserControl
|
7
|
-
def self.logged_in?
|
8
|
-
Config.key?(:default_id)
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.log_in
|
12
|
-
loop do
|
13
|
-
permalink = HighLine.new.ask('Please enter your permalink (last word in your profile url): ')
|
14
|
-
client = Client.new
|
15
|
-
url = "https://soundcloud.com/#{permalink}"
|
16
|
-
if UserControl.exist?(url)
|
17
|
-
user = client.get('/resolve', url: url)
|
18
|
-
Config[:default_id] = user.id
|
19
|
-
Config[:permalink] = permalink
|
20
|
-
puts Paint['Successfully logged in!', :green]
|
21
|
-
break
|
22
|
-
else
|
23
|
-
puts Paint['Invalid permalink. Please enter correct permalink', :red]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
7
|
|
28
8
|
def self.default_id
|
29
9
|
if UserControl.logged_in?
|
30
10
|
Config[:default_id]
|
31
11
|
else
|
32
|
-
puts "You didn't logged in"
|
12
|
+
puts Paint["You didn't logged in", :red]
|
33
13
|
puts "Input #{Paint['nehm configure', :yellow]} to login"
|
34
14
|
exit
|
35
15
|
end
|
36
16
|
end
|
37
17
|
|
38
|
-
def self.
|
18
|
+
def self.user_exist?(url)
|
39
19
|
Client.new.get('/resolve', url: url)
|
40
20
|
rescue SoundCloud::ResponseError => e
|
41
21
|
if e.message =~ /404/
|
@@ -46,4 +26,25 @@ module UserControl
|
|
46
26
|
else
|
47
27
|
true
|
48
28
|
end
|
29
|
+
|
30
|
+
def self.logged_in?
|
31
|
+
Config.key?(:default_id)
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.log_in
|
35
|
+
loop do
|
36
|
+
permalink = HighLine.new.ask('Please enter your permalink (last word in your profile url): ')
|
37
|
+
client = Client.new
|
38
|
+
url = "https://soundcloud.com/#{permalink}"
|
39
|
+
if UserControl.user_exist?(url)
|
40
|
+
user = client.get('/resolve', url: url)
|
41
|
+
Config[:default_id] = user.id
|
42
|
+
Config[:permalink] = permalink
|
43
|
+
puts Paint['Successfully logged in!', :green]
|
44
|
+
break
|
45
|
+
else
|
46
|
+
puts Paint['Invalid permalink. Please enter correct permalink', :red]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
49
50
|
end
|
data/lib/nehm/version.rb
CHANGED
data/nehm.gemspec
CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ['Albert Nigmatzianov']
|
10
10
|
spec.email = ['albertnigma@gmail.com']
|
11
11
|
|
12
|
-
spec.summary = %q{Convenient way to get tracks from SoundCloud via terminal}
|
13
|
-
spec.description = %q{nehm is a console tool, which downloads, sets IDv3 tags and adds to your iTunes library your SoundCloud posts or likes in convenient way}
|
12
|
+
spec.summary = %q{ Convenient way to get tracks from SoundCloud via terminal }
|
13
|
+
spec.description = %q{ nehm is a console tool, which downloads, sets IDv3 tags and adds to your iTunes library your SoundCloud posts or likes in convenient way. See http://www.github.com/bogem/nehm for instructions }
|
14
14
|
spec.homepage = 'http://www.github.com/bogem/nehm'
|
15
15
|
spec.license = 'MIT'
|
16
16
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nehm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Albert Nigmatzianov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -130,8 +130,9 @@ dependencies:
|
|
130
130
|
- - ">="
|
131
131
|
- !ruby/object:Gem::Version
|
132
132
|
version: 1.7.2
|
133
|
-
description: nehm is a console tool, which downloads, sets IDv3 tags and adds to
|
134
|
-
iTunes library your SoundCloud posts or likes in convenient way
|
133
|
+
description: " nehm is a console tool, which downloads, sets IDv3 tags and adds to
|
134
|
+
your iTunes library your SoundCloud posts or likes in convenient way. See http://www.github.com/bogem/nehm
|
135
|
+
for instructions "
|
135
136
|
email:
|
136
137
|
- albertnigma@gmail.com
|
137
138
|
executables:
|
@@ -140,7 +141,7 @@ extensions: []
|
|
140
141
|
extra_rdoc_files: []
|
141
142
|
files:
|
142
143
|
- ".gitignore"
|
143
|
-
-
|
144
|
+
- CHANGELOG.md
|
144
145
|
- Gemfile
|
145
146
|
- LICENSE
|
146
147
|
- README.md
|