youtuberb 0.1.0 → 0.1.3
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/Gemfile.lock +5 -27
- data/README.md +41 -1
- data/lib/you_tube/client.rb +2 -12
- data/lib/you_tube/objects/channel.rb +29 -0
- data/lib/you_tube/resources/channels.rb +25 -0
- data/lib/you_tube/resources/videos.rb +0 -13
- data/lib/you_tube/version.rb +1 -1
- data/lib/you_tube.rb +2 -4
- data/youtuberb.gemspec +2 -4
- metadata +8 -35
- data/lib/you_tube/objects/activity.rb +0 -4
- data/lib/you_tube/resources/activities.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f8d3b68ce9d206b19c96ccf31e5707379fcb98a989805f133df36a59c440e65
|
4
|
+
data.tar.gz: 0f9ef583ce567c2dcc7da4474cd9575efd54ba967a59c1e1809a7bbc78f07d5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6fda64e56e4ac55557fb661a3d35e952bf5f2d415848598598cae30b0a12cd5ce8ed46ee62df1107030c2102039e53544f5d58128b711191ec4556ba539a0b03
|
7
|
+
data.tar.gz: 86e6f3c535e6d1e40947237c5dc89f0330edf64ea4fa438dd18075fc91be5ec1cb33b3c58956507f0084e3bae7c7967d0c0e551fbeea96db5f95dcde6b5d5e7f
|
data/Gemfile.lock
CHANGED
@@ -1,39 +1,17 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
youtuberb (0.1.
|
5
|
-
faraday (~>
|
6
|
-
faraday-multipart (~> 1.0)
|
7
|
-
faraday_middleware (~> 1.1)
|
4
|
+
youtuberb (0.1.3)
|
5
|
+
faraday (~> 2.0)
|
8
6
|
|
9
7
|
GEM
|
10
8
|
remote: https://rubygems.org/
|
11
9
|
specs:
|
12
10
|
dotenv (2.7.6)
|
13
|
-
faraday (
|
14
|
-
faraday-
|
15
|
-
faraday-em_synchrony (~> 1.0)
|
16
|
-
faraday-excon (~> 1.1)
|
17
|
-
faraday-httpclient (~> 1.0.1)
|
18
|
-
faraday-net_http (~> 1.0)
|
19
|
-
faraday-net_http_persistent (~> 1.1)
|
20
|
-
faraday-patron (~> 1.0)
|
21
|
-
faraday-rack (~> 1.0)
|
22
|
-
multipart-post (>= 1.2, < 3)
|
11
|
+
faraday (2.2.0)
|
12
|
+
faraday-net_http (~> 2.0)
|
23
13
|
ruby2_keywords (>= 0.0.4)
|
24
|
-
faraday-
|
25
|
-
faraday-em_synchrony (1.0.0)
|
26
|
-
faraday-excon (1.1.0)
|
27
|
-
faraday-httpclient (1.0.1)
|
28
|
-
faraday-multipart (1.0.3)
|
29
|
-
multipart-post (>= 1.2, < 3)
|
30
|
-
faraday-net_http (1.0.1)
|
31
|
-
faraday-net_http_persistent (1.2.0)
|
32
|
-
faraday-patron (1.0.0)
|
33
|
-
faraday-rack (1.0.0)
|
34
|
-
faraday_middleware (1.2.0)
|
35
|
-
faraday (~> 1.0)
|
36
|
-
multipart-post (2.1.1)
|
14
|
+
faraday-net_http (2.0.2)
|
37
15
|
rake (13.0.6)
|
38
16
|
ruby2_keywords (0.0.5)
|
39
17
|
|
data/README.md
CHANGED
@@ -17,15 +17,39 @@ gem 'youtuberb'
|
|
17
17
|
### Set Client Details
|
18
18
|
|
19
19
|
Firstly you'll need to set an API Key and an Access Token.
|
20
|
+
An Access Token will be an OAuth2 token generated after authentication.
|
20
21
|
|
21
22
|
```ruby
|
22
23
|
@client = YouTube::Client.new(api_key: "", access_token: "")
|
23
24
|
```
|
24
25
|
|
26
|
+
### Channels
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
# Get the Channel details of the currently authenticated user
|
30
|
+
@client.channels.mine
|
31
|
+
|
32
|
+
# Get a Channel by ID
|
33
|
+
@client.channels.retrieve(id: "channel_id")
|
34
|
+
|
35
|
+
# Get a Channel by username
|
36
|
+
@client.channels.retrieve(username: "username")
|
37
|
+
```
|
38
|
+
|
25
39
|
### Videos
|
26
40
|
|
27
41
|
```ruby
|
28
|
-
|
42
|
+
# Get a single video
|
43
|
+
@client.videos.list(id: "abc123")
|
44
|
+
|
45
|
+
# Get multiple videos
|
46
|
+
@client.videos.list(id: "abc123,123abc")
|
47
|
+
|
48
|
+
# Liked videos for the currently authenticated user
|
49
|
+
@client.videos.liked
|
50
|
+
|
51
|
+
# Get a video owned by the current user. This retrieves extra information so will only work on videos owned by the current user.
|
52
|
+
@client.videos.retrieve(id: "abc123")
|
29
53
|
```
|
30
54
|
|
31
55
|
### Playlists
|
@@ -45,6 +69,22 @@ Firstly you'll need to set an API Key and an Access Token.
|
|
45
69
|
@client.playlists.update(id: "playlist_id", title: "My Playlist", privacy_status: "public")
|
46
70
|
@client.playlists.delete(id: "playlist_id")
|
47
71
|
```
|
72
|
+
### Playlist Items
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
# Playlist Items for a Playlist
|
76
|
+
@client.playlist_items.list(playlist_id: "playlist_id")
|
77
|
+
|
78
|
+
@client.playlist_items.retrieve(id: "playlist_item_id")
|
79
|
+
|
80
|
+
# Add a video to a playlist
|
81
|
+
@client.playlist_items.create(playlist_id: "playlist_id", video_id: "video_id")
|
82
|
+
|
83
|
+
@client.playlist_items.update(id: "playlist_item_id", playlist_id: "playlist_id", video_id: "video_id")
|
84
|
+
|
85
|
+
@client.playlist_items.delete(id: "playlist_id")
|
86
|
+
```
|
87
|
+
|
48
88
|
## Contributing
|
49
89
|
|
50
90
|
Bug reports and pull requests are welcome on GitHub at https://github.com/deanpcmad/youtuberb.
|
data/lib/you_tube/client.rb
CHANGED
@@ -13,8 +13,8 @@ module YouTube
|
|
13
13
|
@stubs = stubs
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
17
|
-
|
16
|
+
def channels
|
17
|
+
ChannelsResource.new(self)
|
18
18
|
end
|
19
19
|
|
20
20
|
def videos
|
@@ -34,21 +34,11 @@ module YouTube
|
|
34
34
|
conn.request :authorization, :Bearer, access_token
|
35
35
|
conn.request :json
|
36
36
|
|
37
|
-
conn.response :dates
|
38
37
|
conn.response :json, content_type: "application/json"
|
39
38
|
|
40
39
|
conn.adapter adapter, @stubs
|
41
40
|
end
|
42
41
|
end
|
43
42
|
|
44
|
-
# Uses Faraday Multipart (lostisland/faraday-multipart)
|
45
|
-
def connection_upload
|
46
|
-
@connection ||= Faraday.new("https://www.googleapis.com/upload/youtube/v3/") do |conn|
|
47
|
-
conn.request :authorization, :Bearer, access_token
|
48
|
-
conn.request :multipart
|
49
|
-
conn.response :json, content_type: "application/json"
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
43
|
end
|
54
44
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module YouTube
|
2
|
+
class Channel < Object
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
super options
|
6
|
+
|
7
|
+
if options["snippet"]
|
8
|
+
self.title = options["snippet"]["title"]
|
9
|
+
self.description = options["snippet"]["description"]
|
10
|
+
self.published_at = options["snippet"]["publishedAt"]
|
11
|
+
|
12
|
+
if options["snippet"]["thumbnails"]
|
13
|
+
thumb = options["snippet"]["thumbnails"]
|
14
|
+
self.thumbnail_default = thumb["default"]["url"] if thumb["default"]
|
15
|
+
self.thumbnail_medium = thumb["medium"]["url"] if thumb["medium"]
|
16
|
+
self.thumbnail_high = thumb["high"]["url"] if thumb["high"]
|
17
|
+
self.thumbnail_standard = thumb["standard"]["url"] if thumb["standard"]
|
18
|
+
self.thumbnail_maxres = thumb["maxres"]["url"] if thumb["maxres"]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
if options["status"]
|
23
|
+
self.privacy_status = options["status"]["privacyStatus"]
|
24
|
+
self.long_uploads_status = options["status"]["longUploadsStatus"]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module YouTube
|
2
|
+
class ChannelsResource < Resource
|
3
|
+
|
4
|
+
PARTS = "id,snippet,status,statistics"
|
5
|
+
|
6
|
+
# Retrieve the channel of the currently authenticated user
|
7
|
+
def mine
|
8
|
+
response = get_request "channels", params: {mine: true, part: PARTS}
|
9
|
+
return nil if response.body["pageInfo"]["totalResults"] == 0
|
10
|
+
Channel.new(response.body["items"][0])
|
11
|
+
end
|
12
|
+
|
13
|
+
# Retrieve a Channel by its ID or Username
|
14
|
+
def retrieve(id: nil, username: nil)
|
15
|
+
attrs = {}
|
16
|
+
attrs[:id] = id if id
|
17
|
+
attrs[:forUsername] = username if username
|
18
|
+
|
19
|
+
response = get_request "channels", params: attrs.merge({part: PARTS})
|
20
|
+
return nil if response.body["pageInfo"]["totalResults"] == 0
|
21
|
+
Channel.new(response.body["items"][0])
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -24,18 +24,5 @@ module YouTube
|
|
24
24
|
Video.new(response.body["items"][0])
|
25
25
|
end
|
26
26
|
|
27
|
-
# Uploads a video
|
28
|
-
# Currently just uploads a video
|
29
|
-
# Needs more testing
|
30
|
-
# https://developers.google.com/youtube/v3/docs/videos/insert
|
31
|
-
def upload(file:)
|
32
|
-
payload = {}
|
33
|
-
payload[:media] = Faraday::Multipart::FilePart.new(file, "video/*")
|
34
|
-
|
35
|
-
response = client.connection_upload.post "videos", payload
|
36
|
-
|
37
|
-
response.body
|
38
|
-
end
|
39
|
-
|
40
27
|
end
|
41
28
|
end
|
data/lib/you_tube/version.rb
CHANGED
data/lib/you_tube.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
require "faraday"
|
2
|
-
require "faraday_middleware"
|
3
|
-
require "faraday/multipart"
|
4
2
|
require "json"
|
5
3
|
|
6
4
|
require_relative "you_tube/version"
|
@@ -13,12 +11,12 @@ module YouTube
|
|
13
11
|
autoload :Resource, "you_tube/resource"
|
14
12
|
autoload :Object, "you_tube/object"
|
15
13
|
|
16
|
-
autoload :
|
14
|
+
autoload :ChannelsResource, "you_tube/resources/channels"
|
17
15
|
autoload :VideosResource, "you_tube/resources/videos"
|
18
16
|
autoload :PlaylistsResource, "you_tube/resources/playlists"
|
19
17
|
autoload :PlaylistItemsResource, "you_tube/resources/playlist_items"
|
20
18
|
|
21
|
-
autoload :
|
19
|
+
autoload :Channel, "you_tube/objects/channel"
|
22
20
|
autoload :Video, "you_tube/objects/video"
|
23
21
|
autoload :Playlist, "you_tube/objects/playlist"
|
24
22
|
autoload :PlaylistItem, "you_tube/objects/playlist_item"
|
data/youtuberb.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.required_ruby_version = ">= 2.6.0"
|
15
15
|
|
16
16
|
spec.metadata["homepage_uri"] = spec.homepage
|
17
|
-
|
17
|
+
spec.metadata["source_code_uri"] = "https://github.com/deanpcmad/youtuberb"
|
18
18
|
# spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
19
19
|
|
20
20
|
# Specify which files should be added to the gem when it is released.
|
@@ -28,7 +28,5 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
29
29
|
spec.require_paths = ["lib"]
|
30
30
|
|
31
|
-
spec.add_dependency "faraday", "~>
|
32
|
-
spec.add_dependency "faraday_middleware", "~> 1.1"
|
33
|
-
spec.add_dependency "faraday-multipart", "~> 1.0"
|
31
|
+
spec.add_dependency "faraday", "~> 2.0"
|
34
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: youtuberb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dean Perry
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -16,42 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: faraday_middleware
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.1'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.1'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: faraday-multipart
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '1.0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.0'
|
26
|
+
version: '2.0'
|
55
27
|
description:
|
56
28
|
email:
|
57
29
|
- dean@deanpcmad.com
|
@@ -72,12 +44,12 @@ files:
|
|
72
44
|
- lib/you_tube/collection.rb
|
73
45
|
- lib/you_tube/error.rb
|
74
46
|
- lib/you_tube/object.rb
|
75
|
-
- lib/you_tube/objects/
|
47
|
+
- lib/you_tube/objects/channel.rb
|
76
48
|
- lib/you_tube/objects/playlist.rb
|
77
49
|
- lib/you_tube/objects/playlist_item.rb
|
78
50
|
- lib/you_tube/objects/video.rb
|
79
51
|
- lib/you_tube/resource.rb
|
80
|
-
- lib/you_tube/resources/
|
52
|
+
- lib/you_tube/resources/channels.rb
|
81
53
|
- lib/you_tube/resources/playlist_items.rb
|
82
54
|
- lib/you_tube/resources/playlists.rb
|
83
55
|
- lib/you_tube/resources/videos.rb
|
@@ -89,6 +61,7 @@ licenses:
|
|
89
61
|
- MIT
|
90
62
|
metadata:
|
91
63
|
homepage_uri: https://deanpcmad.com
|
64
|
+
source_code_uri: https://github.com/deanpcmad/youtuberb
|
92
65
|
post_install_message:
|
93
66
|
rdoc_options: []
|
94
67
|
require_paths:
|
@@ -104,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
77
|
- !ruby/object:Gem::Version
|
105
78
|
version: '0'
|
106
79
|
requirements: []
|
107
|
-
rubygems_version: 3.
|
80
|
+
rubygems_version: 3.2.22
|
108
81
|
signing_key:
|
109
82
|
specification_version: 4
|
110
83
|
summary: A Ruby library for interacting with the YouTube API
|
@@ -1,11 +0,0 @@
|
|
1
|
-
module YouTube
|
2
|
-
class ActivitiesResource < Resource
|
3
|
-
|
4
|
-
def list
|
5
|
-
response = get_request "activities", params: {home: true}
|
6
|
-
# response = post_request("games", body: "fields id,name,status,url,created_at,updated_at;")
|
7
|
-
# Collection.from_response(response, type: Game)
|
8
|
-
end
|
9
|
-
|
10
|
-
end
|
11
|
-
end
|