ayadn 1.6.0 → 1.7.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/doc/05-streams.md +17 -0
- data/doc/06-post.md +41 -6
- data/lib/ayadn/action.rb +68 -123
- data/lib/ayadn/annotations.rb +191 -0
- data/lib/ayadn/app.rb +29 -5
- data/lib/ayadn/databases.rb +8 -2
- data/lib/ayadn/debug.rb +6 -6
- data/lib/ayadn/descriptions.rb +55 -2
- data/lib/ayadn/endpoints.rb +11 -3
- data/lib/ayadn/logs.rb +0 -17
- data/lib/ayadn/mark.rb +5 -2
- data/lib/ayadn/nowplaying.rb +17 -16
- data/lib/ayadn/nowwatching.rb +34 -9
- data/lib/ayadn/post.rb +46 -256
- data/lib/ayadn/scroll.rb +10 -8
- data/lib/ayadn/search.rb +2 -0
- data/lib/ayadn/set.rb +83 -198
- data/lib/ayadn/status.rb +3 -0
- data/lib/ayadn/stream.rb +27 -40
- data/lib/ayadn/tvshow.rb +8 -6
- data/lib/ayadn/version.rb +1 -1
- data/lib/ayadn/view.rb +8 -0
- data/lib/ayadn/workers.rb +41 -36
- data/spec/unit/post_spec.rb +19 -19
- metadata +3 -3
- data/doc/shortcuts.md +0 -8
data/lib/ayadn/set.rb
CHANGED
@@ -62,7 +62,7 @@ module Ayadn
|
|
62
62
|
begin
|
63
63
|
param = timeline_config.validate(args[1])
|
64
64
|
timeline_config.send(args[0], param)
|
65
|
-
rescue NoMethodError
|
65
|
+
rescue NoMethodError, ArgumentError
|
66
66
|
puts Status.error_missing_parameters
|
67
67
|
exit
|
68
68
|
rescue => e
|
@@ -84,7 +84,7 @@ module Ayadn
|
|
84
84
|
begin
|
85
85
|
param = counts_config.validate(args[1])
|
86
86
|
counts_config.send(args[0], param)
|
87
|
-
rescue NoMethodError
|
87
|
+
rescue NoMethodError, ArgumentError
|
88
88
|
puts Status.error_missing_parameters
|
89
89
|
exit
|
90
90
|
rescue => e
|
@@ -108,7 +108,7 @@ module Ayadn
|
|
108
108
|
begin
|
109
109
|
color_config.validate(args[1])
|
110
110
|
color_config.send(args[0], args[1])
|
111
|
-
rescue NoMethodError
|
111
|
+
rescue NoMethodError, ArgumentError
|
112
112
|
puts Status.error_missing_parameters
|
113
113
|
exit
|
114
114
|
rescue => e
|
@@ -129,7 +129,7 @@ module Ayadn
|
|
129
129
|
begin
|
130
130
|
param = backup_config.validate(args[1])
|
131
131
|
backup_config.send(args[0], param)
|
132
|
-
rescue NoMethodError
|
132
|
+
rescue NoMethodError, ArgumentError
|
133
133
|
puts Status.error_missing_parameters
|
134
134
|
exit
|
135
135
|
rescue => e
|
@@ -148,7 +148,53 @@ module Ayadn
|
|
148
148
|
Settings.restore_defaults
|
149
149
|
puts Status.done
|
150
150
|
end
|
151
|
+
end
|
151
152
|
|
153
|
+
class Validators
|
154
|
+
def self.boolean(value)
|
155
|
+
case value.downcase
|
156
|
+
when "true", "1", "yes"
|
157
|
+
true
|
158
|
+
when "false", "0", "no"
|
159
|
+
false
|
160
|
+
else
|
161
|
+
abort(Status.error_missing_parameters)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
def self.index_range(min, max, value)
|
165
|
+
x = value.to_i
|
166
|
+
if x >= min && x <= max
|
167
|
+
x
|
168
|
+
else
|
169
|
+
abort(Status.must_be_integer)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
def self.cache_range value
|
173
|
+
if value >= 1 && value <= 168
|
174
|
+
value.round
|
175
|
+
else
|
176
|
+
abort(Status.cache_range)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
def self.threshold value
|
180
|
+
value = value.to_f
|
181
|
+
if value > 0 and value < 5
|
182
|
+
value
|
183
|
+
else
|
184
|
+
abort(Status.threshold)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
def self.timer(t)
|
188
|
+
t = t.to_i
|
189
|
+
t >= 1 ? t : 3
|
190
|
+
end
|
191
|
+
def self.color(color)
|
192
|
+
colors_list = %w{red green magenta cyan yellow blue white black}
|
193
|
+
unless colors_list.include?(color)
|
194
|
+
puts Status.error_missing_parameters
|
195
|
+
abort(Status.valid_colors(colors_list))
|
196
|
+
end
|
197
|
+
end
|
152
198
|
end
|
153
199
|
|
154
200
|
class SetScroll
|
@@ -222,7 +268,7 @@ module Ayadn
|
|
222
268
|
Logs.create_logger
|
223
269
|
end
|
224
270
|
def log(args)
|
225
|
-
x = "New value for '#{args[0]}' in 'NiceRank' => #{
|
271
|
+
x = "New value for '#{args[0]}' in 'NiceRank' => #{args[1]}"
|
226
272
|
puts "\n#{x}\n".color(:cyan)
|
227
273
|
Logs.rec.info x
|
228
274
|
end
|
@@ -261,60 +307,12 @@ module Ayadn
|
|
261
307
|
def validate(value)
|
262
308
|
Validators.boolean(value)
|
263
309
|
end
|
264
|
-
def
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
Settings.options[:backup][:auto_save_sent_messages] = value
|
269
|
-
end
|
270
|
-
def auto_save_lists(value)
|
271
|
-
Settings.options[:backup][:auto_save_lists] = value
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
class Validators
|
276
|
-
def self.boolean(value)
|
277
|
-
case value.downcase
|
278
|
-
when "true", "1", "yes"
|
279
|
-
true
|
280
|
-
when "false", "0", "no"
|
281
|
-
false
|
282
|
-
else
|
283
|
-
abort(Status.error_missing_parameters)
|
284
|
-
end
|
285
|
-
end
|
286
|
-
def self.index_range(min, max, value)
|
287
|
-
x = value.to_i
|
288
|
-
if x >= min && x <= max
|
289
|
-
x
|
310
|
+
def method_missing(meth, options)
|
311
|
+
case meth.to_s
|
312
|
+
when 'auto_save_sent_posts', 'auto_save_sent_messages', 'auto_save_lists'
|
313
|
+
Settings.options[:backup][meth.to_sym] = options
|
290
314
|
else
|
291
|
-
|
292
|
-
end
|
293
|
-
end
|
294
|
-
def self.cache_range value
|
295
|
-
if value >= 1 && value <= 168
|
296
|
-
value.round
|
297
|
-
else
|
298
|
-
abort(Status.cache_range)
|
299
|
-
end
|
300
|
-
end
|
301
|
-
def self.threshold value
|
302
|
-
value = value.to_f
|
303
|
-
if value > 0 and value < 5
|
304
|
-
value
|
305
|
-
else
|
306
|
-
abort(Status.threshold)
|
307
|
-
end
|
308
|
-
end
|
309
|
-
def self.timer(t)
|
310
|
-
t = t.to_i
|
311
|
-
t >= 1 ? t : 3
|
312
|
-
end
|
313
|
-
def self.color(color)
|
314
|
-
colors_list = %w{red green magenta cyan yellow blue white black}
|
315
|
-
unless colors_list.include?(color)
|
316
|
-
puts Status.error_missing_parameters
|
317
|
-
abort(Status.valid_colors(colors_list))
|
315
|
+
super
|
318
316
|
end
|
319
317
|
end
|
320
318
|
end
|
@@ -337,53 +335,13 @@ module Ayadn
|
|
337
335
|
def validate(value)
|
338
336
|
Validators.index_range(1, 200, value)
|
339
337
|
end
|
340
|
-
def
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
Settings.options[:counts][:global] = value
|
348
|
-
end
|
349
|
-
def checkins(value)
|
350
|
-
Settings.options[:counts][:checkins] = value
|
351
|
-
end
|
352
|
-
def conversations(value)
|
353
|
-
Settings.options[:counts][:conversations] = value
|
354
|
-
end
|
355
|
-
def photos(value)
|
356
|
-
Settings.options[:counts][:photos] = value
|
357
|
-
end
|
358
|
-
def trending(value)
|
359
|
-
Settings.options[:counts][:trending] = value
|
360
|
-
end
|
361
|
-
def mentions(value)
|
362
|
-
Settings.options[:counts][:mentions] = value
|
363
|
-
end
|
364
|
-
def convo(value)
|
365
|
-
Settings.options[:counts][:convo] = value
|
366
|
-
end
|
367
|
-
def posts(value)
|
368
|
-
Settings.options[:counts][:posts] = value
|
369
|
-
end
|
370
|
-
def messages(value)
|
371
|
-
Settings.options[:counts][:messages] = value
|
372
|
-
end
|
373
|
-
def search(value)
|
374
|
-
Settings.options[:counts][:search] = value
|
375
|
-
end
|
376
|
-
def whoreposted(value)
|
377
|
-
Settings.options[:counts][:whoreposted] = value
|
378
|
-
end
|
379
|
-
def whostarred(value)
|
380
|
-
Settings.options[:counts][:whostarred] = value
|
381
|
-
end
|
382
|
-
def whatstarred(value)
|
383
|
-
Settings.options[:counts][:whatstarred] = value
|
384
|
-
end
|
385
|
-
def files(value)
|
386
|
-
Settings.options[:counts][:files] = value
|
338
|
+
def method_missing(meth, options)
|
339
|
+
case meth.to_s
|
340
|
+
when 'default', 'unified', 'checkins', 'conversations', 'global', 'photos', 'trending', 'mentions', 'convo', 'posts', 'messages', 'search', 'whoreposted', 'whostarred', 'whatstarred', 'files'
|
341
|
+
Settings.options[:counts][meth.to_sym] = options.to_i
|
342
|
+
else
|
343
|
+
super
|
344
|
+
end
|
387
345
|
end
|
388
346
|
end
|
389
347
|
|
@@ -405,37 +363,15 @@ module Ayadn
|
|
405
363
|
def save
|
406
364
|
Settings.save_config
|
407
365
|
end
|
408
|
-
def
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
end
|
418
|
-
def annotations(value)
|
419
|
-
#Settings.options[:timeline][:annotations] = value
|
420
|
-
abort(Status.not_mutable)
|
421
|
-
end
|
422
|
-
def show_source(value)
|
423
|
-
Settings.options[:timeline][:show_source] = value
|
424
|
-
end
|
425
|
-
def show_symbols(value)
|
426
|
-
Settings.options[:timeline][:show_symbols] = value
|
427
|
-
end
|
428
|
-
def show_real_name(value)
|
429
|
-
Settings.options[:timeline][:show_real_name] = value
|
430
|
-
end
|
431
|
-
def show_date(value)
|
432
|
-
Settings.options[:timeline][:show_date] = value
|
433
|
-
end
|
434
|
-
def show_spinner value
|
435
|
-
Settings.options[:timeline][:show_spinner] = value
|
436
|
-
end
|
437
|
-
def show_debug value
|
438
|
-
Settings.options[:timeline][:show_debug] = value
|
366
|
+
def method_missing(meth, options)
|
367
|
+
case meth.to_s
|
368
|
+
when 'directed', 'html', 'show_source', 'show_symbols', 'show_real_name', 'show_date', 'show_spinner', 'show_debug'
|
369
|
+
Settings.options[:timeline][meth.to_sym] = options
|
370
|
+
when 'deleted', 'annotations'
|
371
|
+
abort(Status.not_mutable)
|
372
|
+
else
|
373
|
+
super
|
374
|
+
end
|
439
375
|
end
|
440
376
|
end
|
441
377
|
|
@@ -461,68 +397,17 @@ module Ayadn
|
|
461
397
|
Settings.save_config
|
462
398
|
end
|
463
399
|
|
464
|
-
def
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
def name(color)
|
477
|
-
Settings.options[:colors][:name] = color.to_sym
|
478
|
-
end
|
479
|
-
|
480
|
-
def date(color)
|
481
|
-
Settings.options[:colors][:date] = color.to_sym
|
482
|
-
end
|
483
|
-
|
484
|
-
def link(color)
|
485
|
-
Settings.options[:colors][:link] = color.to_sym
|
486
|
-
end
|
487
|
-
|
488
|
-
def dots(color)
|
489
|
-
Settings.options[:colors][:dots] = color.to_sym
|
490
|
-
end
|
491
|
-
|
492
|
-
def hashtags(color)
|
493
|
-
Settings.options[:colors][:hashtags] = color.to_sym
|
494
|
-
end
|
495
|
-
|
496
|
-
def hashtag color
|
497
|
-
hashtags color
|
498
|
-
end
|
499
|
-
|
500
|
-
def mentions(color)
|
501
|
-
Settings.options[:colors][:mentions] = color.to_sym
|
502
|
-
end
|
503
|
-
|
504
|
-
def mention color
|
505
|
-
mentions color
|
506
|
-
end
|
507
|
-
|
508
|
-
def source(color)
|
509
|
-
Settings.options[:colors][:source] = color.to_sym
|
510
|
-
end
|
511
|
-
|
512
|
-
def client color
|
513
|
-
source color
|
514
|
-
end
|
515
|
-
|
516
|
-
def symbols(color)
|
517
|
-
Settings.options[:colors][:symbols] = color.to_sym
|
518
|
-
end
|
519
|
-
|
520
|
-
def symbol(color)
|
521
|
-
symbols color
|
522
|
-
end
|
523
|
-
|
524
|
-
def debug(color)
|
525
|
-
Settings.options[:colors][:debug] = color.to_sym
|
400
|
+
def method_missing(meth, options)
|
401
|
+
case meth.to_s
|
402
|
+
when 'id', 'index', 'username', 'name', 'date', 'link', 'dots', 'hashtags', 'mentions', 'source', 'symbols', 'debug'
|
403
|
+
Settings.options[:colors][meth.to_sym] = options.to_sym
|
404
|
+
when 'hashtag', 'mention', 'symbol'
|
405
|
+
Settings.options[:colors]["#{meth}s".to_sym] = options.to_sym
|
406
|
+
when 'client'
|
407
|
+
Settings.options[:colors][:source] = options.to_sym
|
408
|
+
else
|
409
|
+
super
|
410
|
+
end
|
526
411
|
end
|
527
412
|
end
|
528
413
|
end
|
data/lib/ayadn/status.rb
CHANGED
@@ -309,5 +309,8 @@ module Ayadn
|
|
309
309
|
def self.no_show_infos
|
310
310
|
"\nSorry, can't find informations about this show.\n".color(:blue)
|
311
311
|
end
|
312
|
+
def self.no_force target
|
313
|
+
"\n'#{target}' can't be displayed (could be muted, blocked, in the Blacklist, etc). Use option '--force' ('-f') to try and display this content anyway.\n\n".color(:blue)
|
314
|
+
end
|
312
315
|
end
|
313
316
|
end
|
data/lib/ayadn/stream.rb
CHANGED
@@ -9,64 +9,46 @@ module Ayadn
|
|
9
9
|
@workers = workers
|
10
10
|
end
|
11
11
|
|
12
|
-
def unified options
|
13
|
-
@view.downloading(options)
|
14
|
-
stream = @api.get_unified(options)
|
15
|
-
Check.no_new_posts(stream, options, 'unified')
|
16
|
-
Databases.save_max_id(stream)
|
17
|
-
@view.render(stream, options)
|
18
|
-
Scroll.new(@api, @view).unified(options) if options[:scroll]
|
19
|
-
end
|
20
|
-
|
21
|
-
def checkins options
|
22
|
-
@view.downloading(options)
|
23
|
-
stream = @api.get_checkins(options)
|
24
|
-
Check.no_new_posts(stream, options, 'explore:checkins')
|
25
|
-
Databases.save_max_id(stream)
|
26
|
-
@view.render(stream, options)
|
27
|
-
Scroll.new(@api, @view).checkins(options) if options[:scroll]
|
28
|
-
end
|
29
|
-
|
30
12
|
def global settings
|
13
|
+
Settings.options[:force] = true if settings[:force]
|
31
14
|
options = settings.dup
|
32
15
|
options[:filter] = nicerank_true()
|
33
16
|
@view.downloading(options)
|
34
17
|
stream = @api.get_global(options)
|
35
|
-
niceranks = NiceRank.new.get_ranks(stream)
|
18
|
+
Settings.options[:force] == true ? niceranks = {} : niceranks = NiceRank.new.get_ranks(stream)
|
36
19
|
Check.no_new_posts(stream, options, 'global')
|
37
|
-
Databases.save_max_id(stream)
|
20
|
+
Databases.save_max_id(stream, 'global') unless stream['meta']['max_id'].nil?
|
38
21
|
@view.render(stream, options, niceranks)
|
39
22
|
Scroll.new(@api, @view).global(options) if options[:scroll]
|
40
23
|
end
|
41
24
|
|
42
|
-
def trending options
|
43
|
-
@view.downloading(options)
|
44
|
-
stream = @api.get_trending(options)
|
45
|
-
Check.no_new_posts(stream, options, 'explore:trending')
|
46
|
-
Databases.save_max_id(stream)
|
47
|
-
@view.render(stream, options)
|
48
|
-
Scroll.new(@api, @view).trending(options) if options[:scroll]
|
49
|
-
end
|
50
25
|
|
51
|
-
def
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
26
|
+
def method_missing(meth, options)
|
27
|
+
case meth
|
28
|
+
when :checkins, :trending, :photos
|
29
|
+
stream(meth, options, "explore:#{meth}")
|
30
|
+
when :conversations
|
31
|
+
stream(meth, options, "explore:replies")
|
32
|
+
when :unified
|
33
|
+
stream(meth, options, meth.to_s)
|
34
|
+
else
|
35
|
+
super
|
36
|
+
end
|
58
37
|
end
|
59
38
|
|
60
|
-
def
|
39
|
+
def stream meth, options, target
|
40
|
+
Settings.options[:force] = true if options[:force]
|
61
41
|
@view.downloading(options)
|
62
|
-
stream = @api.
|
63
|
-
Check.no_new_posts(stream, options,
|
42
|
+
stream = @api.send("get_#{meth}".to_sym, options)
|
43
|
+
Check.no_new_posts(stream, options, target)
|
64
44
|
Databases.save_max_id(stream)
|
65
45
|
@view.render(stream, options)
|
66
|
-
Scroll.new(@api, @view).
|
46
|
+
Scroll.new(@api, @view).send(meth, options) if options[:scroll]
|
67
47
|
end
|
68
48
|
|
49
|
+
|
69
50
|
def mentions username, options
|
51
|
+
Settings.options[:force] = true if options[:force]
|
70
52
|
Check.no_username(username)
|
71
53
|
username = @workers.add_arobase(username)
|
72
54
|
@view.downloading(options)
|
@@ -81,13 +63,17 @@ module Ayadn
|
|
81
63
|
end
|
82
64
|
|
83
65
|
def posts username, options
|
66
|
+
Settings.options[:force] = true if options[:force]
|
84
67
|
Check.no_username(username)
|
85
68
|
username = @workers.add_arobase(username)
|
86
69
|
@view.downloading(options)
|
87
70
|
stream = @api.get_posts(username, options)
|
88
71
|
Check.no_user(stream, username)
|
89
|
-
Databases.save_max_id(stream)
|
72
|
+
Databases.save_max_id(stream) unless stream['meta']['marker'].nil?
|
90
73
|
Check.no_data(stream, 'mentions')
|
74
|
+
if Databases.blacklist["-#{username.downcase}"] || stream['data'][0]['user']['you_muted'] || stream['data'][0]['user']['you_blocked']
|
75
|
+
abort(Status.no_force("#{username.downcase}")) unless options[:raw] || Settings.options[:force]
|
76
|
+
end
|
91
77
|
@view.render(stream, options)
|
92
78
|
Scroll.new(@api, @view).posts(username, options) if options[:scroll]
|
93
79
|
end
|
@@ -178,6 +164,7 @@ module Ayadn
|
|
178
164
|
end
|
179
165
|
|
180
166
|
def convo(post_id, options)
|
167
|
+
Settings.options[:force] = true if options[:force]
|
181
168
|
Check.bad_post_id(post_id)
|
182
169
|
@view.downloading(options)
|
183
170
|
details = @api.get_details(post_id, options)
|
data/lib/ayadn/tvshow.rb
CHANGED
@@ -72,6 +72,7 @@ module Ayadn
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def post options = {}
|
75
|
+
options = options.dup
|
75
76
|
reg = /[~:-;,?!\'&`^=+<>*%()\/"“”’°£$€.…]/
|
76
77
|
filename = "#{@name.downcase.strip.gsub(reg, '_').split(' ').join('_')}.jpg"
|
77
78
|
if options['banner']
|
@@ -81,14 +82,15 @@ module Ayadn
|
|
81
82
|
end
|
82
83
|
@view.clear_screen
|
83
84
|
puts "\nPosting and uploading the show poster...\n".color(:green)
|
84
|
-
|
85
|
+
options[:embed] = ["#{Settings.config[:paths][:downloads]}/#{filename}"]
|
86
|
+
options[:tvshow] = true
|
85
87
|
dic = {
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
88
|
+
options: options,
|
89
|
+
text: @text,
|
90
|
+
title: @name,
|
91
|
+
source: 'TVDb'
|
90
92
|
}
|
91
|
-
resp = Post.new.
|
93
|
+
resp = Post.new.post(dic)
|
92
94
|
FileOps.save_post(resp) if Settings.options[:backup][:auto_save_sent_posts]
|
93
95
|
@view.clear_screen
|
94
96
|
puts Status.yourpost
|
data/lib/ayadn/version.rb
CHANGED
data/lib/ayadn/view.rb
CHANGED
@@ -6,6 +6,14 @@ module Ayadn
|
|
6
6
|
@workers = Workers.new
|
7
7
|
end
|
8
8
|
|
9
|
+
def show_cursor
|
10
|
+
puts "\e[?25h"
|
11
|
+
end
|
12
|
+
|
13
|
+
def hide_cursor
|
14
|
+
puts "\e[?25l"
|
15
|
+
end
|
16
|
+
|
9
17
|
def show_posts_with_index(data, options, niceranks = {})
|
10
18
|
posts, view = build_stream_with_index(data, options, niceranks)
|
11
19
|
puts view unless view == ""
|
data/lib/ayadn/workers.rb
CHANGED
@@ -118,39 +118,49 @@ module Ayadn
|
|
118
118
|
table
|
119
119
|
end
|
120
120
|
|
121
|
+
# builds a hash of hashes, each hash is a normalized post with post id as a key
|
121
122
|
def build_posts(data, niceranks = {})
|
122
|
-
#
|
123
|
+
# skip objects in blacklist unless force
|
123
124
|
posts = {}
|
124
125
|
data.each.with_index(1) do |post, index|
|
125
|
-
|
126
|
-
|
127
|
-
|
126
|
+
unless Settings.options[:force]
|
127
|
+
if Databases.blacklist[post['source']['name'].downcase]
|
128
|
+
Debug.skipped({source: post['source']['name']})
|
129
|
+
next
|
130
|
+
end
|
128
131
|
end
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
+
unless Settings.options[:force]
|
133
|
+
if Databases.blacklist["-@#{post['user']['username'].downcase}"]
|
134
|
+
Debug.skipped({user: post['user']['username']})
|
135
|
+
next
|
136
|
+
end
|
132
137
|
end
|
133
138
|
hashtags = extract_hashtags(post)
|
134
139
|
@skip = false
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
+
unless Settings.options[:force]
|
141
|
+
hashtags.each do |h|
|
142
|
+
if Databases.blacklist[h.downcase]
|
143
|
+
@skip = true
|
144
|
+
Debug.skipped({hashtag: h})
|
145
|
+
break
|
146
|
+
end
|
140
147
|
end
|
141
148
|
end
|
142
149
|
next if @skip
|
143
150
|
mentions= []
|
144
151
|
post['entities']['mentions'].each { |m| mentions << m['name'] }
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
152
|
+
unless Settings.options[:force]
|
153
|
+
mentions.each do |m|
|
154
|
+
if Databases.blacklist["@#{m.downcase}"]
|
155
|
+
@skip = true
|
156
|
+
Debug.skipped({mention: m})
|
157
|
+
break
|
158
|
+
end
|
150
159
|
end
|
151
160
|
end
|
152
161
|
next if @skip
|
153
162
|
|
163
|
+
# create custom objects from ADN response
|
154
164
|
if niceranks[post['user']['id'].to_i]
|
155
165
|
rank = niceranks[post['user']['id'].to_i][:rank]
|
156
166
|
is_human = niceranks[post['user']['id'].to_i][:is_human]
|
@@ -242,8 +252,7 @@ module Ayadn
|
|
242
252
|
end
|
243
253
|
|
244
254
|
def extract_links(post)
|
245
|
-
links = []
|
246
|
-
post['entities']['links'].each { |l| links << l['url'] }
|
255
|
+
links = post['entities']['links'].map { |l| l['url'] }
|
247
256
|
unless post['annotations'].nil? || post['annotations'].empty?
|
248
257
|
post['annotations'].each do |ann|
|
249
258
|
if ann['type'] == "net.app.core.oembed"
|
@@ -251,14 +260,11 @@ module Ayadn
|
|
251
260
|
end
|
252
261
|
end
|
253
262
|
end
|
254
|
-
links.uniq
|
255
|
-
links
|
263
|
+
links.uniq
|
256
264
|
end
|
257
265
|
|
258
266
|
def extract_hashtags(post)
|
259
|
-
|
260
|
-
post['entities']['hashtags'].each { |h| tags << h['name'] }
|
261
|
-
tags
|
267
|
+
post['entities']['hashtags'].map { |h| h['name'] }
|
262
268
|
end
|
263
269
|
|
264
270
|
def build_channels(data, options = {})
|
@@ -369,7 +375,16 @@ module Ayadn
|
|
369
375
|
username.join
|
370
376
|
end
|
371
377
|
|
372
|
-
def
|
378
|
+
def remove_arobase_if_present args
|
379
|
+
args.map! do |username|
|
380
|
+
temp = username.chars
|
381
|
+
temp.shift if temp.first == "@"
|
382
|
+
temp.join
|
383
|
+
end
|
384
|
+
args
|
385
|
+
end
|
386
|
+
|
387
|
+
def add_arobases_to_usernames args #TODO: replace all these arobase legacy methods by a unique one
|
373
388
|
args.map do |username|
|
374
389
|
if username == 'me'
|
375
390
|
who_am_i
|
@@ -387,15 +402,6 @@ module Ayadn
|
|
387
402
|
db[active][:handle]
|
388
403
|
end
|
389
404
|
|
390
|
-
def remove_arobase_if_present args
|
391
|
-
args.map! do |username|
|
392
|
-
temp = username.chars
|
393
|
-
temp.shift if temp.first == "@"
|
394
|
-
temp.join
|
395
|
-
end
|
396
|
-
args
|
397
|
-
end
|
398
|
-
|
399
405
|
def extract_users(resp)
|
400
406
|
users_hash = {}
|
401
407
|
resp['data'].each do |item|
|
@@ -473,8 +479,7 @@ module Ayadn
|
|
473
479
|
stream['data'].each do |post|
|
474
480
|
extract_links(post).each {|l| links << l}
|
475
481
|
end
|
476
|
-
links.uniq
|
477
|
-
links
|
482
|
+
links.uniq
|
478
483
|
end
|
479
484
|
|
480
485
|
def all_but_me usernames
|