flickrage 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 +4 -4
- data/README.md +1 -0
- data/lib/flickrage.rb +2 -0
- data/lib/flickrage/cli.rb +7 -0
- data/lib/flickrage/service/downloader.rb +30 -22
- data/lib/flickrage/service/search.rb +15 -1
- data/lib/flickrage/version.rb +1 -1
- data/lib/flickrage/worker/search.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 847af86d9e43d42df3b1b988ac8a0d9bff7aff75
|
4
|
+
data.tar.gz: 590ec13f794cb3a22b1d2182ddf76088e147c8c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de533e78326980bf3e4f91fd0eea9eab3c062c930c5cba58b5e856f7e856a9b0543bdb0f0779b1f1b82c6af5ab9709dbf4a0a3b37c053002be2bd6040d3a432d
|
7
|
+
data.tar.gz: 5fa397e6a465cd2d82ca5c94c9d82f48edead68da0541001b2ee80cf2dce12776fa90b808e39e7496953ec3a6659242407f6df11b4e2e965e5eff023014be948
|
data/README.md
CHANGED
@@ -93,6 +93,7 @@ Provide your own words dictionary:
|
|
93
93
|
[--file-name=./some.png] # Name for the file with collage.
|
94
94
|
[--dict-path=/usr/share/dict/words] # Path to the file with multiline words (dictionary).
|
95
95
|
-c, [--cleanup], [--no-cleanup] # Cleanup files before collage.
|
96
|
+
-t, [--tagged-search], [--no-tagged-search] # Search by tags.
|
96
97
|
-v, [--verbose], [--no-verbose] # Verbose mode.
|
97
98
|
-q, [--quiet], [--no-quiet] # Quiet mode. If don't need any messages and in console.
|
98
99
|
[--flickr-api-key=YOURLONGAPIKEY] # FLICKR_API_KEY. if you can't use environment.
|
data/lib/flickrage.rb
CHANGED
data/lib/flickrage/cli.rb
CHANGED
@@ -111,6 +111,11 @@ module Flickrage
|
|
111
111
|
type: :boolean,
|
112
112
|
aliases: %w(-c),
|
113
113
|
desc: 'Cleanup files before collage.'
|
114
|
+
method_option :tagged_search,
|
115
|
+
default: false,
|
116
|
+
aliases: %w(-t),
|
117
|
+
type: :boolean,
|
118
|
+
desc: 'Search by tags.'
|
114
119
|
method_option :verbose,
|
115
120
|
type: :boolean,
|
116
121
|
aliases: %w(-v),
|
@@ -200,6 +205,8 @@ module Flickrage
|
|
200
205
|
config.max = options['max'] if options['max']
|
201
206
|
config.grid = options['grid'] if options['grid']
|
202
207
|
config.output = options['output']
|
208
|
+
|
209
|
+
config.tagged_search = options['tagged_search']
|
203
210
|
end
|
204
211
|
end
|
205
212
|
|
@@ -9,7 +9,7 @@ module Flickrage
|
|
9
9
|
|
10
10
|
def run(image)
|
11
11
|
uri = gen_uri(image.url)
|
12
|
-
image.file_name = file_name(uri)
|
12
|
+
image.file_name = file_name(uri) unless image.file_name
|
13
13
|
download_file(uri, image.local_path)
|
14
14
|
check_image(image)
|
15
15
|
rescue StandardError => e
|
@@ -19,45 +19,53 @@ module Flickrage
|
|
19
19
|
|
20
20
|
private
|
21
21
|
|
22
|
-
def download_file(uri, path,
|
22
|
+
def download_file(uri, path, mode = 'wb')
|
23
|
+
File.open(path, mode) do |file|
|
24
|
+
file.flock(File::LOCK_EX)
|
25
|
+
parse_file(uri, file)
|
26
|
+
end
|
27
|
+
rescue => e
|
28
|
+
FileUtils.rm_f(path) if File.size(path).zero?
|
29
|
+
raise e
|
30
|
+
end
|
31
|
+
|
32
|
+
def parse_file(uri, file, limit = Flickrage.config.download_timeout)
|
23
33
|
raise Flickrage::DownloadError, 'Redirect limit arrived' if limit.zero?
|
24
34
|
|
25
35
|
Net::HTTP.start(uri.host, uri.port,
|
26
36
|
use_ssl: uri.scheme == 'https') do |conn|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
conn.request_get(uri.path) do |response|
|
38
|
+
case response
|
39
|
+
when Net::HTTPSuccess
|
40
|
+
response.read_body do |seg|
|
41
|
+
file << seg
|
42
|
+
end
|
43
|
+
when Net::HTTPRedirection
|
44
|
+
download_file(gen_uri(response['location']),
|
45
|
+
path,
|
46
|
+
limit - 1)
|
47
|
+
else
|
48
|
+
response.error!
|
49
|
+
end
|
39
50
|
end
|
40
51
|
end
|
41
52
|
end
|
42
53
|
|
43
|
-
def write_file(path, body, mode = 'wb')
|
44
|
-
File.open(path, mode) do |file|
|
45
|
-
file.flock(File::LOCK_EX)
|
46
|
-
file << body
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
54
|
def gen_uri(url)
|
51
55
|
URI.parse(url)
|
52
56
|
end
|
53
57
|
|
54
58
|
def file_name(uri)
|
55
|
-
|
59
|
+
"#{nsec}_" + File.basename(uri.path)
|
56
60
|
end
|
57
61
|
|
58
62
|
def check_image(image)
|
59
63
|
File.exist?(image.local_path) ? image.finish_download : image
|
60
64
|
end
|
65
|
+
|
66
|
+
def nsec
|
67
|
+
Time.now.nsec
|
68
|
+
end
|
61
69
|
end
|
62
70
|
end
|
63
71
|
end
|
@@ -4,6 +4,12 @@ module Flickrage
|
|
4
4
|
class Search
|
5
5
|
include Flickrage::Helpers::Log
|
6
6
|
|
7
|
+
attr_reader :tagged_search
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@tagged_search = Flickrage.config.tagged_search
|
11
|
+
end
|
12
|
+
|
7
13
|
def run(keyword)
|
8
14
|
result = search(keyword)
|
9
15
|
|
@@ -31,7 +37,7 @@ module Flickrage
|
|
31
37
|
end
|
32
38
|
|
33
39
|
def search(keyword)
|
34
|
-
flickr.photos.search(params(
|
40
|
+
flickr.photos.search(params(search_query(keyword)))
|
35
41
|
end
|
36
42
|
|
37
43
|
def title(text)
|
@@ -48,6 +54,14 @@ module Flickrage
|
|
48
54
|
pages: 1
|
49
55
|
}.merge(opts)
|
50
56
|
end
|
57
|
+
|
58
|
+
def search_query(keyword)
|
59
|
+
if tagged_search
|
60
|
+
{tags: [keyword]}
|
61
|
+
else
|
62
|
+
{text: keyword}
|
63
|
+
end
|
64
|
+
end
|
51
65
|
end
|
52
66
|
end
|
53
67
|
end
|
data/lib/flickrage/version.rb
CHANGED
@@ -5,7 +5,7 @@ module Flickrage
|
|
5
5
|
include Flickrage::Helpers::Dict
|
6
6
|
|
7
7
|
def call
|
8
|
-
keywords = opts['keywords'] || %w()
|
8
|
+
keywords = opts['keywords']&.first(Flickrage.config.max) || %w()
|
9
9
|
|
10
10
|
keywords += sample_words(Flickrage.config.max - keywords.size) if keywords.size < Flickrage.config.max
|
11
11
|
keys = keywords.join(', ')
|