nokaya 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +74 -3
- data/lib/nokaya.rb +2 -0
- data/lib/nokaya/adn.rb +2 -1
- data/lib/nokaya/app.rb +25 -2
- data/lib/nokaya/apple.rb +33 -0
- data/lib/nokaya/appstore.rb +56 -0
- data/lib/nokaya/basic.rb +3 -1
- data/lib/nokaya/deviantart.rb +1 -1
- data/lib/nokaya/favd.rb +2 -1
- data/lib/nokaya/flickr_album.rb +1 -1
- data/lib/nokaya/imageshack_user.rb +1 -1
- data/lib/nokaya/imgur_album.rb +1 -1
- data/lib/nokaya/instagram.rb +1 -1
- data/lib/nokaya/movie.rb +1 -1
- data/lib/nokaya/musicstore.rb +34 -0
- data/lib/nokaya/photonet.rb +1 -1
- data/lib/nokaya/tumblr.rb +1 -1
- data/lib/nokaya/tumblr_album.rb +1 -1
- data/lib/nokaya/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 829ce1f0a2fb95b1457d4468404cfdd2d8182d79
|
4
|
+
data.tar.gz: 4557e163eaf1a75d5ca16b278d86c78a49a825a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66c8937d7a0068491ba9b5e9222c56ebe2129de35f90d2adddb80adbc71af428fe304e6f43f53df78971a07acb0f7bcd1d7dcb2f1aaeabb6e2b37bb4e91231fb
|
7
|
+
data.tar.gz: 1439a5f81f8f8de3b9c321e394a4345d233d1138a9c7803e44cf2b6e76dce307a9433989ba864c61db68b1021ef9b53eb22c40be647f5e5a49f9ba63dc944fec
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
# 0.1.2
|
2
|
+
|
3
|
+
- New: appstore. Download icons + screenshots for an app name. Default: OSX, option for iOS.
|
4
|
+
- New: musicstore. Download available art for an iTunes Store song/album.
|
5
|
+
- Fix: movie command description
|
6
|
+
- Fix: optional options (yeah) for usage without CLI
|
7
|
+
|
8
|
+
# 0.1.1
|
9
|
+
|
10
|
+
- Fix: file missing
|
11
|
+
|
1
12
|
# 0.1.0
|
2
13
|
|
3
14
|
- Major internal refactoring
|
data/README.md
CHANGED
@@ -16,7 +16,7 @@ Mac OS X only for the time being.
|
|
16
16
|
|
17
17
|
`nokaya -i url`
|
18
18
|
|
19
|
-
Also accepts the IFTTT format (like
|
19
|
+
Also accepts the IFTTT format (like `http://ift.tt/1m2Nvz8`).
|
20
20
|
|
21
21
|
Example:
|
22
22
|
|
@@ -126,14 +126,48 @@ Use option `-a` to get an alternative.
|
|
126
126
|
|
127
127
|
This is useful for remakes:
|
128
128
|
|
129
|
-
`nokaya
|
129
|
+
`nokaya -m solaris`
|
130
130
|
|
131
131
|
(gives the 2002 version)
|
132
132
|
|
133
|
-
`nokaya
|
133
|
+
`nokaya -m -a solaris`
|
134
134
|
|
135
135
|
(gives the 1972 version)
|
136
136
|
|
137
|
+
### App store
|
138
|
+
|
139
|
+
Downloads a set of icons and screenshots for a given app name.
|
140
|
+
|
141
|
+
Defaults for Mac OSX, use option `-i` for iOS.
|
142
|
+
|
143
|
+
`nokaya appstore name`
|
144
|
+
|
145
|
+
Examples:
|
146
|
+
|
147
|
+
`nokaya -as marked`
|
148
|
+
|
149
|
+
`nokaya -as -i chimp app.net`
|
150
|
+
|
151
|
+
### Music store
|
152
|
+
|
153
|
+
Downloads available art for an iTunes Store song.
|
154
|
+
|
155
|
+
Works better if you embed separate elements between quotes.
|
156
|
+
|
157
|
+
`nokaya music 'song'`
|
158
|
+
|
159
|
+
`nokaya music 'song' 'artist' 'album'`
|
160
|
+
|
161
|
+
Examples:
|
162
|
+
|
163
|
+
`nokaya -z 'stairway to heaven'`
|
164
|
+
|
165
|
+
`nokaya -z 'stairway to heaven' 'led zeppelin'`
|
166
|
+
|
167
|
+
Use the `--album` option to find an album intead of a song:
|
168
|
+
|
169
|
+
`nokaya -z --album 'calamari tuesday'`
|
170
|
+
|
137
171
|
## Options
|
138
172
|
|
139
173
|
### Name
|
@@ -161,3 +195,40 @@ The picture(s) will be downloaded in '~/Downloads' if no output specified.
|
|
161
195
|
Specify both.
|
162
196
|
|
163
197
|
`nokaya -i http://instagram.com/p/noANAfjJ7B/ -o ~/Pics -n happy_dog`
|
198
|
+
|
199
|
+
## Using Nokaya in a script or irb
|
200
|
+
|
201
|
+
Create a new instance of the class you need, with an array of arguments and an hash of options.
|
202
|
+
|
203
|
+
Do what you wish with this object, or call its `save` method to write down the grabbed file(s).
|
204
|
+
|
205
|
+
```
|
206
|
+
require 'nokaya'
|
207
|
+
result = Nokaya::Movie.new ['terminator']
|
208
|
+
result.save
|
209
|
+
```
|
210
|
+
|
211
|
+
![Nokaya object](http://dl.dropboxusercontent.com/s/4ix4j16a004iwvd/nokaya-object.png)
|
212
|
+
|
213
|
+
|
214
|
+
The argument(s) for the movie/music/app/url - for the request - *have* to be in an array.
|
215
|
+
|
216
|
+
You can pass options in a hash. Options keys are strings that match the name of the corresponding symbol in the Nokaya::App class (which is the CLI interface).
|
217
|
+
|
218
|
+
Examples:
|
219
|
+
|
220
|
+
```
|
221
|
+
require 'nokaya'
|
222
|
+
client = Nokaya::Movie.new ['solaris'], {'alt' => true}
|
223
|
+
client = Nokaya::Instagram.new ['http://ift.tt/1m2Nvz8'], {'output' => '/hdd/custom/dir', 'name' => 'pasta.jpg'}
|
224
|
+
client = Nokaya::Deviantart.new ['http://www.deviantart.com/photography/nature/waterscapes/']
|
225
|
+
client = Nokaya::ImgurAlbum.new ['http://imgur.com/a/JNzjB\#0']
|
226
|
+
client = Nokaya::AppStore.new ['marked app']
|
227
|
+
client = Nokaya::AppStore.new ['chimp', 'app.net'], {'ios' => true}
|
228
|
+
```
|
229
|
+
|
230
|
+
etc.
|
231
|
+
|
232
|
+
|
233
|
+
|
234
|
+
|
data/lib/nokaya.rb
CHANGED
data/lib/nokaya/adn.rb
CHANGED
data/lib/nokaya/app.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module Nokaya
|
3
|
+
|
3
4
|
class App < Thor
|
4
5
|
|
5
6
|
package_name "Nokaya"
|
6
7
|
|
7
|
-
%w{basic status movie workers instagram favd adn tumblr tumblr_album imgur_album flickr_album photonet deviantart imageshack_user}.each {|file| require_relative "#{file}"}
|
8
|
+
%w{basic status movie workers instagram favd adn tumblr tumblr_album imgur_album flickr_album photonet deviantart imageshack_user apple appstore musicstore}.each {|file| require_relative "#{file}"}
|
8
9
|
|
9
|
-
desc "movie TITLE", "Get the movie poster from IMDb (nokaya -m
|
10
|
+
desc "movie TITLE", "Get the movie poster from IMDb (nokaya -m title)"
|
10
11
|
map "-m" => :movie
|
11
12
|
option :name, aliases: "-n", type: :string, desc: "Specify a file name without extension"
|
12
13
|
option :output, aliases: "-o", type: :string, desc: "Specify an output path"
|
@@ -18,6 +19,28 @@ module Nokaya
|
|
18
19
|
puts Status.saved(image)
|
19
20
|
end
|
20
21
|
|
22
|
+
desc "appstore NAME", "Get a set of icons and screenshots for Apple apps (nokaya -as name)"
|
23
|
+
map "-as" => :appstore
|
24
|
+
option :output, aliases: "-o", type: :string, desc: "Specify an output path"
|
25
|
+
option :ios, aliases: "-i", type: :boolean, desc: "Search iOS apps instead of Mac OSX apps"
|
26
|
+
def appstore *args
|
27
|
+
puts Status.wait
|
28
|
+
image = AppStore.new(args, options)
|
29
|
+
image.save
|
30
|
+
puts Status.saved_album(image)
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "music NAME", "Get available art for an iTunes Store song (nokaya -z name)"
|
34
|
+
map "-z" => :music
|
35
|
+
option :output, aliases: "-o", type: :string, desc: "Specify an output path"
|
36
|
+
option :album, type: :boolean, desc: "Find an album instead of a track"
|
37
|
+
def music *args
|
38
|
+
puts Status.wait
|
39
|
+
image = MusicStore.new(args, options)
|
40
|
+
image.save
|
41
|
+
puts Status.saved_album(image)
|
42
|
+
end
|
43
|
+
|
21
44
|
desc "instagram URL", "Get the original picture from an Instagram page (nokaya -i url)"
|
22
45
|
map "-i" => :instagram
|
23
46
|
option :name, aliases: "-n", type: :string, desc: "Specify a file name without extension"
|
data/lib/nokaya/apple.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Nokaya
|
3
|
+
|
4
|
+
class Apple < Basic
|
5
|
+
|
6
|
+
def initialize args, options
|
7
|
+
super(args, options)
|
8
|
+
if options['ios']
|
9
|
+
@entity = "software"
|
10
|
+
elsif options['itunes']
|
11
|
+
if options['album']
|
12
|
+
@entity = 'album'
|
13
|
+
else
|
14
|
+
@entity = "musicTrack"
|
15
|
+
end
|
16
|
+
else
|
17
|
+
@entity = "macSoftware"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_url terms
|
22
|
+
URI.parse("http://itunes.apple.com/search?term=#{CGI.escape(terms.join(" "))}&entity=#{@entity}")
|
23
|
+
end
|
24
|
+
|
25
|
+
def music_url terms
|
26
|
+
url = "http://itunes.apple.com/search?entity=#{@entity}"
|
27
|
+
terms.each {|term| url << "&term=#{CGI.escape(term)}"}
|
28
|
+
URI.parse(url)
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Nokaya
|
3
|
+
|
4
|
+
# Inspired by Brett Terpstra
|
5
|
+
|
6
|
+
class AppStore < Apple
|
7
|
+
|
8
|
+
attr_accessor :appname
|
9
|
+
|
10
|
+
def initialize args, options = {}
|
11
|
+
super(args, options)
|
12
|
+
@type = :appstore
|
13
|
+
@appname = @workers.sanitize(args.join('_'))
|
14
|
+
@image_url = [grab_small(args), grab_big(args)].compact
|
15
|
+
find_screenshots(args)
|
16
|
+
@path = "#{@path}/appstore-#{@appname}-#{@workers.timed}"
|
17
|
+
@file_name = name()
|
18
|
+
remove_instance_variable(:@res)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def name
|
24
|
+
@image_url.map.with_index do |url, index|
|
25
|
+
"#{@type.to_s}-#{@appname}-#{'%02d' % index}-#{File.basename(url).gsub('ApplicationIcon.', '')}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def find_icon terms
|
30
|
+
itunes_url = self.create_url(terms)
|
31
|
+
@res = open(itunes_url).read
|
32
|
+
match = @res.match(/"#{@icon_size}":"(.*?)",/)
|
33
|
+
unless match.nil?
|
34
|
+
return match[1]
|
35
|
+
else
|
36
|
+
return false
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def grab_small args
|
41
|
+
@icon_size = "artworkUrl60"
|
42
|
+
find_icon(args)
|
43
|
+
end
|
44
|
+
|
45
|
+
def grab_big args
|
46
|
+
@icon_size = "artworkUrl100"
|
47
|
+
find_icon(args)
|
48
|
+
end
|
49
|
+
|
50
|
+
def find_screenshots terms
|
51
|
+
res = JSON.parse(@res)
|
52
|
+
res['results'][0]['screenshotUrls'].each {|link| @image_url << link}
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
data/lib/nokaya/basic.rb
CHANGED
@@ -3,7 +3,8 @@ module Nokaya
|
|
3
3
|
|
4
4
|
class Basic
|
5
5
|
|
6
|
-
attr_reader :options, :args, :
|
6
|
+
attr_reader :options, :args, :file_name, :type, :name, :path
|
7
|
+
attr_accessor :image_url
|
7
8
|
|
8
9
|
def initialize args, options
|
9
10
|
@options = options
|
@@ -14,6 +15,7 @@ module Nokaya
|
|
14
15
|
@path = @workers.path
|
15
16
|
@type = :basic
|
16
17
|
@name = options['name'] if options['name']
|
18
|
+
@platform = RbConfig::CONFIG['host_os']
|
17
19
|
end
|
18
20
|
|
19
21
|
def get_basic page
|
data/lib/nokaya/deviantart.rb
CHANGED
data/lib/nokaya/favd.rb
CHANGED
data/lib/nokaya/flickr_album.rb
CHANGED
data/lib/nokaya/imgur_album.rb
CHANGED
data/lib/nokaya/instagram.rb
CHANGED
data/lib/nokaya/movie.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Nokaya
|
3
|
+
|
4
|
+
class MusicStore < Apple
|
5
|
+
|
6
|
+
def initialize args, options = {}
|
7
|
+
options = options.dup
|
8
|
+
options['itunes'] = true
|
9
|
+
super(args, options)
|
10
|
+
@type = :musicstore
|
11
|
+
find(args)
|
12
|
+
@path = "#{@path}/musicstore-#{@workers.sanitize(args.join(' '))}-#{@workers.timed}"
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def find args
|
18
|
+
url = self.music_url(args)
|
19
|
+
data = get(url)
|
20
|
+
data['results'].each do |obj|
|
21
|
+
next if obj['collectionName'].nil?
|
22
|
+
link = obj['artworkUrl100'].gsub('100x100', '1200x1200')
|
23
|
+
next if @image_url.include?(link)
|
24
|
+
@image_url << link
|
25
|
+
@file_name << "#{@workers.sanitize(obj['collectionName'])}.jpg"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def get url
|
30
|
+
JSON.parse(open(url).read)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
data/lib/nokaya/photonet.rb
CHANGED
data/lib/nokaya/tumblr.rb
CHANGED
data/lib/nokaya/tumblr_album.rb
CHANGED
data/lib/nokaya/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nokaya
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Dejonckheere
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -142,6 +142,8 @@ files:
|
|
142
142
|
- lib/nokaya.rb
|
143
143
|
- lib/nokaya/adn.rb
|
144
144
|
- lib/nokaya/app.rb
|
145
|
+
- lib/nokaya/apple.rb
|
146
|
+
- lib/nokaya/appstore.rb
|
145
147
|
- lib/nokaya/basic.rb
|
146
148
|
- lib/nokaya/deviantart.rb
|
147
149
|
- lib/nokaya/favd.rb
|
@@ -150,6 +152,7 @@ files:
|
|
150
152
|
- lib/nokaya/imgur_album.rb
|
151
153
|
- lib/nokaya/instagram.rb
|
152
154
|
- lib/nokaya/movie.rb
|
155
|
+
- lib/nokaya/musicstore.rb
|
153
156
|
- lib/nokaya/photonet.rb
|
154
157
|
- lib/nokaya/status.rb
|
155
158
|
- lib/nokaya/tumblr.rb
|