ayadn 1.4.6 → 1.5.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.
data/lib/ayadn/api.rb CHANGED
@@ -125,6 +125,10 @@ module Ayadn
125
125
  get_parsed_response(Endpoints.new.user(username))
126
126
  end
127
127
 
128
+ def get_users(usernames)
129
+ get_parsed_response(Endpoints.new.users(usernames))
130
+ end
131
+
128
132
  def get_details(post_id, options = {})
129
133
  get_parsed_response(Endpoints.new.single_post(post_id, options))
130
134
  end
@@ -154,12 +158,12 @@ module Ayadn
154
158
  JSON.parse(CNX.post(Endpoints.new.star(post_id)))
155
159
  end
156
160
 
157
- def follow(post_id)
158
- JSON.parse(CNX.post(Endpoints.new.follow(post_id)))
161
+ def follow(username)
162
+ JSON.parse(CNX.post(Endpoints.new.follow(username)))
159
163
  end
160
164
 
161
- def mute(post_id)
162
- JSON.parse(CNX.post(Endpoints.new.mute(post_id)))
165
+ def mute(username)
166
+ JSON.parse(CNX.post(Endpoints.new.mute(username)))
163
167
  end
164
168
 
165
169
  def block(username)
@@ -235,42 +239,19 @@ module Ayadn
235
239
  end
236
240
 
237
241
  def self.build_query(arg)
238
- count = Settings.options[:counts][:default]
239
- if arg[:count]
240
- if arg[:count].to_s.is_integer?
241
- count = arg[:count]
242
- end
243
- end
244
- directed = Settings.options[:timeline][:directed]
245
- if arg[:directed]
246
- if arg[:directed] == 0 || arg[:directed] == 1
247
- directed = arg[:directed]
248
- end
249
- end
250
- deleted = Settings.options[:timeline][:deleted]
251
- if arg[:deleted]
252
- if arg[:deleted] == 0 || arg[:deleted] == 1
253
- deleted = arg[:deleted]
254
- end
255
- end
256
- html = Settings.options[:timeline][:html]
257
- if arg[:html]
258
- if arg[:html] == 0 || arg[:html] == 1
259
- html = arg[:html]
260
- end
261
- end
262
- annotations = Settings.options[:timeline][:annotations]
263
- if arg[:annotations]
264
- if arg[:annotations] == 0 || arg[:annotations] == 1
265
- annotations = arg[:annotations]
266
- end
242
+ if arg[:count].to_s.is_integer?
243
+ count = arg[:count]
244
+ else
245
+ count = Settings.options[:counts][:default]
267
246
  end
247
+ directed = arg[:directed] || Settings.options[:timeline][:directed]
248
+ html = arg[:html] || Settings.options[:timeline][:html]
268
249
  if arg[:since_id]
269
- "&count=#{count}&include_html=#{html}&include_directed=#{directed}&include_deleted=#{deleted}&include_annotations=#{annotations}&since_id=#{arg[:since_id]}"
250
+ "&count=#{count}&include_html=#{html}&include_directed=#{directed}&include_deleted=0&include_annotations=1&since_id=#{arg[:since_id]}"
270
251
  elsif arg[:recent_message]
271
- "&count=#{count}&include_html=#{html}&include_directed=#{directed}&include_deleted=#{deleted}&include_annotations=#{annotations}&include_recent_message=#{arg[:recent_message]}"
252
+ "&count=#{count}&include_html=#{html}&include_directed=#{directed}&include_deleted=0&include_annotations=1&include_recent_message=#{arg[:recent_message]}"
272
253
  else
273
- "&count=#{count}&include_html=#{html}&include_directed=#{directed}&include_deleted=#{deleted}&include_annotations=#{annotations}"
254
+ "&count=#{count}&include_html=#{html}&include_directed=#{directed}&include_deleted=0&include_annotations=1"
274
255
  end
275
256
  end
276
257
 
@@ -301,7 +282,8 @@ module Ayadn
301
282
  loop do
302
283
  resp = get_parsed_response(get_list_url(username, target, options))
303
284
  abort(Status.user_404(username)) if resp['meta']['code'] == 404
304
- big_hash.merge!(Workers.extract_users(resp))
285
+ users = Workers.extract_users(resp)
286
+ big_hash.merge!(users)
305
287
  break if resp['meta']['min_id'] == nil
306
288
  options = {:count => 200, :before_id => resp['meta']['min_id']}
307
289
  end
data/lib/ayadn/app.rb CHANGED
@@ -5,6 +5,9 @@ module Ayadn
5
5
 
6
6
  %w{action api descriptions endpoints cnx view workers settings post status extend databases fileops logs pinboard set alias errors blacklist scroll authorize switch mark nicerank debug}.each { |r| require_relative "#{r}" }
7
7
 
8
+ ##
9
+ # These methods are intended to be called from the CLI.
10
+
8
11
  desc "timeline", "Show your App.net timeline, aka the Unified Stream (-tl)"
9
12
  map "unified" => :timeline
10
13
  map "-tl" => :timeline
@@ -455,11 +458,7 @@ module Ayadn
455
458
  desc "version", "Show the current Ayadn version (-v)"
456
459
  map "-v" => :version
457
460
  def version
458
- puts "\nAYADN\n".color(:red)
459
- puts "Version:\t".color(:cyan) + "#{VERSION}\n".color(:green)
460
- puts "Changelog:\t".color(:cyan) + "https://github.com/ericdke/na/blob/master/CHANGELOG.md\n".color(:yellow)
461
- puts "Docs:\t\t".color(:cyan) + "http://ayadn-app.net/doc/".color(:yellow)
462
- puts "\n"
461
+ Action.new.version
463
462
  end
464
463
 
465
464
  end
@@ -38,13 +38,7 @@ module Ayadn
38
38
  end
39
39
 
40
40
  def self.init(path)
41
- # winPlatforms = ['mswin', 'mingw', 'mingw_18', 'mingw_19', 'mingw_20', 'mingw32']
42
- # case RbConfig::CONFIG['host_os']
43
- # when *winPlatforms
44
- # abort("\nSorry, Ayadn doesn't work on Windows.\n\n".color(:red))
45
- # else
46
41
  Daybreak::DB.new "#{path}"
47
- # end
48
42
  end
49
43
 
50
44
  def self.add_niceranks niceranks
data/lib/ayadn/debug.rb CHANGED
@@ -2,6 +2,12 @@
2
2
  module Ayadn
3
3
  class Debug
4
4
 
5
+ def self.skipped dic
6
+ if Settings.options[:timeline][:show_debug] == true
7
+ Logs.rec.debug "SKIPPED: #{dic.keys.first.to_s.capitalize} => #{dic.values.first}"
8
+ end
9
+ end
10
+
5
11
  def self.http response, url
6
12
  if Settings.options[:timeline][:show_debug] == true
7
13
  # deb = ":::::\n"
@@ -195,10 +195,14 @@ module Ayadn
195
195
  "#{@channels_url}search?q=#{words}&order=popularity&access_token=#{Settings.user_token}#{@options_list}"
196
196
  end
197
197
 
198
- def user(username)
198
+ def user(username) # accepts a string
199
199
  "#{@users_url}#{username}?access_token=#{Settings.user_token}&include_user_annotations=1"
200
200
  end
201
201
 
202
+ def users(usernames) # accepts an array
203
+ "#{@users_url}?ids=#{usernames.join(',')}?access_token=#{Settings.user_token}&include_user_annotations=1"
204
+ end
205
+
202
206
  def single_post(post_id, options)
203
207
  "#{@posts_url}#{post_id}?access_token=#{Settings.user_token}#{API.build_query(options)}"
204
208
  end
data/lib/ayadn/mark.rb CHANGED
@@ -4,6 +4,7 @@ module Ayadn
4
4
 
5
5
  desc "add POST_ID (TITLE)", "Create a bookmark for this conversation"
6
6
  long_desc Descriptions.mark_add
7
+ map "create" => :add
7
8
  def add(*args)
8
9
  begin
9
10
  unless args.empty?
@@ -50,8 +51,6 @@ module Ayadn
50
51
  puts Status.done
51
52
  rescue => e
52
53
  Errors.global_error({error: e, caller: caller, data: [args]})
53
- ensure
54
- Databases.close_all
55
54
  end
56
55
  end
57
56
 
@@ -97,6 +96,7 @@ module Ayadn
97
96
  end
98
97
 
99
98
  desc "delete POST_ID", "Delete entry POST_ID from your bookmarked conversations"
99
+ map "remove" => :delete
100
100
  long_desc Descriptions.mark_delete
101
101
  def delete *args
102
102
  begin
@@ -6,6 +6,39 @@ module Ayadn
6
6
  @url = 'http://api.nice.social/user/nicerank?ids='
7
7
  end
8
8
 
9
+ def get_posts_day ids
10
+ resp = JSON.parse(CNX.get("#{@url}#{ids.join(',')}&show_details=Y"))
11
+ if resp.nil? || resp['meta']['code'] != 200
12
+ []
13
+ else
14
+ resp['data'].map do |obj|
15
+ pday = obj['user']['posts_day'] == -1 ? 0 : obj['user']['posts_day']
16
+ {
17
+ id: obj['user_id'],
18
+ posts_day:pday.round(2)
19
+ }
20
+ end
21
+ end
22
+ end
23
+
24
+ def from_ids ids
25
+ blocs, ranks = [], []
26
+ blank = JSON.parse({'meta' => {'code' => 404}, 'data' => []}.to_json)
27
+ until ids.empty?
28
+ blocs << ids.shift(200)
29
+ end
30
+ blocs.each do |bloc|
31
+ got = CNX.get("#{@url}#{bloc.join(',')}&show_details=Y")
32
+ if got.nil? || got.empty?
33
+ ranks << [{}]
34
+ else
35
+ resps = JSON.parse(got)
36
+ ranks << resps['data']
37
+ end
38
+ end
39
+ return ranks.flatten!
40
+ end
41
+
9
42
  def get_ranks stream
10
43
  user_ids, get_these, table, niceranks = [], [], {}, {}
11
44
 
@@ -16,16 +49,7 @@ module Ayadn
16
49
  user_ids.uniq!
17
50
 
18
51
  db_ranks = Databases.get_niceranks user_ids
19
- if Settings.options[:nicerank].nil?
20
- expire = 172800 # 48h
21
- else
22
- if Settings.options[:nicerank][:cache].nil?
23
- Settings.options[:nicerank][:cache] = 48
24
- expire = 172800
25
- else
26
- expire = Settings.options[:nicerank][:cache] * 3600
27
- end
28
- end
52
+ expire = Settings.options[:nicerank][:cache] * 3600 # Time.now needs seconds
29
53
 
30
54
  db_ranks.each do |id, ranks|
31
55
  if ranks.nil? || (Time.now - ranks[:cached]) > expire
data/lib/ayadn/post.rb CHANGED
@@ -44,6 +44,26 @@ module Ayadn
44
44
 
45
45
  def payload_nowplaying dic
46
46
  ann = annotations()
47
+ if dic['visible'] == true
48
+ ann << {
49
+ "type" => "com.ayadn.nowplaying",
50
+ "value" => {
51
+ "title" => dic['title'],
52
+ "artist" => dic['artist'],
53
+ "artwork" => dic['artwork'],
54
+ "link" => dic['link'],
55
+ "source" => dic['source']
56
+ }
57
+ }
58
+ else
59
+ ann << {
60
+ "type" => "com.ayadn.nowplaying",
61
+ "value" => {
62
+ "status" => "no-url",
63
+ "source" => dic['source']
64
+ }
65
+ }
66
+ end
47
67
  if dic['visible'] == true
48
68
  ann << {
49
69
  "type" => "net.app.core.oembed",
data/lib/ayadn/set.rb CHANGED
@@ -71,12 +71,6 @@ module Ayadn
71
71
  counts_config.save
72
72
  end
73
73
 
74
- # desc "format ITEM NUMBER", "Set ITEM parameter to NUMBER by default"
75
- # map "formats" => :format
76
- # def format(*args)
77
- # puts args
78
- # end
79
-
80
74
  desc "color ITEM COLOR", "Set ITEM to COLOR"
81
75
  long_desc Descriptions.set_color
82
76
  map "colors" => :color
@@ -160,17 +154,6 @@ module Ayadn
160
154
  Settings.get_token
161
155
  Settings.init_config
162
156
  Logs.create_logger
163
- unless Settings.options[:nicerank]
164
- Settings.options[:nicerank] = {
165
- threshold: 2.1,
166
- cache: 48,
167
- filter: true,
168
- filter_unranked: false
169
- }
170
- end
171
- unless Settings.options[:colors][:nicerank]
172
- Settings.options[:colors][:nicerank] = :cyan
173
- end
174
157
  end
175
158
  def log(args)
176
159
  x = "New value for '#{args[0]}' in 'NiceRank' => #{"%1.1f" % args[1].to_f}"
@@ -382,26 +365,10 @@ module Ayadn
382
365
  def show_date(value)
383
366
  Settings.options[:timeline][:show_date] = value
384
367
  end
385
- def show_nicerank value
386
- unless Settings.options[:nicerank]
387
- Settings.options[:nicerank] = {
388
- threshold: 2.1,
389
- filter: true,
390
- filter_unranked: false
391
- }
392
- end
393
- unless Settings.options[:colors][:nicerank]
394
- Settings.options[:colors][:nicerank] = :cyan
395
- end
396
- Settings.options[:timeline][:show_nicerank] = value
397
- end
398
368
  def show_spinner value
399
369
  Settings.options[:timeline][:show_spinner] = value
400
370
  end
401
371
  def show_debug value
402
- unless Settings.options[:colors][:debug]
403
- Settings.options[:colors][:debug] = :cyan
404
- end
405
372
  Settings.options[:timeline][:show_debug] = value
406
373
  end
407
374
  end
@@ -491,9 +458,5 @@ module Ayadn
491
458
  def debug(color)
492
459
  Settings.options[:colors][:debug] = color.to_sym
493
460
  end
494
-
495
- def nicerank(color)
496
- Settings.options[:colors][:nicerank] = color.to_sym
497
- end
498
461
  end
499
462
  end
@@ -6,7 +6,7 @@ module Ayadn
6
6
 
7
7
  class << self
8
8
  attr_accessor :options, :config
9
- attr_reader :user_token
9
+ attr_reader :user_token, :default_nr
10
10
  end
11
11
 
12
12
  def self.load_config
@@ -35,6 +35,12 @@ module Ayadn
35
35
  handle: db[active][:handle]
36
36
  }
37
37
  }
38
+ @default_nr = {
39
+ threshold: 2.1,
40
+ cache: 48,
41
+ filter: true,
42
+ filter_unranked: false
43
+ }
38
44
  db.close
39
45
  @options = self.defaults
40
46
  end
@@ -78,9 +84,21 @@ module Ayadn
78
84
  def self.config_file
79
85
  config_file = @config[:paths][:config] + "/config.yml"
80
86
  if File.exist?(config_file)
81
- # TODO: system to merge existing config file when future category are added
82
87
  begin
83
- @options = YAML.load(File.read(config_file))
88
+ conf = YAML.load(File.read(config_file))
89
+
90
+ # force delete obsolete keys (because legacy versions of the config file)
91
+ conf[:timeline].delete_if {|k,_| k == :show_nicerank}
92
+ conf[:colors].delete_if {|k,_| k == :nicerank}
93
+ # force create mandatory keys (idem)
94
+ conf[:nicerank] = @default_nr if conf[:nicerank].nil? || conf[:nicerank].size != 4
95
+ conf[:timeline][:show_debug] = false if conf[:timeline][:show_debug].nil?
96
+ conf[:timeline][:show_spinner] = true if conf[:timeline][:show_spinner].nil?
97
+ conf[:colors][:debug] = :red if conf[:colors][:debug].nil?
98
+ conf[:nowplaying] = {} if conf[:nowplaying].nil?
99
+
100
+ @options = conf
101
+ self.write_config_file(config_file, @options)
84
102
  rescue => e
85
103
  Errors.global_error({error: e, caller: caller, data: []})
86
104
  end
@@ -152,27 +170,26 @@ module Ayadn
152
170
  show_symbols: true,
153
171
  show_real_name: true,
154
172
  show_date: true,
155
- show_nicerank: false,
156
173
  show_spinner: true,
157
174
  show_debug: false
158
175
  },
159
176
  counts: {
160
177
  default: 50,
161
- unified: 50,
162
- global: 50,
163
- checkins: 50,
178
+ unified: 100,
179
+ global: 100,
180
+ checkins: 100,
164
181
  conversations: 50,
165
182
  photos: 50,
166
- trending: 50,
167
- mentions: 50,
168
- convo: 50,
169
- posts: 50,
183
+ trending: 100,
184
+ mentions: 100,
185
+ convo: 100,
186
+ posts: 100,
170
187
  messages: 50,
171
- search: 100,
188
+ search: 200,
172
189
  whoreposted: 50,
173
190
  whostarred: 50,
174
191
  whatstarred: 100,
175
- files: 66
192
+ files: 100
176
193
  },
177
194
  formats: {
178
195
  table: {
@@ -191,7 +208,6 @@ module Ayadn
191
208
  mentions: :red,
192
209
  source: :cyan,
193
210
  symbols: :green,
194
- nicerank: :cyan,
195
211
  debug: :red
196
212
  },
197
213
  backup: {
@@ -202,12 +218,8 @@ module Ayadn
202
218
  scroll: {
203
219
  timer: 3
204
220
  },
205
- nicerank: {
206
- threshold: 2.1,
207
- cache: 48,
208
- filter: true,
209
- filter_unranked: false
210
- }
221
+ nicerank: @default_nr,
222
+ nowplaying: {}
211
223
  }
212
224
  end
213
225
 
data/lib/ayadn/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Ayadn
3
- VERSION = "1.4.6"
3
+ VERSION = "1.5.0"
4
4
  end