ayadn 1.6.0 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/doc/05-streams.md +17 -0
- data/doc/06-post.md +41 -6
- data/lib/ayadn/action.rb +68 -123
- data/lib/ayadn/annotations.rb +191 -0
- data/lib/ayadn/app.rb +29 -5
- data/lib/ayadn/databases.rb +8 -2
- data/lib/ayadn/debug.rb +6 -6
- data/lib/ayadn/descriptions.rb +55 -2
- data/lib/ayadn/endpoints.rb +11 -3
- data/lib/ayadn/logs.rb +0 -17
- data/lib/ayadn/mark.rb +5 -2
- data/lib/ayadn/nowplaying.rb +17 -16
- data/lib/ayadn/nowwatching.rb +34 -9
- data/lib/ayadn/post.rb +46 -256
- data/lib/ayadn/scroll.rb +10 -8
- data/lib/ayadn/search.rb +2 -0
- data/lib/ayadn/set.rb +83 -198
- data/lib/ayadn/status.rb +3 -0
- data/lib/ayadn/stream.rb +27 -40
- data/lib/ayadn/tvshow.rb +8 -6
- data/lib/ayadn/version.rb +1 -1
- data/lib/ayadn/view.rb +8 -0
- data/lib/ayadn/workers.rb +41 -36
- data/spec/unit/post_spec.rb +19 -19
- metadata +3 -3
- data/doc/shortcuts.md +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 378ae34a1b17ea7a5b489e31a4f29900ca2e0e4d
|
4
|
+
data.tar.gz: f4156ace495c8386f163ab656c177fc3db99d130
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c76c035e1c8b84d265326e39cad4e2b9519de784c68b35ad30c793d12b11b2e487eaca7347be6c3c03381817ed255d3f4a692bbc5f67d65a6212558a257ef4c1
|
7
|
+
data.tar.gz: aafcac122e8d86609a94bf8be2f6b8783224798254d20841192d6d060b6caa1c5138fa2b83c024475de043ced1ae6e31db54664695adee0ad255a0814f181e1d
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# 1.7.0 - 'Private Investigations'
|
2
|
+
|
3
|
+
- New: embed a Youtube video in a normal post with option `-Y`
|
4
|
+
- New: embed a Vimeo video in a normal post with option `-V`
|
5
|
+
- New: embed a movie poster in a normal post with option `-M`
|
6
|
+
- New: force view blacklisted/muted/blocked user's posts with option `-f`
|
7
|
+
- New: the cursor is hidden when the scroll spinning wheel is displayed
|
8
|
+
- Change: option to embed an image in a post is now `-E` (previously -e)
|
9
|
+
- Fixed: bookmark title; also fixed the previous fix...
|
10
|
+
- Fixed: value displayed when setting NiceRank
|
11
|
+
- Refactored a few classes and methods
|
12
|
+
|
1
13
|
# 1.6.0 - 'Beetlejuice'
|
2
14
|
|
3
15
|
- New command: 'movie'. Create a post from a movie title (with link + movie poster). Customisable hashtag (default: '#nowwatching').
|
data/doc/05-streams.md
CHANGED
@@ -95,6 +95,23 @@ Extracts all links from posts.
|
|
95
95
|
|
96
96
|
`ayadn -was -e ericd`
|
97
97
|
|
98
|
+
### FORCE
|
99
|
+
|
100
|
+
Force view blacklisted/muted/blocked user's posts with `-f` option.
|
101
|
+
|
102
|
+
`ayadn -gl -f`
|
103
|
+
|
104
|
+
`ayadn -gl -s -f`
|
105
|
+
|
106
|
+
Differences will occur due to ADN policy:
|
107
|
+
|
108
|
+
- Global stream: temporarily disables you user token (so your muted/blocked preferences don't apply), the NiceRank filter, and the Blacklist databases
|
109
|
+
|
110
|
+
- User's posts and Post infos: temporarily disables you user token and the Blacklist databases
|
111
|
+
|
112
|
+
- Other streams, search, tags: temporarily disables the Blacklist databases
|
113
|
+
|
114
|
+
|
98
115
|
# GLOBAL
|
99
116
|
|
100
117
|
Display the 'Global stream'.
|
data/doc/06-post.md
CHANGED
@@ -94,16 +94,51 @@ If you've already created an [alias](#alias) for the channel, you can post to it
|
|
94
94
|
|
95
95
|
You can embed one or several pictures in a post (with `post`, `write`, `reply` and `pm`).
|
96
96
|
|
97
|
-
Just add the `-
|
97
|
+
Just add the `-E` (or `--embed`) option **at the end** of the command line, followed by one or several file paths separated by spaces.
|
98
98
|
|
99
99
|
Accepted file formats are `jpg`, `png` and `gif`.
|
100
100
|
|
101
101
|
Examples:
|
102
102
|
|
103
103
|
```
|
104
|
-
ayadn -P Meet my cat -
|
105
|
-
ayadn -P "@ericd Hey, meet my pets" -
|
106
|
-
ayadn -W -
|
107
|
-
ayadn -R 23362460 -
|
108
|
-
ayadn pm @ericd -
|
104
|
+
ayadn -P Meet my cat -E lolcat.jpg
|
105
|
+
ayadn -P "@ericd Hey, meet my pets" -E ~/lolcat.jpg ./doge.jpeg
|
106
|
+
ayadn -W -E ~/lolcat.png
|
107
|
+
ayadn -R 23362460 -E "Desktop/dancing lolcat.gif"
|
108
|
+
ayadn pm @ericd -E /users/dad/lol\'cat.JPG /users/mom/my\ doge.PNG
|
109
109
|
```
|
110
|
+
|
111
|
+
# EMBED VIDEOS
|
112
|
+
|
113
|
+
You can embed a video hosted online in a post. Currently works with Youtube and Vimeo only.
|
114
|
+
|
115
|
+
Add the `-Y` option for Youtube or `-V` for Vimeo **at the end** of the command line, followed by the video URL.
|
116
|
+
|
117
|
+
Examples:
|
118
|
+
|
119
|
+
```
|
120
|
+
ayadn -P wave function -Y https://www.youtube.com/watch?v=Ei8CFin00PY
|
121
|
+
ayadn -P Elixir -V http://vimeo.com/103927232
|
122
|
+
ayadn -W -Y https://www.youtube.com/watch?v=Ei8CFin00PY
|
123
|
+
ayadn -R 23362460 -Y https://www.youtube.com/watch?v=Ei8CFin00PY
|
124
|
+
ayadn pm @ericd -Y https://www.youtube.com/watch?v=Ei8CFin00PY
|
125
|
+
```
|
126
|
+
|
127
|
+
Unfortunately, very few App.net clients treat video embedding properly. So I would advise to include the video URL in the text body anyway, for better compatibility.
|
128
|
+
|
129
|
+
# EMBED MOVIE POSTER
|
130
|
+
|
131
|
+
You can embed a movie poster in a normal post with option `-M`.
|
132
|
+
|
133
|
+
This is compatible with other options, eg embedding other images.
|
134
|
+
|
135
|
+
Warning: contrary to the `movie` command, this option doesn't check with the user if the movie is valid. The poster is retrieved from IMDb and is automatically embedded in the post.
|
136
|
+
|
137
|
+
Examples:
|
138
|
+
|
139
|
+
```
|
140
|
+
ayadn -P "I'll be back" -M terminator
|
141
|
+
ayadn -W -M truman show -E ~/Pics/my_face.jpg
|
142
|
+
ayadn -R 23362460 -M the dark knight
|
143
|
+
```
|
144
|
+
|
data/lib/ayadn/action.rb
CHANGED
@@ -19,51 +19,16 @@ module Ayadn
|
|
19
19
|
at_exit { Databases.close_all }
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
@stream.checkins(options)
|
33
|
-
rescue => e
|
34
|
-
Errors.global_error({error: e, caller: caller, data: [options]})
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def global(settings)
|
39
|
-
begin
|
40
|
-
@stream.global(settings)
|
41
|
-
rescue => e
|
42
|
-
Errors.global_error({error: e, caller: caller, data: [settings]})
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def trending(options)
|
47
|
-
begin
|
48
|
-
@stream.trending(options)
|
49
|
-
rescue => e
|
50
|
-
Errors.global_error({error: e, caller: caller, data: [options]})
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def photos(options)
|
55
|
-
begin
|
56
|
-
@stream.photos(options)
|
57
|
-
rescue => e
|
58
|
-
Errors.global_error({error: e, caller: caller, data: [options]})
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def conversations(options)
|
63
|
-
begin
|
64
|
-
@stream.conversations(options)
|
65
|
-
rescue => e
|
66
|
-
Errors.global_error({error: e, caller: caller, data: [options]})
|
22
|
+
def method_missing(meth, options)
|
23
|
+
case meth.to_s
|
24
|
+
when 'unified', 'checkins', 'global', 'trending', 'photos', 'conversations', 'interactions'
|
25
|
+
begin
|
26
|
+
@stream.send(meth.to_sym, options)
|
27
|
+
rescue => e
|
28
|
+
Errors.global_error({error: e, caller: caller, data: [meth, options]})
|
29
|
+
end
|
30
|
+
else
|
31
|
+
super
|
67
32
|
end
|
68
33
|
end
|
69
34
|
|
@@ -83,14 +48,6 @@ module Ayadn
|
|
83
48
|
end
|
84
49
|
end
|
85
50
|
|
86
|
-
def interactions(options)
|
87
|
-
begin
|
88
|
-
@stream.interactions(options)
|
89
|
-
rescue => e
|
90
|
-
Errors.global_error({error: e, caller: caller, data: [options]})
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
51
|
def whatstarred(username, options)
|
95
52
|
begin
|
96
53
|
@stream.whatstarred(username, options)
|
@@ -381,6 +338,7 @@ module Ayadn
|
|
381
338
|
|
382
339
|
def postinfo(post_id, options)
|
383
340
|
begin
|
341
|
+
Settings.options[:force] = true if options[:force]
|
384
342
|
Check.bad_post_id(post_id)
|
385
343
|
@view.downloading(options)
|
386
344
|
if options[:raw]
|
@@ -501,19 +459,13 @@ module Ayadn
|
|
501
459
|
begin
|
502
460
|
writer = Post.new
|
503
461
|
@view.clear_screen
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
resp = writer.send_embedded(text, FileOps.make_paths(embed))
|
509
|
-
else
|
510
|
-
puts Status.posting
|
511
|
-
resp = writer.post(args)
|
462
|
+
puts Status.posting
|
463
|
+
if options[:poster] # Returns the same options hash + poster embed
|
464
|
+
settings = options.dup
|
465
|
+
options = NowWatching.new.get_poster(settings[:poster], settings)
|
512
466
|
end
|
513
|
-
|
514
|
-
|
515
|
-
puts Status.yourpost
|
516
|
-
@view.show_posted(resp)
|
467
|
+
resp = writer.post({options: options, text: args.join(" ")})
|
468
|
+
save_and_view(resp)
|
517
469
|
rescue => e
|
518
470
|
Errors.global_error({error: e, caller: caller, data: [args, options]})
|
519
471
|
end
|
@@ -521,26 +473,20 @@ module Ayadn
|
|
521
473
|
|
522
474
|
def write(options)
|
523
475
|
begin
|
524
|
-
files = FileOps.make_paths(options['embed']) if options['embed']
|
525
476
|
writer = Post.new
|
526
477
|
puts Status.writing
|
527
478
|
puts Status.post
|
528
479
|
lines_array = writer.compose
|
529
480
|
writer.check_post_length(lines_array)
|
530
481
|
text = lines_array.join("\n")
|
531
|
-
if options['embed']
|
532
|
-
@view.clear_screen
|
533
|
-
puts Status.uploading(options['embed'])
|
534
|
-
resp = writer.send_embedded(text, files)
|
535
|
-
else
|
536
|
-
resp = writer.send_post(text)
|
537
|
-
end
|
538
482
|
@view.clear_screen
|
539
483
|
puts Status.posting
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
484
|
+
if options[:poster]
|
485
|
+
settings = options.dup
|
486
|
+
options = NowWatching.new.get_poster(settings[:poster], settings)
|
487
|
+
end
|
488
|
+
resp = writer.post({options: options, text: text})
|
489
|
+
save_and_view(resp)
|
544
490
|
rescue => e
|
545
491
|
Errors.global_error({error: e, caller: caller, data: [text, options]})
|
546
492
|
end
|
@@ -548,23 +494,21 @@ module Ayadn
|
|
548
494
|
|
549
495
|
def pmess(username, options = {})
|
550
496
|
begin
|
551
|
-
files = FileOps.make_paths(options['embed']) if options['embed']
|
552
497
|
Check.no_username(username)
|
553
498
|
username = [@workers.add_arobase(username)]
|
554
|
-
|
499
|
+
writer = Post.new
|
555
500
|
puts Status.message_from(username)
|
556
501
|
puts Status.message
|
557
|
-
lines_array =
|
558
|
-
|
502
|
+
lines_array = writer.compose
|
503
|
+
writer.check_message_length(lines_array)
|
559
504
|
text = lines_array.join("\n")
|
560
505
|
@view.clear_screen
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
puts Status.posting
|
566
|
-
resp = messenger.send_pm(username, text)
|
506
|
+
puts Status.posting
|
507
|
+
if options[:poster]
|
508
|
+
settings = options.dup
|
509
|
+
options = NowWatching.new.get_poster(settings[:poster], settings)
|
567
510
|
end
|
511
|
+
resp = writer.pm({options: options, text: text, username: username})
|
568
512
|
FileOps.save_message(resp) if Settings.options[:backup][:auto_save_sent_messages]
|
569
513
|
@view.clear_screen
|
570
514
|
puts Status.yourmessage(username[0])
|
@@ -574,29 +518,8 @@ module Ayadn
|
|
574
518
|
end
|
575
519
|
end
|
576
520
|
|
577
|
-
def send_to_channel(channel_id)
|
578
|
-
begin
|
579
|
-
channel_id = @workers.get_channel_id_from_alias(channel_id)
|
580
|
-
messenger = Post.new
|
581
|
-
puts Status.writing
|
582
|
-
puts Status.post
|
583
|
-
lines_array = messenger.compose
|
584
|
-
messenger.check_message_length(lines_array)
|
585
|
-
@view.clear_screen
|
586
|
-
puts Status.posting
|
587
|
-
resp = messenger.send_message(channel_id, lines_array.join("\n"))
|
588
|
-
FileOps.save_message(resp) if Settings.options[:backup][:auto_save_sent_messages]
|
589
|
-
@view.clear_screen
|
590
|
-
puts Status.yourpost
|
591
|
-
@view.show_posted(resp)
|
592
|
-
rescue => e
|
593
|
-
Errors.global_error({error: e, caller: caller, data: [channel_id]})
|
594
|
-
end
|
595
|
-
end
|
596
|
-
|
597
521
|
def reply(post_id, options = {})
|
598
522
|
begin
|
599
|
-
files = FileOps.make_paths(options['embed']) if options['embed']
|
600
523
|
post_id = @workers.get_real_post_id(post_id)
|
601
524
|
puts Status.replying_to(post_id)
|
602
525
|
replied_to = @api.get_details(post_id)
|
@@ -608,36 +531,49 @@ module Ayadn
|
|
608
531
|
Check.no_post(replied_to, post_id)
|
609
532
|
end
|
610
533
|
end
|
611
|
-
|
534
|
+
# ----
|
535
|
+
writer = Post.new
|
612
536
|
puts Status.writing
|
613
537
|
puts Status.reply
|
614
|
-
lines_array =
|
615
|
-
|
538
|
+
lines_array = writer.compose
|
539
|
+
writer.check_post_length(lines_array)
|
616
540
|
@view.clear_screen
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
puts Status.posting
|
623
|
-
resp = poster.send_reply(reply, post_id)
|
541
|
+
text = lines_array.join("\n")
|
542
|
+
replied_to = @workers.build_posts([replied_to['data']])
|
543
|
+
if options[:poster]
|
544
|
+
settings = options.dup
|
545
|
+
options = NowWatching.new.get_poster(settings[:poster], settings)
|
624
546
|
end
|
625
|
-
|
626
|
-
|
627
|
-
puts Status.done
|
628
|
-
|
547
|
+
resp = writer.reply({options: options, text: text, id: post_id, reply_to: replied_to})
|
548
|
+
# ----
|
629
549
|
options = options.dup
|
630
550
|
unless resp['data']['reply_to'].nil?
|
631
551
|
options[:reply_to] = resp['data']['reply_to'].to_i
|
632
552
|
end
|
633
553
|
options[:post_id] = resp['data']['id'].to_i
|
634
|
-
|
635
554
|
@view.render(@api.get_convo(post_id), options)
|
636
555
|
rescue => e
|
637
556
|
Errors.global_error({error: e, caller: caller, data: [post_id, options]})
|
638
557
|
end
|
639
558
|
end
|
640
559
|
|
560
|
+
def send_to_channel(channel_id)
|
561
|
+
begin
|
562
|
+
channel_id = @workers.get_channel_id_from_alias(channel_id)
|
563
|
+
writer = Post.new
|
564
|
+
puts Status.writing
|
565
|
+
puts Status.post
|
566
|
+
lines_array = writer.compose
|
567
|
+
writer.check_message_length(lines_array)
|
568
|
+
@view.clear_screen
|
569
|
+
puts Status.posting
|
570
|
+
resp = writer.message({id: channel_id, text: lines_array.join("\n")})
|
571
|
+
save_and_view(resp)
|
572
|
+
rescue => e
|
573
|
+
Errors.global_error({error: e, caller: caller, data: [channel_id]})
|
574
|
+
end
|
575
|
+
end
|
576
|
+
|
641
577
|
def nowplaying(options = {})
|
642
578
|
np = NowPlaying.new(@api, @view, @workers)
|
643
579
|
options['lastfm'] ? np.lastfm(options) : np.itunes(options)
|
@@ -693,5 +629,14 @@ module Ayadn
|
|
693
629
|
end
|
694
630
|
end
|
695
631
|
|
632
|
+
private
|
633
|
+
|
634
|
+
def save_and_view(resp)
|
635
|
+
FileOps.save_post(resp) if Settings.options[:backup][:auto_save_sent_posts]
|
636
|
+
@view.clear_screen
|
637
|
+
puts Status.yourpost
|
638
|
+
@view.show_posted(resp)
|
639
|
+
end
|
640
|
+
|
696
641
|
end
|
697
642
|
end
|
@@ -0,0 +1,191 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Ayadn
|
4
|
+
|
5
|
+
class Annotations
|
6
|
+
|
7
|
+
attr_accessor :content
|
8
|
+
|
9
|
+
def initialize(dic)
|
10
|
+
dic[:options] = {} if dic[:options].nil?
|
11
|
+
@content = base()
|
12
|
+
@content += files(dic) if dic[:options][:embed]
|
13
|
+
@content += youtube(dic) if dic[:options][:youtube]
|
14
|
+
@content += vimeo(dic) if dic[:options][:vimeo]
|
15
|
+
@content += nowplaying(dic) if dic[:options][:nowplaying]
|
16
|
+
@content += movie(dic) if dic[:options][:movie]
|
17
|
+
@content += tvshow(dic) if dic[:options][:tvshow]
|
18
|
+
end
|
19
|
+
|
20
|
+
def base
|
21
|
+
[
|
22
|
+
{
|
23
|
+
"type" => "com.ayadn.user",
|
24
|
+
"value" => {
|
25
|
+
"+net.app.core.user" => {
|
26
|
+
"user_id" => "#{Settings.config[:identity][:handle]}",
|
27
|
+
"format" => "basic"
|
28
|
+
}
|
29
|
+
}
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"type" => "com.ayadn.client",
|
33
|
+
"value" => {
|
34
|
+
"url" => "http://ayadn-app.net",
|
35
|
+
"author" => {
|
36
|
+
"name" => "Eric Dejonckheere",
|
37
|
+
"username" => "ericd",
|
38
|
+
"id" => "69904",
|
39
|
+
"email" => "eric@aya.io"
|
40
|
+
},
|
41
|
+
"version" => "#{Settings.config[:version]}"
|
42
|
+
}
|
43
|
+
}
|
44
|
+
]
|
45
|
+
end
|
46
|
+
|
47
|
+
def files(dic)
|
48
|
+
files = FileOps.make_paths(dic[:options][:embed])
|
49
|
+
data = FileOps.upload_files(files)
|
50
|
+
data.map do |obj|
|
51
|
+
{
|
52
|
+
"type" => "net.app.core.oembed",
|
53
|
+
"value" => {
|
54
|
+
"+net.app.core.file" => {
|
55
|
+
"file_id" => obj['data']['id'],
|
56
|
+
"file_token" => obj['data']['file_token'],
|
57
|
+
"format" => "oembed"
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def youtube(dic)
|
65
|
+
dic['link'] = dic[:options][:youtube][0]
|
66
|
+
req_url = "http://www.youtube.com/oembed?url=#{dic['link']}&format=json"
|
67
|
+
dic.merge!(JSON.parse(CNX.download(req_url)))
|
68
|
+
[{
|
69
|
+
"type" => "net.app.core.oembed",
|
70
|
+
"value" => {
|
71
|
+
"version" => "1.0",
|
72
|
+
"type" => "video",
|
73
|
+
"provider_name" => "YouTube",
|
74
|
+
"provider_url" => "http://youtube.com/",
|
75
|
+
"width" => dic['width'],
|
76
|
+
"height" => dic['height'],
|
77
|
+
"title" => dic['title'],
|
78
|
+
"author_name" => dic['author_name'],
|
79
|
+
"author_url" => dic['author_url'],
|
80
|
+
"embeddable_url" => dic['link'],
|
81
|
+
"html" => dic['html'],
|
82
|
+
"thumbnail_url" => dic['thumbnail_url'],
|
83
|
+
"thumbnail_height" => dic['thumbnail_height'],
|
84
|
+
"thumbnail_width" => dic['thumbnail_width']
|
85
|
+
}
|
86
|
+
},
|
87
|
+
{
|
88
|
+
"type" => "com.ayadn.youtube",
|
89
|
+
"value" => {
|
90
|
+
"title" => dic['title'],
|
91
|
+
"link" => dic['link']
|
92
|
+
}
|
93
|
+
}]
|
94
|
+
end
|
95
|
+
|
96
|
+
def vimeo(dic)
|
97
|
+
dic[:link] = dic[:options][:vimeo][0]
|
98
|
+
req_url = "http://vimeo.com/api/oembed.json?url=#{dic[:link]}"
|
99
|
+
dic.merge!(JSON.parse(CNX.download(req_url)))
|
100
|
+
[{
|
101
|
+
"type" => "net.app.core.oembed",
|
102
|
+
"value" => {
|
103
|
+
"version" => "1.0",
|
104
|
+
"type" => "video",
|
105
|
+
"provider_name" => "Vimeo",
|
106
|
+
"provider_url" => "http://vimeo.com/",
|
107
|
+
"width" => dic['width'],
|
108
|
+
"height" => dic['height'],
|
109
|
+
"title" => dic['title'],
|
110
|
+
"author_name" => dic['author_name'],
|
111
|
+
"author_url" => dic['author_url'],
|
112
|
+
"embeddable_url" => dic[:link],
|
113
|
+
"html" => dic['html'],
|
114
|
+
"thumbnail_url" => dic['thumbnail_url'],
|
115
|
+
"thumbnail_height" => dic['thumbnail_height'],
|
116
|
+
"thumbnail_width" => dic['thumbnail_width']
|
117
|
+
}
|
118
|
+
},
|
119
|
+
{
|
120
|
+
"type" => "com.ayadn.vimeo",
|
121
|
+
"value" => {
|
122
|
+
"title" => dic['title'],
|
123
|
+
"link" => dic[:link]
|
124
|
+
}
|
125
|
+
}]
|
126
|
+
end
|
127
|
+
|
128
|
+
def movie(dic)
|
129
|
+
[{
|
130
|
+
"type" => "com.ayadn.movie",
|
131
|
+
"value" => {
|
132
|
+
"title" => dic[:title],
|
133
|
+
"source" => dic[:source]
|
134
|
+
}
|
135
|
+
}]
|
136
|
+
end
|
137
|
+
|
138
|
+
def tvshow(dic)
|
139
|
+
[{
|
140
|
+
"type" => "com.ayadn.tvshow",
|
141
|
+
"value" => {
|
142
|
+
"title" => dic[:title],
|
143
|
+
"source" => dic[:source]
|
144
|
+
}
|
145
|
+
}]
|
146
|
+
end
|
147
|
+
|
148
|
+
def nowplaying_silent(dic)
|
149
|
+
[{
|
150
|
+
"type" => "com.ayadn.nowplaying",
|
151
|
+
"value" => {
|
152
|
+
"status" => "no-url",
|
153
|
+
"source" => dic[:source]
|
154
|
+
}
|
155
|
+
}]
|
156
|
+
end
|
157
|
+
|
158
|
+
def nowplaying(dic)
|
159
|
+
return nowplaying_silent(dic) if dic[:options][:no_url]
|
160
|
+
[{
|
161
|
+
"type" => "com.ayadn.nowplaying",
|
162
|
+
"value" => {
|
163
|
+
"title" => dic[:title],
|
164
|
+
"artist" => dic[:artist],
|
165
|
+
"artwork" => dic[:artwork],
|
166
|
+
"link" => dic[:link],
|
167
|
+
"source" => dic[:source]
|
168
|
+
}
|
169
|
+
},
|
170
|
+
{
|
171
|
+
"type" => "net.app.core.oembed",
|
172
|
+
"value" => {
|
173
|
+
"version" => "1.0",
|
174
|
+
"type" => "photo",
|
175
|
+
"width" => dic[:width],
|
176
|
+
"height" => dic[:height],
|
177
|
+
"title" => dic[:title],
|
178
|
+
"url" => dic[:artwork],
|
179
|
+
"embeddable_url" => dic[:artwork],
|
180
|
+
"provider_url" => "https://itunes.apple.com",
|
181
|
+
"provider_name" => "iTunes",
|
182
|
+
"thumbnail_url" => dic[:artwork_thumb],
|
183
|
+
"thumbnail_width" => dic[:width_thumb],
|
184
|
+
"thumbnail_height" => dic[:height_thumb]
|
185
|
+
}
|
186
|
+
}]
|
187
|
+
end
|
188
|
+
|
189
|
+
end
|
190
|
+
|
191
|
+
end
|