ayadn 1.4.6 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
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