brainzz 0.0.13 → 0.0.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +25 -0
- data/lib/brainzz.rb +5 -0
- data/lib/brainzz/commands/channel_details_command.rb +29 -0
- data/lib/brainzz/core.rb +4 -0
- data/lib/brainzz/models/channel.rb +107 -0
- data/lib/brainzz/params/channel_details_params.rb +13 -0
- data/lib/brainzz/responses/channel_details_response.rb +5 -0
- data/lib/brainzz/responses/details_response.rb +25 -0
- data/lib/brainzz/responses/video_details_response.rb +2 -10
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c3b7c8a7a3823fe06e1f4b09a528d6f9772f6f7
|
4
|
+
data.tar.gz: 9f415ab84b1f27e291c414a7832a3b72ecc751e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ee2a8f8a1b3fe7d5f2e18b3bd5e6e50bcdb67a2daef4d37d361f0d5f4e304f01d601cd71c4d18cd1c92cdcbab99c9e4111a9eb60d631887d851f2c5940f4456
|
7
|
+
data.tar.gz: 46fbc04ae7d163b4c03388aff58d006fd47bcb44fddd35b9eb2298081d30dfdd63309c8b25db8d1457b2b6d17c1d3c249a5ef673de4db9aeaa4396f5b41da523
|
data/README.md
CHANGED
@@ -72,6 +72,31 @@ Every response from the public API is wrapped in a `Response` object
|
|
72
72
|
that will always have the same interface regardless of request.
|
73
73
|
The `Response#data` attribute will be an object specific to the data requested.
|
74
74
|
|
75
|
+
### channel_details_for
|
76
|
+
|
77
|
+
Accepts an array of channel ids.
|
78
|
+
The maximum length of the array is determined by YouTube.
|
79
|
+
|
80
|
+
This endpoint returns a hash with channel ids as keys
|
81
|
+
and channel objects as the values.
|
82
|
+
|
83
|
+
#### Channel Attributes Accessible
|
84
|
+
|
85
|
+
* id
|
86
|
+
* title
|
87
|
+
* published_at
|
88
|
+
* description
|
89
|
+
* uploads_playlist
|
90
|
+
* likes_playlist
|
91
|
+
* google_plus_id
|
92
|
+
* view_count
|
93
|
+
* comment_count
|
94
|
+
* subscriber_count
|
95
|
+
* video_count
|
96
|
+
|
97
|
+
#### Parameters
|
98
|
+
|
99
|
+
* channel ids (Array[String])
|
75
100
|
|
76
101
|
### playlist_items_for
|
77
102
|
|
data/lib/brainzz.rb
CHANGED
@@ -10,6 +10,7 @@ require_relative 'brainzz/enums/view_source_enum'
|
|
10
10
|
|
11
11
|
require_relative 'brainzz/models/base_model'
|
12
12
|
require_relative 'brainzz/models/video'
|
13
|
+
require_relative 'brainzz/models/channel'
|
13
14
|
require_relative 'brainzz/models/stat'
|
14
15
|
require_relative 'brainzz/models/video_stat'
|
15
16
|
require_relative 'brainzz/models/channel_stat'
|
@@ -37,12 +38,15 @@ require_relative 'brainzz/params/base_params'
|
|
37
38
|
require_relative 'brainzz/params/analytics_params'
|
38
39
|
require_relative 'brainzz/params/stats_params'
|
39
40
|
require_relative 'brainzz/params/video_details_params'
|
41
|
+
require_relative 'brainzz/params/channel_details_params'
|
40
42
|
require_relative 'brainzz/params/video_stats_params'
|
41
43
|
require_relative 'brainzz/params/channel_stats_params'
|
42
44
|
require_relative 'brainzz/params/playlist_items_params'
|
43
45
|
|
44
46
|
require_relative 'brainzz/responses/playlist_items_response'
|
47
|
+
require_relative 'brainzz/responses/details_response'
|
45
48
|
require_relative 'brainzz/responses/video_details_response'
|
49
|
+
require_relative 'brainzz/responses/channel_details_response'
|
46
50
|
require_relative 'brainzz/responses/video_stats_response'
|
47
51
|
require_relative 'brainzz/responses/view_count_response'
|
48
52
|
require_relative 'brainzz/responses/like_count_response'
|
@@ -62,6 +66,7 @@ require_relative 'brainzz/commands/base_command'
|
|
62
66
|
require_relative 'brainzz/commands/data_command'
|
63
67
|
require_relative 'brainzz/commands/playlist_items_command'
|
64
68
|
require_relative 'brainzz/commands/video_details_command'
|
69
|
+
require_relative 'brainzz/commands/channel_details_command'
|
65
70
|
require_relative 'brainzz/commands/analytics_command'
|
66
71
|
require_relative 'brainzz/commands/stats_command'
|
67
72
|
require_relative 'brainzz/commands/video_stats_command'
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Brainzz
|
2
|
+
class ChannelDetailsCommand < DataCommand
|
3
|
+
class << self
|
4
|
+
private
|
5
|
+
|
6
|
+
def on_execute(channel_ids)
|
7
|
+
channel_details_params = ChannelDetailsParams.new(channel_ids)
|
8
|
+
|
9
|
+
if channel_details_params.valid?
|
10
|
+
response = get(channel_details_params)
|
11
|
+
ChannelDetailsResponse.new response
|
12
|
+
else
|
13
|
+
ChannelDetailsResponse.new
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def endpoint
|
18
|
+
'channels'
|
19
|
+
end
|
20
|
+
|
21
|
+
def params(channel_details_params)
|
22
|
+
super.merge({
|
23
|
+
'id' => channel_details_params.channel_ids.join(','),
|
24
|
+
'part' => 'snippet,contentDetails,statistics'
|
25
|
+
})
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/brainzz/core.rb
CHANGED
@@ -0,0 +1,107 @@
|
|
1
|
+
module Brainzz
|
2
|
+
class Channel < BaseModel
|
3
|
+
attr_accessor :id,
|
4
|
+
:title,
|
5
|
+
:published_at,
|
6
|
+
:description,
|
7
|
+
:uploads_playlist,
|
8
|
+
:likes_playlist,
|
9
|
+
:google_plus_id,
|
10
|
+
:view_count,
|
11
|
+
:comment_count,
|
12
|
+
:subscriber_count,
|
13
|
+
:video_count
|
14
|
+
|
15
|
+
|
16
|
+
def initialize(hash = {})
|
17
|
+
@hash = hash || {}
|
18
|
+
|
19
|
+
@id = transform(hash_id)
|
20
|
+
|
21
|
+
initialize_snippet
|
22
|
+
initialize_content_details
|
23
|
+
initialize_statistics
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def hash_id
|
29
|
+
@hash['channelId'] || @hash['id']
|
30
|
+
end
|
31
|
+
|
32
|
+
def initialize_snippet
|
33
|
+
@title = transform(hash_title)
|
34
|
+
@description = transform(hash_description)
|
35
|
+
@published_at = transform_date(hash_published_at)
|
36
|
+
end
|
37
|
+
|
38
|
+
def snippet
|
39
|
+
@hash['snippet'] || {}
|
40
|
+
end
|
41
|
+
|
42
|
+
def hash_title
|
43
|
+
snippet['title']
|
44
|
+
end
|
45
|
+
|
46
|
+
def hash_description
|
47
|
+
snippet['description']
|
48
|
+
end
|
49
|
+
|
50
|
+
def hash_published_at
|
51
|
+
snippet['publishedAt']
|
52
|
+
end
|
53
|
+
|
54
|
+
def initialize_content_details
|
55
|
+
@uploads_playlist = transform(hash_uploads_playlist)
|
56
|
+
@likes_playlist = transform(hash_likes_playlist)
|
57
|
+
@google_plus_id = transform(hash_google_plus_id)
|
58
|
+
end
|
59
|
+
|
60
|
+
def content_details
|
61
|
+
@hash['contentDetails'] || {}
|
62
|
+
end
|
63
|
+
|
64
|
+
def related_playlists
|
65
|
+
content_details['relatedPlaylists']
|
66
|
+
end
|
67
|
+
|
68
|
+
def hash_google_plus_id
|
69
|
+
content_details['googlePlusUserId']
|
70
|
+
end
|
71
|
+
|
72
|
+
def hash_uploads_playlist
|
73
|
+
related_playlists['uploads']
|
74
|
+
end
|
75
|
+
|
76
|
+
def hash_likes_playlist
|
77
|
+
related_playlists['likes']
|
78
|
+
end
|
79
|
+
|
80
|
+
def initialize_statistics
|
81
|
+
@view_count = transform(hash_view_count)
|
82
|
+
@comment_count = transform(hash_comment_count)
|
83
|
+
@subscriber_count = transform(hash_subscriber_count)
|
84
|
+
@video_count = transform(hash_video_count)
|
85
|
+
end
|
86
|
+
|
87
|
+
def statistics
|
88
|
+
@hash['statistics'] || {}
|
89
|
+
end
|
90
|
+
|
91
|
+
def hash_view_count
|
92
|
+
statistics['viewCount']
|
93
|
+
end
|
94
|
+
|
95
|
+
def hash_comment_count
|
96
|
+
statistics['commentCount']
|
97
|
+
end
|
98
|
+
|
99
|
+
def hash_subscriber_count
|
100
|
+
statistics['subscriberCount']
|
101
|
+
end
|
102
|
+
|
103
|
+
def hash_video_count
|
104
|
+
statistics['videoCount']
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Brainzz
|
2
|
+
class DetailsResponse < ::Reverb::Response
|
3
|
+
class << self
|
4
|
+
private
|
5
|
+
|
6
|
+
def make_with_model(model)
|
7
|
+
@model = model
|
8
|
+
end
|
9
|
+
|
10
|
+
def model
|
11
|
+
@model
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def on_success
|
16
|
+
self.data = {}
|
17
|
+
|
18
|
+
items = body['items'] || []
|
19
|
+
items.each do |item|
|
20
|
+
instance = self.class.send(:model).new(item)
|
21
|
+
self.data[instance.id] = instance
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,13 +1,5 @@
|
|
1
1
|
module Brainzz
|
2
|
-
class VideoDetailsResponse <
|
3
|
-
|
4
|
-
self.data = {}
|
5
|
-
|
6
|
-
items = body['items'] || []
|
7
|
-
items.each do |item|
|
8
|
-
video = Video.new(item)
|
9
|
-
self.data[video.id] = video
|
10
|
-
end
|
11
|
-
end
|
2
|
+
class VideoDetailsResponse < DetailsResponse
|
3
|
+
make_with_model Video
|
12
4
|
end
|
13
5
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brainzz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Herrick
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-07-
|
13
|
+
date: 2015-07-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
@@ -184,6 +184,7 @@ files:
|
|
184
184
|
- lib/brainzz/commands/annotations_clicked_by_day_command.rb
|
185
185
|
- lib/brainzz/commands/annotations_clicked_totals_command.rb
|
186
186
|
- lib/brainzz/commands/base_command.rb
|
187
|
+
- lib/brainzz/commands/channel_details_command.rb
|
187
188
|
- lib/brainzz/commands/channel_stats_command.rb
|
188
189
|
- lib/brainzz/commands/channel_subscribers_gained_by_day_command.rb
|
189
190
|
- lib/brainzz/commands/channel_subscribers_gained_totals_command.rb
|
@@ -234,6 +235,7 @@ files:
|
|
234
235
|
- lib/brainzz/models/annotations_clickable_count.rb
|
235
236
|
- lib/brainzz/models/annotations_clicked_count.rb
|
236
237
|
- lib/brainzz/models/base_model.rb
|
238
|
+
- lib/brainzz/models/channel.rb
|
237
239
|
- lib/brainzz/models/channel_stat.rb
|
238
240
|
- lib/brainzz/models/channel_subscribers_gained_count.rb
|
239
241
|
- lib/brainzz/models/channel_subscribers_lost_count.rb
|
@@ -255,6 +257,7 @@ files:
|
|
255
257
|
- lib/brainzz/models/view_percentage.rb
|
256
258
|
- lib/brainzz/params/analytics_params.rb
|
257
259
|
- lib/brainzz/params/base_params.rb
|
260
|
+
- lib/brainzz/params/channel_details_params.rb
|
258
261
|
- lib/brainzz/params/channel_stats_params.rb
|
259
262
|
- lib/brainzz/params/playlist_items_params.rb
|
260
263
|
- lib/brainzz/params/stats_params.rb
|
@@ -262,9 +265,11 @@ files:
|
|
262
265
|
- lib/brainzz/params/video_stats_params.rb
|
263
266
|
- lib/brainzz/responses/annotations_clickable_response.rb
|
264
267
|
- lib/brainzz/responses/annotations_clicked_response.rb
|
268
|
+
- lib/brainzz/responses/channel_details_response.rb
|
265
269
|
- lib/brainzz/responses/channel_subscribers_gained_response.rb
|
266
270
|
- lib/brainzz/responses/channel_subscribers_lost_response.rb
|
267
271
|
- lib/brainzz/responses/comment_count_response.rb
|
272
|
+
- lib/brainzz/responses/details_response.rb
|
268
273
|
- lib/brainzz/responses/dislike_count_response.rb
|
269
274
|
- lib/brainzz/responses/like_count_response.rb
|
270
275
|
- lib/brainzz/responses/playlist_items_response.rb
|