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.
- 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)
|