ayadn 1.4.6 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/CHANGELOG.md +14 -1
- data/README.md +38 -13
- data/ayadn.gemspec +2 -2
- data/doc/01-index.md +38 -0
- data/doc/02-install.md +24 -0
- data/doc/03-first-steps.md +161 -0
- data/doc/04-options.md +13 -0
- data/doc/05-streams.md +288 -0
- data/doc/06-post.md +109 -0
- data/doc/07-actions.md +115 -0
- data/doc/08-listings.md +85 -0
- data/doc/09-accounts.md +33 -0
- data/doc/10-nicerank.md +58 -0
- data/doc/11-blacklist.md +85 -0
- data/doc/12-alias.md +57 -0
- data/doc/13-bookmark.md +51 -0
- data/doc/14-set.md +139 -0
- data/doc/15-nowplaying.md +23 -0
- data/doc/16-contact.md +29 -0
- data/doc/17-shortcuts.md +8 -0
- data/doc/18-examples.md +43 -0
- data/lib/ayadn/action.rb +147 -88
- data/lib/ayadn/api.rb +19 -37
- data/lib/ayadn/app.rb +4 -5
- data/lib/ayadn/databases.rb +0 -6
- data/lib/ayadn/debug.rb +6 -0
- data/lib/ayadn/endpoints.rb +5 -1
- data/lib/ayadn/mark.rb +2 -2
- data/lib/ayadn/nicerank.rb +34 -10
- data/lib/ayadn/post.rb +20 -0
- data/lib/ayadn/set.rb +0 -37
- data/lib/ayadn/settings.rb +32 -20
- data/lib/ayadn/version.rb +1 -1
- data/lib/ayadn/view.rb +52 -32
- data/lib/ayadn/workers.rb +54 -15
- data/spec/unit/api_spec.rb +0 -27
- data/spec/unit/view_spec.rb +11 -11
- data/spec/unit/workers_spec.rb +46 -47
- metadata +23 -5
data/doc/12-alias.md
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# ALIAS
|
2
|
+
|
3
|
+
Aliases are names you give to channels for an easier access.
|
4
|
+
|
5
|
+
Available subcommands: create, delete, list, import.
|
6
|
+
|
7
|
+
Example: you're a [Paste-App](http://paste-app.net/) user and your personal Paste-App channel is 46216.
|
8
|
+
|
9
|
+
Instead of getting this channel's messages with
|
10
|
+
|
11
|
+
`ayadn -ms 46216`
|
12
|
+
|
13
|
+
you can create an alias:
|
14
|
+
|
15
|
+
`ayadn alias create 46216 pasteapp`
|
16
|
+
|
17
|
+
or
|
18
|
+
|
19
|
+
`ayadn -A create 46216 pasteapp`
|
20
|
+
|
21
|
+
Then you can access this channel with
|
22
|
+
|
23
|
+
`ayadn -ms pasteapp`
|
24
|
+
|
25
|
+
Words are easier to remember than numbers!
|
26
|
+
|
27
|
+
## CREATE
|
28
|
+
|
29
|
+
Create an alias for a channel.
|
30
|
+
|
31
|
+
`ayadn alias create 46216 pasteapp`
|
32
|
+
|
33
|
+
`ayadn -A create 46216 pasteapp`
|
34
|
+
|
35
|
+
## DELETE
|
36
|
+
|
37
|
+
Delete a channel alias.
|
38
|
+
|
39
|
+
`ayadn alias delete pasteapp`
|
40
|
+
|
41
|
+
`ayadn -A delete pasteapp`
|
42
|
+
|
43
|
+
## LIST
|
44
|
+
|
45
|
+
List all your channel aliases.
|
46
|
+
|
47
|
+
`ayadn alias list`
|
48
|
+
|
49
|
+
`ayadn -A list`
|
50
|
+
|
51
|
+
## IMPORT
|
52
|
+
|
53
|
+
Import a previously backed-up list of aliases.
|
54
|
+
|
55
|
+
`ayadn alias import '/Users/blah/backups/aliases.db'`
|
56
|
+
|
57
|
+
`ayadn -A import '/Users/blah/backups/aliases.db'`
|
data/doc/13-bookmark.md
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# BOOKMARK
|
2
|
+
|
3
|
+
Bookmark a conversation, list and delete bookmarks.
|
4
|
+
|
5
|
+
Usage:
|
6
|
+
|
7
|
+
`ayadn mark add 30594331`
|
8
|
+
|
9
|
+
`ayadn mark add 30594331 'convo title'`
|
10
|
+
|
11
|
+
`ayadn mark list`
|
12
|
+
|
13
|
+
`ayadn mark delete 30594331`
|
14
|
+
|
15
|
+
`ayadn mark rename 30594331 'other name'`
|
16
|
+
|
17
|
+
## ADD
|
18
|
+
|
19
|
+
Add a conversation to your bookmarks.
|
20
|
+
|
21
|
+
Usage:
|
22
|
+
|
23
|
+
`ayadn mark add 30594331`
|
24
|
+
|
25
|
+
`ayadn mark add 30594331 'convo title'`
|
26
|
+
|
27
|
+
You don't have to specify the root post of the conversation, any post within the thread will work.
|
28
|
+
|
29
|
+
## DELETE
|
30
|
+
|
31
|
+
Delete entry from your bookmarked conversations.
|
32
|
+
|
33
|
+
Usage:
|
34
|
+
|
35
|
+
`ayadn mark delete 30594331`
|
36
|
+
|
37
|
+
## LIST
|
38
|
+
|
39
|
+
List your bookmarked conversations.
|
40
|
+
|
41
|
+
Usage:
|
42
|
+
|
43
|
+
`ayadn mark list`
|
44
|
+
|
45
|
+
## RENAME
|
46
|
+
|
47
|
+
Rename a bookmarked conversation.
|
48
|
+
|
49
|
+
Usage:
|
50
|
+
|
51
|
+
`ayadn mark rename 30594331 'new title'`
|
data/doc/14-set.md
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
# SET
|
2
|
+
|
3
|
+
The 'set' commands allows you to configure some Ayadn parameters.
|
4
|
+
|
5
|
+
`ayadn set color mentions blue`
|
6
|
+
|
7
|
+
You can get a list of configurable parameters with
|
8
|
+
|
9
|
+
`ayadn -sg`
|
10
|
+
|
11
|
+
## EXAMPLES
|
12
|
+
|
13
|
+
`ayadn set color username green`
|
14
|
+
|
15
|
+
`ayadn set color mentions yellow`
|
16
|
+
|
17
|
+
`ayadn set counts default 30`
|
18
|
+
|
19
|
+
`ayadn set counts search 100`
|
20
|
+
|
21
|
+
`ayadn set timeline directed false`
|
22
|
+
|
23
|
+
`ayadn set timeline show_real_name false`
|
24
|
+
|
25
|
+
`ayadn set timeline show_date false`
|
26
|
+
|
27
|
+
`ayadn set backup auto_save_sent_posts true`
|
28
|
+
|
29
|
+
`ayadn set scroll timer 5`
|
30
|
+
|
31
|
+
`ayadn set nicerank filter true`
|
32
|
+
|
33
|
+
`ayadn set timeline show_spinner true`
|
34
|
+
|
35
|
+
To reset the configuration to default values:
|
36
|
+
|
37
|
+
`ayadn set defaults`
|
38
|
+
|
39
|
+
## LIST
|
40
|
+
|
41
|
+
Example list of configured items in Ayadn.
|
42
|
+
|
43
|
+
`ayadn -sg` will show your own list.
|
44
|
+
|
45
|
+
```
|
46
|
+
+------------------+---------------------------------+--------------------+
|
47
|
+
| Category | Parameter | Value(s) |
|
48
|
+
+------------------+---------------------------------+--------------------+
|
49
|
+
| timeline | directed | 1 |
|
50
|
+
+------------------+---------------------------------+--------------------+
|
51
|
+
| timeline | deleted | 0 |
|
52
|
+
+------------------+---------------------------------+--------------------+
|
53
|
+
| timeline | html | 0 |
|
54
|
+
+------------------+---------------------------------+--------------------+
|
55
|
+
| timeline | annotations | 1 |
|
56
|
+
+------------------+---------------------------------+--------------------+
|
57
|
+
| timeline | show_source | true |
|
58
|
+
+------------------+---------------------------------+--------------------+
|
59
|
+
| timeline | show_symbols | true |
|
60
|
+
+------------------+---------------------------------+--------------------+
|
61
|
+
| timeline | show_real_name | true |
|
62
|
+
+------------------+---------------------------------+--------------------+
|
63
|
+
| timeline | show_date | true |
|
64
|
+
+------------------+---------------------------------+--------------------+
|
65
|
+
| timeline | show_spinner | true |
|
66
|
+
+------------------+---------------------------------+--------------------+
|
67
|
+
| counts | default | 50 |
|
68
|
+
+------------------+---------------------------------+--------------------+
|
69
|
+
| counts | unified | 50 |
|
70
|
+
+------------------+---------------------------------+--------------------+
|
71
|
+
| counts | global | 100 |
|
72
|
+
+------------------+---------------------------------+--------------------+
|
73
|
+
| counts | checkins | 50 |
|
74
|
+
+------------------+---------------------------------+--------------------+
|
75
|
+
| counts | conversations | 200 |
|
76
|
+
+------------------+---------------------------------+--------------------+
|
77
|
+
| counts | photos | 50 |
|
78
|
+
+------------------+---------------------------------+--------------------+
|
79
|
+
| counts | trending | 50 |
|
80
|
+
+------------------+---------------------------------+--------------------+
|
81
|
+
| counts | mentions | 50 |
|
82
|
+
+------------------+---------------------------------+--------------------+
|
83
|
+
| counts | convo | 50 |
|
84
|
+
+------------------+---------------------------------+--------------------+
|
85
|
+
| counts | posts | 50 |
|
86
|
+
+------------------+---------------------------------+--------------------+
|
87
|
+
| counts | messages | 50 |
|
88
|
+
+------------------+---------------------------------+--------------------+
|
89
|
+
| counts | search | 200 |
|
90
|
+
+------------------+---------------------------------+--------------------+
|
91
|
+
| counts | whoreposted | 50 |
|
92
|
+
+------------------+---------------------------------+--------------------+
|
93
|
+
| counts | whostarred | 50 |
|
94
|
+
+------------------+---------------------------------+--------------------+
|
95
|
+
| counts | whatstarred | 200 |
|
96
|
+
+------------------+---------------------------------+--------------------+
|
97
|
+
| counts | files | 100 |
|
98
|
+
+------------------+---------------------------------+--------------------+
|
99
|
+
| formats | table | width = 75 |
|
100
|
+
+------------------+---------------------------------+--------------------+
|
101
|
+
| colors | id | blue |
|
102
|
+
+------------------+---------------------------------+--------------------+
|
103
|
+
| colors | index | red |
|
104
|
+
+------------------+---------------------------------+--------------------+
|
105
|
+
| colors | username | green |
|
106
|
+
+------------------+---------------------------------+--------------------+
|
107
|
+
| colors | name | magenta |
|
108
|
+
+------------------+---------------------------------+--------------------+
|
109
|
+
| colors | date | cyan |
|
110
|
+
+------------------+---------------------------------+--------------------+
|
111
|
+
| colors | link | yellow |
|
112
|
+
+------------------+---------------------------------+--------------------+
|
113
|
+
| colors | dots | blue |
|
114
|
+
+------------------+---------------------------------+--------------------+
|
115
|
+
| colors | hashtags | cyan |
|
116
|
+
+------------------+---------------------------------+--------------------+
|
117
|
+
| colors | mentions | red |
|
118
|
+
+------------------+---------------------------------+--------------------+
|
119
|
+
| colors | source | cyan |
|
120
|
+
+------------------+---------------------------------+--------------------+
|
121
|
+
| colors | symbols | green |
|
122
|
+
+------------------+---------------------------------+--------------------+
|
123
|
+
| colors | nicerank | cyan |
|
124
|
+
+------------------+---------------------------------+--------------------+
|
125
|
+
| backup | auto_save_sent_posts | false |
|
126
|
+
+------------------+---------------------------------+--------------------+
|
127
|
+
| backup | auto_save_sent_messages | false |
|
128
|
+
+------------------+---------------------------------+--------------------+
|
129
|
+
| backup | auto_save_lists | false |
|
130
|
+
+------------------+---------------------------------+--------------------+
|
131
|
+
| scroll | timer | 3 |
|
132
|
+
+------------------+---------------------------------+--------------------+
|
133
|
+
| nicerank | threshold | 2.0 |
|
134
|
+
+------------------+---------------------------------+--------------------+
|
135
|
+
| nicerank | filter | true |
|
136
|
+
+------------------+---------------------------------+--------------------+
|
137
|
+
| nicerank | filter_unranked | true |
|
138
|
+
+------------------+---------------------------------+--------------------+
|
139
|
+
```
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# NOWPLAYING
|
2
|
+
|
3
|
+
Post what you're listening to!
|
4
|
+
|
5
|
+
## iTunes
|
6
|
+
|
7
|
+
OS X only.
|
8
|
+
|
9
|
+
`ayadn nowplaying`
|
10
|
+
|
11
|
+
`ayadn -np`
|
12
|
+
|
13
|
+
Ayadn will grab information from your running iTunes, format it, insert the *#nowplaying* hashtag then ask for your confirmation before posting it.
|
14
|
+
|
15
|
+
It will also grab a 30 seconds preview and the album art from the iTunes Store. You can prevent this behavior by adding the `--no-url` option (short: `-n`).
|
16
|
+
|
17
|
+
## Last.fm
|
18
|
+
|
19
|
+
`ayadn nowplaying --last-fm`
|
20
|
+
|
21
|
+
`ayadn -np -l`
|
22
|
+
|
23
|
+
Same behaviour and options as above.
|
data/doc/16-contact.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
## CONTACT
|
2
|
+
|
3
|
+
[@ericd](http://app.net/ericd)
|
4
|
+
|
5
|
+
[email](eric@aya.io)
|
6
|
+
|
7
|
+
[@ayadn](http://app.net/ayadn)
|
8
|
+
|
9
|
+
[ayadn-app.net](http://ayadn-app.net)
|
10
|
+
|
11
|
+
## THANK YOU
|
12
|
+
|
13
|
+
[@matigo](http://app.net/matigo)
|
14
|
+
[@ksniod](http://app.net/ksniod)
|
15
|
+
[@donnywdavis](http://app.net/donnywdavis)
|
16
|
+
[@manx](http://app.net/manx)
|
17
|
+
[@bcallah](http://app.net/bcallah)
|
18
|
+
[@0xmf](http://app.net/0xmf)
|
19
|
+
[@sr_rolando](http://app.net/sr_rolando)
|
20
|
+
[@charl](http://app.net/charl)
|
21
|
+
[@jws](http://app.net/jws)
|
22
|
+
[@joeltimmins](http://app.net/joeltimmins)
|
23
|
+
[@berklee](http://app.net/berklee)
|
24
|
+
[@nguarracino](http://app.net/nguarracino)
|
25
|
+
[@matthewlang](http://app.net/matthewlang)
|
26
|
+
[@schmidt_fu](http://app.net/schmidt_fu)
|
27
|
+
[@jextxadore](http://app.net/jextxadore)
|
28
|
+
[@jvimedia](http://app.net/jvimedia)
|
29
|
+
[@fredvd](http://app.net/fredvd)
|
data/doc/17-shortcuts.md
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
# SHORTCUTS
|
2
|
+
|
3
|
+
Most examples will include the 'complete' command followed by the 'shortcut' command.
|
4
|
+
|
5
|
+
Of course, using Ayadn is much faster with the shortcut commands.
|
6
|
+
|
7
|
+
If you're like me, you'll even want to create aliases in bash/zsh or TextExpander snippets for the combinations of Ayadn commands and options you use the most...
|
8
|
+
|
data/doc/18-examples.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
## EXAMPLES
|
2
|
+
|
3
|
+
Just a few examples to give you a hint at the flexible syntax.
|
4
|
+
|
5
|
+
Complete:
|
6
|
+
|
7
|
+
`ayadn timeline`
|
8
|
+
|
9
|
+
`ayadn checkins --count=10 --index`
|
10
|
+
|
11
|
+
`ayadn global --scroll`
|
12
|
+
|
13
|
+
`ayadn userposts @ericd`
|
14
|
+
|
15
|
+
`ayadn post 'Hello guys!'`
|
16
|
+
|
17
|
+
`ayadn reply 23362460`
|
18
|
+
|
19
|
+
`ayadn convo 23362788`
|
20
|
+
|
21
|
+
`ayadn search movies hollywood`
|
22
|
+
|
23
|
+
`ayadn follow @ericd`
|
24
|
+
|
25
|
+
Shortcuts:
|
26
|
+
|
27
|
+
`ayadn -tl`
|
28
|
+
|
29
|
+
`ayadn -ck -c10 -i`
|
30
|
+
|
31
|
+
`ayadn -gl -s`
|
32
|
+
|
33
|
+
`ayadn -up @ericd`
|
34
|
+
|
35
|
+
`ayadn -P 'Hello guys!'`
|
36
|
+
|
37
|
+
`ayadn -R 23362460`
|
38
|
+
|
39
|
+
`ayadn -co 23362788`
|
40
|
+
|
41
|
+
`ayadn -se movies hollywood`
|
42
|
+
|
43
|
+
`ayadn -FO @ericd`
|
data/lib/ayadn/action.rb
CHANGED
@@ -132,7 +132,7 @@ module Ayadn
|
|
132
132
|
begin
|
133
133
|
doing(options)
|
134
134
|
stream = @api.get_interactions
|
135
|
-
|
135
|
+
if_raw_show(stream, options)
|
136
136
|
@view.clear_screen
|
137
137
|
@view.show_interactions(stream['data'])
|
138
138
|
rescue => e
|
@@ -162,7 +162,7 @@ module Ayadn
|
|
162
162
|
stop_if_404(details, post_id)
|
163
163
|
id = get_original_id(post_id, details)
|
164
164
|
list = @api.get_whoreposted(id)
|
165
|
-
|
165
|
+
if_raw_show(list, options)
|
166
166
|
unless list['data'].empty?
|
167
167
|
get_list(:whoreposted, list['data'], post_id)
|
168
168
|
else
|
@@ -181,7 +181,7 @@ module Ayadn
|
|
181
181
|
stop_if_404(details, post_id)
|
182
182
|
id = get_original_id(post_id, details)
|
183
183
|
list = @api.get_whostarred(id)
|
184
|
-
|
184
|
+
if_raw_show(list, options)
|
185
185
|
unless list['data'].empty?
|
186
186
|
get_list(:whostarred, list['data'], id)
|
187
187
|
else
|
@@ -201,6 +201,11 @@ module Ayadn
|
|
201
201
|
id = get_original_id(post_id, details)
|
202
202
|
stream = get_convo id, options
|
203
203
|
Databases.pagination["replies:#{id}"] = stream['meta']['max_id']
|
204
|
+
options = options.dup
|
205
|
+
unless details['data']['reply_to'].nil?
|
206
|
+
options[:reply_to] = details['data']['reply_to'].to_i
|
207
|
+
end
|
208
|
+
options[:post_id] = post_id.to_i
|
204
209
|
render_view(stream, options)
|
205
210
|
Scroll.new(@api, @view).convo(id, options) if options[:scroll]
|
206
211
|
rescue => e
|
@@ -238,69 +243,93 @@ module Ayadn
|
|
238
243
|
end
|
239
244
|
end
|
240
245
|
|
241
|
-
def unfollow(
|
246
|
+
def unfollow(usernames)
|
242
247
|
begin
|
243
|
-
stop_if_no_username(
|
244
|
-
|
245
|
-
puts Status.unfollowing(
|
246
|
-
|
248
|
+
stop_if_no_username(usernames)
|
249
|
+
users = all_but_me(usernames)
|
250
|
+
puts Status.unfollowing(users.join(','))
|
251
|
+
users.each do |user|
|
252
|
+
resp = @api.unfollow(user)
|
253
|
+
check_has_been_unfollowed(user, resp)
|
254
|
+
sleep 1 unless users.length == 1
|
255
|
+
end
|
247
256
|
rescue => e
|
248
|
-
Errors.global_error({error: e, caller: caller, data: [
|
257
|
+
Errors.global_error({error: e, caller: caller, data: [usernames]})
|
249
258
|
end
|
250
259
|
end
|
251
260
|
|
252
|
-
def follow(
|
261
|
+
def follow(usernames)
|
253
262
|
begin
|
254
|
-
stop_if_no_username(
|
255
|
-
|
256
|
-
puts Status.following(
|
257
|
-
|
263
|
+
stop_if_no_username(usernames)
|
264
|
+
users = all_but_me(usernames)
|
265
|
+
puts Status.following(users.join(','))
|
266
|
+
users.each do |user|
|
267
|
+
resp = @api.follow(user)
|
268
|
+
check_has_been_followed(user, resp)
|
269
|
+
sleep 1 unless users.length == 1
|
270
|
+
end
|
258
271
|
rescue => e
|
259
|
-
Errors.global_error({error: e, caller: caller, data: [
|
272
|
+
Errors.global_error({error: e, caller: caller, data: [usernames]})
|
260
273
|
end
|
261
274
|
end
|
262
275
|
|
263
|
-
def unmute(
|
276
|
+
def unmute(usernames)
|
264
277
|
begin
|
265
|
-
stop_if_no_username(
|
266
|
-
|
267
|
-
puts Status.unmuting(
|
268
|
-
|
278
|
+
stop_if_no_username(usernames)
|
279
|
+
users = all_but_me(usernames)
|
280
|
+
puts Status.unmuting(users.join(','))
|
281
|
+
users.each do |user|
|
282
|
+
resp = @api.unmute(user)
|
283
|
+
check_has_been_unmuted(user, resp)
|
284
|
+
sleep 1 unless users.length == 1
|
285
|
+
end
|
269
286
|
rescue => e
|
270
|
-
Errors.global_error({error: e, caller: caller, data: [
|
287
|
+
Errors.global_error({error: e, caller: caller, data: [usernames]})
|
271
288
|
end
|
272
289
|
end
|
273
290
|
|
274
|
-
def mute(
|
291
|
+
def mute(usernames)
|
275
292
|
begin
|
276
|
-
stop_if_no_username(
|
277
|
-
|
278
|
-
puts Status.muting(
|
279
|
-
|
293
|
+
stop_if_no_username(usernames)
|
294
|
+
users = all_but_me(usernames)
|
295
|
+
puts Status.muting(users.join(','))
|
296
|
+
users.each do |user|
|
297
|
+
resp = @api.mute(user)
|
298
|
+
check_has_been_muted(user, resp)
|
299
|
+
sleep 1 unless users.length == 1
|
300
|
+
end
|
280
301
|
rescue => e
|
281
|
-
Errors.global_error({error: e, caller: caller, data: [
|
302
|
+
Errors.global_error({error: e, caller: caller, data: [usernames]})
|
282
303
|
end
|
283
304
|
end
|
284
305
|
|
285
|
-
def unblock(
|
306
|
+
def unblock(usernames)
|
286
307
|
begin
|
287
|
-
stop_if_no_username(
|
288
|
-
|
289
|
-
puts Status.unblocking(
|
290
|
-
|
308
|
+
stop_if_no_username(usernames)
|
309
|
+
users = all_but_me(usernames)
|
310
|
+
puts Status.unblocking(users.join(','))
|
311
|
+
users.each do |user|
|
312
|
+
resp = @api.unblock(user)
|
313
|
+
check_has_been_unblocked(user, resp)
|
314
|
+
sleep 1 unless users.length == 1
|
315
|
+
end
|
291
316
|
rescue => e
|
292
|
-
Errors.global_error({error: e, caller: caller, data: [
|
317
|
+
Errors.global_error({error: e, caller: caller, data: [usernames]})
|
293
318
|
end
|
294
319
|
end
|
295
320
|
|
296
|
-
def block(
|
321
|
+
def block(usernames)
|
297
322
|
begin
|
298
|
-
stop_if_no_username(
|
299
|
-
|
300
|
-
puts Status.blocking(
|
301
|
-
|
323
|
+
stop_if_no_username(usernames)
|
324
|
+
users = all_but_me(usernames)
|
325
|
+
puts Status.blocking(users.join(','))
|
326
|
+
users.each do |user|
|
327
|
+
resp = @api.block(user)
|
328
|
+
check_has_been_blocked(user, resp)
|
329
|
+
sleep 1 unless users.length == 1
|
330
|
+
end
|
302
331
|
rescue => e
|
303
|
-
Errors.global_error({error: e, caller: caller, data: [
|
332
|
+
Errors.global_error({error: e, caller: caller, data: [usernames]})
|
304
333
|
end
|
305
334
|
end
|
306
335
|
|
@@ -401,7 +430,7 @@ module Ayadn
|
|
401
430
|
stream['data'].sort_by! {|obj| obj['counts']['followers']}
|
402
431
|
stream['data'].each do |obj|
|
403
432
|
puts @view.big_separator
|
404
|
-
@view.show_userinfos(obj, nil)
|
433
|
+
@view.show_userinfos(obj, nil, false)
|
405
434
|
end
|
406
435
|
elsif options[:channels]
|
407
436
|
@view.show_channels stream, options
|
@@ -422,7 +451,7 @@ module Ayadn
|
|
422
451
|
stop_if_no_username(username)
|
423
452
|
username = add_arobase(username)
|
424
453
|
doing(options)
|
425
|
-
|
454
|
+
if_raw_list(username, :followings, options)
|
426
455
|
list = @api.get_followings(username)
|
427
456
|
auto_save_followings(list)
|
428
457
|
no_data('followings') if list.empty?
|
@@ -438,7 +467,7 @@ module Ayadn
|
|
438
467
|
stop_if_no_username(username)
|
439
468
|
username = add_arobase(username)
|
440
469
|
doing(options)
|
441
|
-
|
470
|
+
if_raw_list(username, :followers, options)
|
442
471
|
list = @api.get_followers(username)
|
443
472
|
auto_save_followers(list)
|
444
473
|
no_data('followers') if list.empty?
|
@@ -452,7 +481,7 @@ module Ayadn
|
|
452
481
|
def muted(options)
|
453
482
|
begin
|
454
483
|
doing(options)
|
455
|
-
|
484
|
+
if_raw_list(nil, :muted, options)
|
456
485
|
list = @api.get_muted
|
457
486
|
auto_save_muted(list)
|
458
487
|
no_data('muted') if list.empty?
|
@@ -466,7 +495,7 @@ module Ayadn
|
|
466
495
|
def blocked(options)
|
467
496
|
begin
|
468
497
|
doing(options)
|
469
|
-
|
498
|
+
if_raw_list(nil, :blocked, options)
|
470
499
|
list = @api.get_blocked
|
471
500
|
no_data('blocked') if list.empty?
|
472
501
|
get_list(:blocked, list, nil)
|
@@ -489,7 +518,11 @@ module Ayadn
|
|
489
518
|
stop_if_no_username(username)
|
490
519
|
username = add_arobase(username)
|
491
520
|
doing(options)
|
492
|
-
|
521
|
+
if options[:raw]
|
522
|
+
resp = @api.get_user(username)
|
523
|
+
@view.show_raw(resp, options)
|
524
|
+
exit
|
525
|
+
end
|
493
526
|
stream = @api.get_user(username)
|
494
527
|
stop_if_no_user(stream, username)
|
495
528
|
same_username?(stream) ? token = @api.get_token_info['data'] : token = nil
|
@@ -503,7 +536,11 @@ module Ayadn
|
|
503
536
|
begin
|
504
537
|
stop_if_bad_post_id(post_id)
|
505
538
|
doing(options)
|
506
|
-
|
539
|
+
if options[:raw]
|
540
|
+
details = @api.get_details(post_id, options)
|
541
|
+
@view.show_raw(details, options)
|
542
|
+
exit
|
543
|
+
end
|
507
544
|
@view.clear_screen
|
508
545
|
response = @api.get_details(post_id, options)
|
509
546
|
stop_if_no_post(response, post_id)
|
@@ -520,9 +557,9 @@ module Ayadn
|
|
520
557
|
end
|
521
558
|
puts "AUTHOR:\n".inverse
|
522
559
|
if response['data']['username'] == Settings.config[:identity][:username]
|
523
|
-
@view.show_userinfos(stream, @api.get_token_info['data'])
|
560
|
+
@view.show_userinfos(stream, @api.get_token_info['data'], true)
|
524
561
|
else
|
525
|
-
@view.show_userinfos(stream, nil)
|
562
|
+
@view.show_userinfos(stream, nil, true)
|
526
563
|
end
|
527
564
|
rescue => e
|
528
565
|
Errors.global_error({error: e, caller: caller, data: [post_id, options]})
|
@@ -532,7 +569,10 @@ module Ayadn
|
|
532
569
|
def files(options)
|
533
570
|
begin
|
534
571
|
doing(options)
|
535
|
-
|
572
|
+
if options[:raw]
|
573
|
+
@view.show_raw(@api.get_files_list(options), options)
|
574
|
+
exit
|
575
|
+
end
|
536
576
|
list = @api.get_files_list(options)
|
537
577
|
@view.clear_screen
|
538
578
|
list.empty? ? no_data('files') : @view.show_files_list(list)
|
@@ -569,7 +609,7 @@ module Ayadn
|
|
569
609
|
resp = @api.get_messages(channel_id, options)
|
570
610
|
stop_if_no_new_posts(resp, options, "channel:#{channel_id}")
|
571
611
|
Databases.save_max_id(resp)
|
572
|
-
|
612
|
+
if_raw_show(resp, options)
|
573
613
|
stop_if_no_data(resp, 'messages')
|
574
614
|
render_view(resp, options)
|
575
615
|
Scroll.new(@api, @view).messages(channel_id, options) if options[:scroll]
|
@@ -623,14 +663,8 @@ module Ayadn
|
|
623
663
|
writer = Post.new
|
624
664
|
@view.clear_screen
|
625
665
|
if options['embed']
|
626
|
-
|
627
|
-
|
628
|
-
embed = [opts.shift]
|
629
|
-
text = opts.join(" ")
|
630
|
-
else
|
631
|
-
embed = options['embed']
|
632
|
-
text = args.join(" ")
|
633
|
-
end
|
666
|
+
embed = options['embed']
|
667
|
+
text = args.join(" ")
|
634
668
|
puts Status.uploading(embed)
|
635
669
|
resp = writer.send_embedded(text, FileOps.make_paths(embed))
|
636
670
|
else
|
@@ -752,7 +786,14 @@ module Ayadn
|
|
752
786
|
FileOps.save_post(resp) if Settings.options[:backup][:auto_save_sent_posts]
|
753
787
|
@view.clear_screen
|
754
788
|
puts Status.done
|
755
|
-
|
789
|
+
|
790
|
+
options = options.dup
|
791
|
+
unless resp['data']['reply_to'].nil?
|
792
|
+
options[:reply_to] = resp['data']['reply_to'].to_i
|
793
|
+
end
|
794
|
+
options[:post_id] = resp['data']['id'].to_i
|
795
|
+
|
796
|
+
render_view(@api.get_convo(post_id), options)
|
756
797
|
rescue => e
|
757
798
|
Errors.global_error({error: e, caller: caller, data: [post_id, options]})
|
758
799
|
end
|
@@ -793,21 +834,43 @@ module Ayadn
|
|
793
834
|
end
|
794
835
|
end
|
795
836
|
|
837
|
+
def version
|
838
|
+
begin
|
839
|
+
puts "\nAYADN\n".color(:red)
|
840
|
+
puts "Version:\t".color(:cyan) + "#{VERSION}\n".color(:green)
|
841
|
+
puts "Changelog:\t".color(:cyan) + "https://github.com/ericdke/na/blob/master/CHANGELOG.md\n".color(Settings.options[:colors][:link])
|
842
|
+
puts "Docs:\t\t".color(:cyan) + "http://ayadn-app.net/doc/".color(Settings.options[:colors][:link])
|
843
|
+
puts "\n"
|
844
|
+
rescue => e
|
845
|
+
Errors.global_error({error: e, caller: caller, data: []})
|
846
|
+
end
|
847
|
+
end
|
848
|
+
|
796
849
|
private
|
797
850
|
|
851
|
+
def if_raw_list username, what, options
|
852
|
+
if options[:raw]
|
853
|
+
@view.show_raw(@api.get_raw_list(username, what), options)
|
854
|
+
exit
|
855
|
+
end
|
856
|
+
end
|
857
|
+
|
858
|
+
def if_raw_show what, options
|
859
|
+
if options[:raw]
|
860
|
+
@view.show_raw(what, options)
|
861
|
+
exit
|
862
|
+
end
|
863
|
+
end
|
864
|
+
|
865
|
+
def all_but_me usernames
|
866
|
+
all_but_me = usernames.select {|user| user != 'me'}
|
867
|
+
Workers.at(all_but_me)
|
868
|
+
end
|
869
|
+
|
798
870
|
def np_lastfm options
|
799
871
|
require 'rss'
|
800
872
|
begin
|
801
|
-
|
802
|
-
if Settings.options[:nowplaying][:lastfm]
|
803
|
-
user = Settings.options[:nowplaying][:lastfm]
|
804
|
-
else
|
805
|
-
user = create_lastfm_user()
|
806
|
-
end
|
807
|
-
else
|
808
|
-
Settings.options[:nowplaying] = {}
|
809
|
-
user = create_lastfm_user()
|
810
|
-
end
|
873
|
+
user = Settings.options[:nowplaying][:lastfm] || create_lastfm_user()
|
811
874
|
puts Status.fetching_from('Last.fm')
|
812
875
|
artist, track = get_lastfm_track_infos(user)
|
813
876
|
puts Status.itunes_store
|
@@ -852,26 +915,33 @@ module Ayadn
|
|
852
915
|
@view.clear_screen
|
853
916
|
puts Status.writing
|
854
917
|
show_nowplaying("\n#{text_to_post}", options, store)
|
855
|
-
unless options['no_url'] || store
|
856
|
-
#text_to_post += "\n \n[> Listen](#{store['preview']})"
|
918
|
+
unless options['no_url'] || store.nil?
|
857
919
|
text_to_post += "\n \n[iTunes Store](#{store['link']})"
|
858
920
|
end
|
859
921
|
abort(Status.canceled) unless STDIN.getch == ("y" || "Y")
|
860
922
|
puts "\n#{Status.yourpost}"
|
861
|
-
unless
|
862
|
-
visible, track, artwork, artwork_thumb = true, store['track'], store['artwork'], store['artwork_thumb']
|
923
|
+
unless store.nil? || options['no_url']
|
924
|
+
visible, track, artwork, artwork_thumb, link, artist = true, store['track'], store['artwork'], store['artwork_thumb'], store['link'], store['artist']
|
925
|
+
else
|
926
|
+
visible, track, artwork, artwork_thumb, link, artist = false
|
927
|
+
end
|
928
|
+
if options['lastfm']
|
929
|
+
source = 'Last.fm'
|
863
930
|
else
|
864
|
-
|
931
|
+
source = 'iTunes'
|
865
932
|
end
|
866
933
|
dic = {
|
867
934
|
'text' => text_to_post,
|
868
935
|
'title' => track,
|
936
|
+
'artist' => artist,
|
869
937
|
'artwork' => artwork,
|
870
938
|
'artwork_thumb' => artwork_thumb,
|
871
939
|
'width' => 1200,
|
872
940
|
'height' => 1200,
|
873
941
|
'width_thumb' => 200,
|
874
942
|
'height_thumb' => 200,
|
943
|
+
'link' => link,
|
944
|
+
'source' => source,
|
875
945
|
'visible' => visible
|
876
946
|
}
|
877
947
|
@view.show_posted(Post.new.send_nowplaying(dic))
|
@@ -958,22 +1028,11 @@ module Ayadn
|
|
958
1028
|
else
|
959
1029
|
puts text + "\n\n\nThe iTunes Store thinks this track is: ".color(:green) + "'#{store['track']}'".color(:magenta) + " by ".color(:green) + "'#{store['artist']}'".color(:magenta) + ".\n\nAyadn will use these elements to insert album artwork and a link to the track.\n\n".color(:green)
|
960
1030
|
end
|
961
|
-
puts "
|
1031
|
+
puts "Is it ok? (y/N) ".color(:yellow)
|
962
1032
|
end
|
963
1033
|
|
964
1034
|
def nicerank_true
|
965
|
-
if Settings.options[:nicerank]
|
966
|
-
if Settings.options[:nicerank][:filter] == true
|
967
|
-
return true
|
968
|
-
end
|
969
|
-
end
|
970
|
-
end
|
971
|
-
|
972
|
-
def option_show_raw stream, options
|
973
|
-
if options[:raw]
|
974
|
-
@view.show_raw(stream)
|
975
|
-
exit
|
976
|
-
end
|
1035
|
+
return true if Settings.options[:nicerank][:filter] == true
|
977
1036
|
end
|
978
1037
|
|
979
1038
|
def stop_if_bad_post_id post_id
|
@@ -1220,7 +1279,7 @@ module Ayadn
|
|
1220
1279
|
|
1221
1280
|
def get_infos(stream, token)
|
1222
1281
|
@view.clear_screen
|
1223
|
-
@view.show_userinfos(stream, token)
|
1282
|
+
@view.show_userinfos(stream, token, true)
|
1224
1283
|
end
|
1225
1284
|
|
1226
1285
|
def get_list(what, list, target)
|