youtube_parser 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +12 -0
- data/lib/youtube_parser.rb +1 -0
- data/lib/youtube_parser/channels/channels_section.rb +33 -0
- data/lib/youtube_parser/config/keys.yml +5 -1
- data/lib/youtube_parser/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f79ddcdfbe0953a3571e1e27abdec5ea0993d5f0426f5d7393a518966bdd7b9b
|
4
|
+
data.tar.gz: 6ab6fe4c91a6affb19ab86dd07508fb8f230380cd62306012bbcd95e37f55537
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b82d6e48e9c73fb02129aee92874becfe3203269ee47942ed92814c5db3f54ffb29c20613916d6e631baf2def4a592ae5a4b34baea200a14d2253ab141bcded
|
7
|
+
data.tar.gz: f676707c34aa5d7c1b7347c1bce676dd117a72eb7cd278de05ecf00953202b31387b4b5b6d04e27287d62a416ace34e7ca65cc378396fa93e792755477280473
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -47,6 +47,18 @@ end
|
|
47
47
|
YoutubeParser::Search::Channels.new(options).info
|
48
48
|
```
|
49
49
|
|
50
|
+
To parse channel related channels:
|
51
|
+
```ruby
|
52
|
+
require 'youtube_parser'
|
53
|
+
|
54
|
+
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 '\
|
55
|
+
'(KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
|
56
|
+
options = { search_query: 'search query',
|
57
|
+
user_agent: user_agent }
|
58
|
+
|
59
|
+
YoutubeParser::Channels::ChannelsSection.new(options).info
|
60
|
+
```
|
61
|
+
|
50
62
|
## Contributing
|
51
63
|
|
52
64
|
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/youtube_parser. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
data/lib/youtube_parser.rb
CHANGED
@@ -16,6 +16,7 @@ require 'youtube_parser/base_parser'
|
|
16
16
|
require 'youtube_parser/channel'
|
17
17
|
require 'youtube_parser/channels/about_section'
|
18
18
|
require 'youtube_parser/channels/videos_section'
|
19
|
+
require 'youtube_parser/channels/channels_section'
|
19
20
|
require 'youtube_parser/search/channels'
|
20
21
|
|
21
22
|
module YoutubeParser
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module YoutubeParser
|
4
|
+
module Channels
|
5
|
+
class ChannelsSection < BaseParser
|
6
|
+
options :channel_url
|
7
|
+
|
8
|
+
def info
|
9
|
+
@info ||= channel_urls.map do |url|
|
10
|
+
channel_url = "#{client.class::BASE_URL}#{url}"
|
11
|
+
opts = { channel_url: channel_url, client: client }
|
12
|
+
|
13
|
+
YoutubeParser::Channel.new(opts).info
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def channel_urls
|
20
|
+
channels.map { |c| c.dig(*keys.channels_section_urls) }.compact
|
21
|
+
end
|
22
|
+
|
23
|
+
def channels
|
24
|
+
tabs = json.dig(*keys.section_tabs) || []
|
25
|
+
tabs.map { |t| t.dig(*keys.channels_section) }.compact.first || []
|
26
|
+
end
|
27
|
+
|
28
|
+
def json
|
29
|
+
@json ||= client.get("#{options.channel_url}/channels")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -34,4 +34,8 @@ channels_contents: ['itemSectionRenderer', 'contents']
|
|
34
34
|
channel_renderer: ['channelRenderer']
|
35
35
|
continuations: ['continuations']
|
36
36
|
renderer_continuations: ['itemSectionRenderer', 'continuations']
|
37
|
-
continuation: ['nextContinuationData', 'continuation']
|
37
|
+
continuation: ['nextContinuationData', 'continuation']
|
38
|
+
channels_section: ['tabRenderer', 'content', 'sectionListRenderer', 'contents',
|
39
|
+
0, 'itemSectionRenderer', 'contents', 0, 'gridRenderer', 'items']
|
40
|
+
channels_section_urls: ['gridChannelRenderer', 'navigationEndpoint',
|
41
|
+
'commandMetadata', 'webCommandMetadata', 'url']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: youtube_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- o.vykhor
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-01-
|
11
|
+
date: 2020-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -145,6 +145,7 @@ files:
|
|
145
145
|
- lib/youtube_parser/base_parser.rb
|
146
146
|
- lib/youtube_parser/channel.rb
|
147
147
|
- lib/youtube_parser/channels/about_section.rb
|
148
|
+
- lib/youtube_parser/channels/channels_section.rb
|
148
149
|
- lib/youtube_parser/channels/videos_section.rb
|
149
150
|
- lib/youtube_parser/client.rb
|
150
151
|
- lib/youtube_parser/config/keys.yml
|