ayadn 3.0 → 4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -4
- data/CHANGELOG.md +12 -4
- data/README.md +2 -5
- data/ayadn.gemspec +0 -2
- data/doc/01-index.md +0 -3
- data/doc/02-install.md +0 -4
- data/doc/06-post.md +0 -16
- data/doc/{18-contact.md → 16-contact.md} +0 -0
- data/doc/{19-examples.md → 17-examples.md} +0 -0
- data/doc/18-develop.md +165 -0
- data/lib/ayadn/action.rb +206 -396
- data/lib/ayadn/alias.rb +1 -1
- data/lib/ayadn/annotations.rb +15 -27
- data/lib/ayadn/api.rb +39 -28
- data/lib/ayadn/app.rb +19 -29
- data/lib/ayadn/authorize.rb +22 -13
- data/lib/ayadn/blacklist.rb +6 -19
- data/lib/ayadn/channel_object.rb +75 -0
- data/lib/ayadn/check.rb +19 -11
- data/lib/ayadn/cnx.rb +9 -15
- data/lib/ayadn/databases.rb +15 -27
- data/lib/ayadn/debug.rb +9 -9
- data/lib/ayadn/descriptions.rb +1 -99
- data/lib/ayadn/diagnostics.rb +16 -15
- data/lib/ayadn/endpoints.rb +18 -22
- data/lib/ayadn/errors.rb +1 -1
- data/lib/ayadn/fileops.rb +12 -12
- data/lib/ayadn/filtered_post_object.rb +11 -0
- data/lib/ayadn/ids.rb +0 -3
- data/lib/ayadn/logs.rb +4 -4
- data/lib/ayadn/mark.rb +34 -30
- data/lib/ayadn/nicerank.rb +7 -7
- data/lib/ayadn/nowplaying.rb +8 -22
- data/lib/ayadn/pinboard.rb +8 -12
- data/lib/ayadn/post.rb +18 -18
- data/lib/ayadn/post_object.rb +118 -0
- data/lib/ayadn/preferences_object.rb +290 -0
- data/lib/ayadn/profile.rb +2 -2
- data/lib/ayadn/scroll.rb +58 -67
- data/lib/ayadn/search.rb +22 -15
- data/lib/ayadn/set.rb +93 -83
- data/lib/ayadn/settings.rb +25 -33
- data/lib/ayadn/status.rb +24 -26
- data/lib/ayadn/stream.rb +68 -66
- data/lib/ayadn/stream_object.rb +56 -0
- data/lib/ayadn/switch.rb +2 -2
- data/lib/ayadn/user_object.rb +116 -0
- data/lib/ayadn/version.rb +1 -1
- data/lib/ayadn/view.rb +255 -278
- data/lib/ayadn/workers.rb +172 -174
- data/spec/integration/action_spec.rb +55 -34
- data/spec/mock/ayadn.sqlite +0 -0
- data/spec/unit/annotations_spec.rb +54 -41
- data/spec/unit/api_spec.rb +78 -7
- data/spec/unit/blacklistworkers_spec.rb +92 -20
- data/spec/unit/databases_spec.rb +117 -36
- data/spec/unit/endpoints_spec.rb +82 -10
- data/spec/unit/nicerank_spec.rb +56 -27
- data/spec/unit/post_spec.rb +94 -21
- data/spec/unit/set_spec.rb +141 -210
- data/spec/unit/view_spec.rb +105 -32
- data/spec/unit/workers_spec.rb +143 -52
- metadata +12 -37
- data/doc/16-movie.md +0 -39
- data/doc/17-tvshow.md +0 -46
- data/lib/ayadn/nowwatching.rb +0 -118
- data/lib/ayadn/tvshow.rb +0 -162
data/lib/ayadn/blacklist.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module Ayadn
|
3
3
|
class Blacklist < Thor
|
4
|
+
|
4
5
|
desc "add TYPE TARGET", "Adds a mention, hashtag, client, username or keyword to your blacklist"
|
5
6
|
map "create" => :add
|
6
7
|
long_desc Descriptions.blacklist_add
|
@@ -33,12 +34,6 @@ module Ayadn
|
|
33
34
|
BlacklistWorkers.new.list(options)
|
34
35
|
end
|
35
36
|
|
36
|
-
# desc "import DATABASE", "Imports a blacklist database from another Ayadn account"
|
37
|
-
# long_desc Descriptions.blacklist_import
|
38
|
-
# def import(database)
|
39
|
-
# BlacklistWorkers.new.import(database)
|
40
|
-
# end
|
41
|
-
|
42
37
|
desc "clear", "Clear your blacklist database"
|
43
38
|
def clear
|
44
39
|
BlacklistWorkers.new.clear
|
@@ -56,18 +51,7 @@ module Ayadn
|
|
56
51
|
Databases.open_databases
|
57
52
|
@workers = Workers.new
|
58
53
|
end
|
59
|
-
|
60
|
-
# begin
|
61
|
-
# new_db = File.realpath(database)
|
62
|
-
# if File.exist?(new_db)
|
63
|
-
# Databases.import_blacklist(new_db)
|
64
|
-
# Logs.rec.info "Imported '#{new_db}' values in blacklist database."
|
65
|
-
# else
|
66
|
-
# puts "\nFile '#{new_db}' doesn't exist.\n\n".color(:red)
|
67
|
-
# Logs.rec.warn "File '#{new_db}' doesn't exist."
|
68
|
-
# end
|
69
|
-
# end
|
70
|
-
# end
|
54
|
+
|
71
55
|
def clear
|
72
56
|
begin
|
73
57
|
Status.new.ask_clear_blacklist
|
@@ -81,6 +65,7 @@ module Ayadn
|
|
81
65
|
end
|
82
66
|
end
|
83
67
|
end
|
68
|
+
|
84
69
|
def add(args)
|
85
70
|
begin
|
86
71
|
type = args.shift
|
@@ -110,6 +95,7 @@ module Ayadn
|
|
110
95
|
end
|
111
96
|
end
|
112
97
|
end
|
98
|
+
|
113
99
|
def remove(args)
|
114
100
|
begin
|
115
101
|
type = args.shift
|
@@ -137,9 +123,10 @@ module Ayadn
|
|
137
123
|
end
|
138
124
|
end
|
139
125
|
end
|
126
|
+
|
140
127
|
def list(options)
|
141
128
|
begin
|
142
|
-
Settings.options
|
129
|
+
Settings.options.timeline.compact = true if options[:compact]
|
143
130
|
show_list(options)
|
144
131
|
end
|
145
132
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Ayadn
|
3
|
+
|
4
|
+
class ChannelReadersObject
|
5
|
+
|
6
|
+
attr_reader :input, :you, :any_user, :public, :immutable
|
7
|
+
|
8
|
+
def initialize hash
|
9
|
+
@input = hash
|
10
|
+
@you = @input["you"]
|
11
|
+
@any_user = @input["any_user"]
|
12
|
+
@public = @input["public"]
|
13
|
+
@immutable = @input["immutable"]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class ChannelEditorsObject
|
18
|
+
|
19
|
+
attr_reader :input, :you, :any_user, :public, :immutable, :user_ids
|
20
|
+
|
21
|
+
def initialize hash
|
22
|
+
@input = hash
|
23
|
+
@you = @input["you"]
|
24
|
+
@any_user = @input["any_user"]
|
25
|
+
@public = @input["public"]
|
26
|
+
@immutable = @input["immutable"]
|
27
|
+
@user_ids = @input["user_ids"]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class ChannelCountsObject
|
32
|
+
|
33
|
+
attr_reader :input, :messages, :subscribers
|
34
|
+
|
35
|
+
def initialize hash
|
36
|
+
@input = hash
|
37
|
+
@messages = @input["messages"]
|
38
|
+
@subscribers = @input["subscribers"]
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
class ChannelObject
|
44
|
+
|
45
|
+
attr_reader :input, :pagination_id, :is_inactive, :readers, :you_muted, :you_can_edit, :has_unread, :editors, :annotations, :recent_message_id, :writers, :you_subscribed, :owner, :type, :id, :counts, :recent_message
|
46
|
+
|
47
|
+
def initialize hash
|
48
|
+
@input = hash
|
49
|
+
@pagination_id = @input["pagination_id"]
|
50
|
+
@is_inactive = @input["is_inactive"]
|
51
|
+
@readers = ChannelReadersObject.new(@input["readers"])
|
52
|
+
@you_muted = @input["you_muted"]
|
53
|
+
@you_can_edit = @input["you_can_edit"]
|
54
|
+
@has_unread = @input["has_unread"]
|
55
|
+
@editors = ChannelEditorsObject.new(@input["editors"])
|
56
|
+
@annotations = @input["annotations"].map { |ann| PostAnnotationObject.new(ann) }
|
57
|
+
@recent_message_id = @input["recent_message_id"]
|
58
|
+
@writers = ChannelEditorsObject.new(@input["writers"])
|
59
|
+
@you_subscribed = @input["you_subscribed"]
|
60
|
+
@owner = @input["owner"].nil? ? nil : UserObject.new(@input["owner"])
|
61
|
+
@type = @input["type"]
|
62
|
+
@id = @input["id"]
|
63
|
+
@counts = ChannelCountsObject.new(@input["counts"])
|
64
|
+
@recent_message = @input["recent_message"].nil? ? nil : PostObject.new(@input["recent_message"])
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
data/lib/ayadn/check.rb
CHANGED
@@ -3,24 +3,24 @@ module Ayadn
|
|
3
3
|
|
4
4
|
class Check
|
5
5
|
|
6
|
-
def initialize
|
7
|
-
@status =
|
6
|
+
def initialize status = Status.new
|
7
|
+
@status = status
|
8
8
|
end
|
9
9
|
|
10
|
-
def same_username(
|
11
|
-
|
10
|
+
def same_username(user_object)
|
11
|
+
user_object.username == Settings.config.identity.username
|
12
12
|
end
|
13
13
|
|
14
14
|
def auto_save_muted(list)
|
15
|
-
FileOps.save_muted_list(list) if Settings.options
|
15
|
+
FileOps.save_muted_list(list) if Settings.options.backup.lists
|
16
16
|
end
|
17
17
|
|
18
18
|
def auto_save_followers(list)
|
19
|
-
FileOps.save_followers_list(list) if Settings.options
|
19
|
+
FileOps.save_followers_list(list) if Settings.options.backup.lists
|
20
20
|
end
|
21
21
|
|
22
22
|
def auto_save_followings(list)
|
23
|
-
FileOps.save_followings_list(list) if Settings.options
|
23
|
+
FileOps.save_followings_list(list) if Settings.options.backup.lists
|
24
24
|
end
|
25
25
|
|
26
26
|
def no_username username
|
@@ -31,7 +31,7 @@ module Ayadn
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def no_data stream, target
|
34
|
-
if stream
|
34
|
+
if stream.posts.empty?
|
35
35
|
Errors.warn "In action/#{target}: no data"
|
36
36
|
@status.empty_list
|
37
37
|
exit
|
@@ -39,7 +39,7 @@ module Ayadn
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def no_new_posts stream, options, title
|
42
|
-
if options[:new]
|
42
|
+
if options[:new]
|
43
43
|
unless Databases.has_new?(stream, title)
|
44
44
|
@status.no_new_posts
|
45
45
|
exit
|
@@ -48,7 +48,15 @@ module Ayadn
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def no_post stream, post_id
|
51
|
-
if stream
|
51
|
+
if stream.meta.code == 404
|
52
|
+
@status.post_404(post_id)
|
53
|
+
Errors.info("Impossible to find #{post_id}")
|
54
|
+
exit
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def no_details stream, post_id
|
59
|
+
if stream["meta"]["code"] == 404
|
52
60
|
@status.post_404(post_id)
|
53
61
|
Errors.info("Impossible to find #{post_id}")
|
54
62
|
exit
|
@@ -72,7 +80,7 @@ module Ayadn
|
|
72
80
|
end
|
73
81
|
|
74
82
|
def no_user stream, username
|
75
|
-
if stream
|
83
|
+
if stream.meta.code == 404
|
76
84
|
@status.user_404(username)
|
77
85
|
Errors.info("User #{username} doesn't exist")
|
78
86
|
exit
|
data/lib/ayadn/cnx.rb
CHANGED
@@ -9,7 +9,7 @@ module Ayadn
|
|
9
9
|
rescue RestClient::RequestTimeout => e
|
10
10
|
thor = Thor::Shell::Color.new
|
11
11
|
thor.say_status :error, "connection timeout", :red
|
12
|
-
if working
|
12
|
+
if working
|
13
13
|
working = false
|
14
14
|
thor.say_status :info, "trying again", :yellow
|
15
15
|
retry
|
@@ -17,7 +17,7 @@ module Ayadn
|
|
17
17
|
Errors.global_error({error: e, caller: caller, data: [url]})
|
18
18
|
rescue SocketError, SystemCallError, OpenSSL::SSL::SSLError => e
|
19
19
|
thor = Thor::Shell::Color.new
|
20
|
-
if working
|
20
|
+
if working
|
21
21
|
working = false
|
22
22
|
thor.say_status :error, "'#{url}' didn't respond", :red
|
23
23
|
thor.say_status :info, "trying again in 5 secs", :yellow
|
@@ -45,7 +45,7 @@ module Ayadn
|
|
45
45
|
check_nr response, url
|
46
46
|
end
|
47
47
|
rescue SocketError, SystemCallError, OpenSSL::SSL::SSLError, RestClient::RequestTimeout => e
|
48
|
-
if working
|
48
|
+
if working
|
49
49
|
working = false
|
50
50
|
sleep 0.5
|
51
51
|
retry
|
@@ -84,8 +84,7 @@ module Ayadn
|
|
84
84
|
check response
|
85
85
|
end
|
86
86
|
rescue RestClient::RequestTimeout => e
|
87
|
-
|
88
|
-
thor.say_status :error, "connection timeout", :red
|
87
|
+
Thor::Shell::Color.new.say_status :error, "connection timeout", :red
|
89
88
|
if try_cnx < 4
|
90
89
|
try_cnx = retry_adn 5, try_cnx
|
91
90
|
retry
|
@@ -102,9 +101,8 @@ module Ayadn
|
|
102
101
|
Thor::Shell::Color.new.say_status :error, "connection or authorization problem", :red
|
103
102
|
Errors.global_error({error: e, caller: caller, data: [url]})
|
104
103
|
rescue Interrupt
|
105
|
-
thor = Thor::Shell::Color.new
|
106
104
|
puts "\n"
|
107
|
-
|
105
|
+
Thor::Shell::Color.new.say_status :canceled, "connection canceled", :red
|
108
106
|
puts "\n"
|
109
107
|
exit
|
110
108
|
rescue => e
|
@@ -155,9 +153,8 @@ module Ayadn
|
|
155
153
|
Thor::Shell::Color.new.say_status :error, "connection problem", :red
|
156
154
|
Errors.global_error({error: e, caller: caller, data: [url]})
|
157
155
|
rescue Interrupt
|
158
|
-
thor = Thor::Shell::Color.new
|
159
156
|
puts "\n"
|
160
|
-
|
157
|
+
Thor::Shell::Color.new.say_status :canceled, "connection canceled", :red
|
161
158
|
puts "\n"
|
162
159
|
exit
|
163
160
|
rescue => e
|
@@ -175,9 +172,8 @@ module Ayadn
|
|
175
172
|
Thor::Shell::Color.new.say_status :error, "connection problem", :red
|
176
173
|
Errors.global_error({error: e, caller: caller, data: [url, payload]})
|
177
174
|
rescue Interrupt
|
178
|
-
thor = Thor::Shell::Color.new
|
179
175
|
puts "\n"
|
180
|
-
|
176
|
+
Thor::Shell::Color.new.say_status :canceled, "connection canceled", :red
|
181
177
|
puts "\n"
|
182
178
|
exit
|
183
179
|
rescue => e
|
@@ -195,9 +191,8 @@ module Ayadn
|
|
195
191
|
Thor::Shell::Color.new.say_status :error, "connection problem", :red
|
196
192
|
Errors.global_error({error: e, caller: caller, data: [url, payload]})
|
197
193
|
rescue Interrupt
|
198
|
-
thor = Thor::Shell::Color.new
|
199
194
|
puts "\n"
|
200
|
-
|
195
|
+
Thor::Shell::Color.new.say_status :canceled, "connection canceled", :red
|
201
196
|
puts "\n"
|
202
197
|
exit
|
203
198
|
rescue => e
|
@@ -215,9 +210,8 @@ module Ayadn
|
|
215
210
|
Thor::Shell::Color.new.say_status :error, "connection problem", :red
|
216
211
|
Errors.global_error({error: e, caller: caller, data: [url, payload]})
|
217
212
|
rescue Interrupt
|
218
|
-
thor = Thor::Shell::Color.new
|
219
213
|
puts "\n"
|
220
|
-
|
214
|
+
Thor::Shell::Color.new.say_status :canceled, "connection canceled", :red
|
221
215
|
puts "\n"
|
222
216
|
exit
|
223
217
|
rescue => e
|
data/lib/ayadn/databases.rb
CHANGED
@@ -4,7 +4,7 @@ module Ayadn
|
|
4
4
|
class Databases
|
5
5
|
|
6
6
|
def self.open_databases
|
7
|
-
@sqlfile = "#{Settings.config
|
7
|
+
@sqlfile = "#{Settings.config.paths.db}/ayadn.sqlite"
|
8
8
|
@sql = Amalgalite::Database.new(@sqlfile)
|
9
9
|
@accounts = Amalgalite::Database.new(Dir.home + "/ayadn/accounts.sqlite")
|
10
10
|
end
|
@@ -178,20 +178,6 @@ module Ayadn
|
|
178
178
|
end
|
179
179
|
end
|
180
180
|
|
181
|
-
# def self.import_blacklist(blacklist)
|
182
|
-
# new_list = self.init blacklist
|
183
|
-
# new_list.each {|name,type| @blacklist[name] = type}
|
184
|
-
# new_list.close
|
185
|
-
# end
|
186
|
-
# def self.convert_blacklist
|
187
|
-
# dummy = {}
|
188
|
-
# @blacklist.each {|v,k| dummy[v.downcase] = k}
|
189
|
-
# @blacklist.clear
|
190
|
-
# dummy.each {|v,k| @blacklist[v] = k}
|
191
|
-
# end
|
192
|
-
|
193
|
-
|
194
|
-
|
195
181
|
def self.active_account(acc)
|
196
182
|
crashes = 0
|
197
183
|
begin
|
@@ -628,12 +614,14 @@ module Ayadn
|
|
628
614
|
@sql.execute("DELETE FROM TLIndex")
|
629
615
|
@sql.transaction do |db_in_transaction|
|
630
616
|
posts.each do |k, v|
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
617
|
+
if !v.blank?
|
618
|
+
insert_data = {}
|
619
|
+
insert_data[":post_id"] = v[:id]
|
620
|
+
insert_data[":count"] = v[:count]
|
621
|
+
insert_data[":content"] = v.to_json.to_s
|
622
|
+
db_in_transaction.prepare("INSERT INTO TLIndex(count, post_id, content) VALUES(:count, :post_id, :content);") do |insert|
|
623
|
+
insert.execute(insert_data)
|
624
|
+
end
|
637
625
|
end
|
638
626
|
end
|
639
627
|
end
|
@@ -871,7 +859,7 @@ module Ayadn
|
|
871
859
|
crashes = 0
|
872
860
|
begin
|
873
861
|
res = @sql.execute("SELECT post_id FROM Pagination WHERE name=(?)", [title]).flatten[0]
|
874
|
-
stream
|
862
|
+
stream.meta.max_id.to_i > res.to_i
|
875
863
|
rescue Amalgalite::SQLite3::Error => e
|
876
864
|
if crashes < 2
|
877
865
|
crashes += 1
|
@@ -881,7 +869,7 @@ module Ayadn
|
|
881
869
|
puts "ERROR in Databases"
|
882
870
|
puts caller
|
883
871
|
puts e
|
884
|
-
puts ['has_new?', stream, title].inspect
|
872
|
+
puts ['has_new?', stream.inspect, title].inspect
|
885
873
|
exit
|
886
874
|
end
|
887
875
|
end
|
@@ -890,13 +878,13 @@ module Ayadn
|
|
890
878
|
def self.save_max_id(stream, name = 'unknown')
|
891
879
|
crashes = 0
|
892
880
|
begin
|
893
|
-
if stream
|
881
|
+
if stream.meta.marker.nil?
|
894
882
|
key = name
|
895
883
|
else
|
896
|
-
key = stream
|
884
|
+
key = stream.meta.marker.name
|
897
885
|
end
|
898
886
|
@sql.execute("DELETE FROM Pagination WHERE name=(?)", [key])
|
899
|
-
@sql.execute("INSERT INTO Pagination(name, post_id) VALUES(?, ?);", [key, stream
|
887
|
+
@sql.execute("INSERT INTO Pagination(name, post_id) VALUES(?, ?);", [key, stream.meta.max_id.to_i])
|
900
888
|
rescue Amalgalite::SQLite3::Error => e
|
901
889
|
if crashes < 2
|
902
890
|
crashes += 1
|
@@ -906,7 +894,7 @@ module Ayadn
|
|
906
894
|
puts "ERROR in Databases"
|
907
895
|
puts caller
|
908
896
|
puts e
|
909
|
-
puts ['save_max_id', stream, name].inspect
|
897
|
+
puts ['save_max_id', stream.inspect, name].inspect
|
910
898
|
exit
|
911
899
|
end
|
912
900
|
end
|
data/lib/ayadn/debug.rb
CHANGED
@@ -3,13 +3,13 @@ module Ayadn
|
|
3
3
|
class Debug
|
4
4
|
|
5
5
|
def self.skipped dic
|
6
|
-
if Settings.options
|
6
|
+
if Settings.options.timeline.debug
|
7
7
|
Logs.rec.debug "SKIPPED: #{dic.keys.first.to_s.capitalize} => #{dic.values.first}"
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.http response, url
|
12
|
-
if Settings.options
|
12
|
+
if Settings.options.timeline.debug
|
13
13
|
deb = "\n"
|
14
14
|
deb << "+ HTTP\n"
|
15
15
|
deb << "* t#{Time.now.to_i}\n"
|
@@ -24,7 +24,7 @@ module Ayadn
|
|
24
24
|
|
25
25
|
def self.err error, stack
|
26
26
|
# Logs.rec.debug "+DEBUG STACK: #{stack}"
|
27
|
-
if Settings.options
|
27
|
+
if Settings.options.timeline.debug
|
28
28
|
puts "\nDEBUG:\n"
|
29
29
|
puts error.inspect
|
30
30
|
raise error
|
@@ -35,20 +35,20 @@ module Ayadn
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def self.stream(stream, options, target)
|
38
|
-
if Settings.options
|
38
|
+
if Settings.options.timeline.debug
|
39
39
|
deb = "\n"
|
40
40
|
deb << "+ STREAM\n"
|
41
41
|
deb << "* t#{Time.now.to_i}\n"
|
42
42
|
deb << "Options:\t#{options.inspect}\n"
|
43
43
|
deb << "Target:\t\t#{target.inspect}\n"
|
44
|
-
deb << "Posts:\t\t#{stream
|
45
|
-
deb << "Meta:\t\t#{stream
|
44
|
+
deb << "Posts:\t\t#{stream.posts.length}\n"
|
45
|
+
deb << "Meta:\t\t#{stream.meta.input.inspect}\n"
|
46
46
|
deb << "\n"
|
47
|
-
puts deb.color(Settings.options
|
48
|
-
Logs.rec.debug "STREAM/META: #{stream
|
47
|
+
puts deb.color(Settings.options.colors.debug)
|
48
|
+
Logs.rec.debug "STREAM/META: #{stream.meta.input.inspect}"
|
49
49
|
Logs.rec.debug "STREAM/OPTIONS: #{options.inspect}"
|
50
50
|
Logs.rec.debug "STREAM/TARGET: #{target.inspect}"
|
51
|
-
Logs.rec.debug "STREAM/POSTS: #{stream
|
51
|
+
Logs.rec.debug "STREAM/POSTS: #{stream.posts.length}"
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|