yt_util 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5c902427a3738d2f25906a56a4617e9235b8e3f7
4
- data.tar.gz: d82c5058ce703d46aa97853acf80e49a4d2f5a7c
3
+ metadata.gz: 059abccfce7627fa2a506baccb0d2f62f70a80a2
4
+ data.tar.gz: 31ff588d17835b0f6cb87bc23362892964ce4676
5
5
  SHA512:
6
- metadata.gz: e0c909ed4de6afafaeb9b2810e62b40a67f28831dcc3865569e8bbc94c7db5396f443fbaa33820816d98f1558b9a56b1bc8a6f41356665fdeebb97ee70d1f92b
7
- data.tar.gz: 4b700c7d9718bd89013594d62f9a509fd1d1949782de1cd4f474847eb9235fe498cd4f64fcb9aed78e76e749aee77932bc13c53c6cf7f63a166525885d5c0f7d
6
+ metadata.gz: 4b977c8c126e499ccd1d4a3f4e79e9c1dcf5f915e2f2582dbb2e842b00be1e016f522c0da1e6087ddf1bc906d31b178ee4bf11074b46f8ac83737bea558fc91f
7
+ data.tar.gz: 9bad9170264b3077a6ba5e77f86db694bbed07744b51bddf1c828447a495f3fe7d3ee921ef9c820f583f8512aaf9c7c1179ea03b6db00e03eaebccd9cd01d063
@@ -0,0 +1,14 @@
1
+ module YtUtil
2
+ module GooglePlus
3
+ def self.get_username(youtube_username)
4
+ google_plus_link = YtUtil::Scrape.user_stats(youtube_username)[:link]
5
+ return nil if google_plus_link.nil?
6
+ google_plus_link = google_plus_link.match(/\?q=(.+)&/)[1] if google_plus_link =~ /\?.+&/
7
+ result = YtUtil::URL.request(google_plus_link)
8
+ result = result.css('a').map {|i|
9
+ i["href"].match(/https:\/\/plus.google.com\/%2B(.+)\?/).try(:[],-1)
10
+ }.compact.first
11
+ result ? "+".concat(result.to_s) : nil
12
+ end
13
+ end
14
+ end
@@ -38,29 +38,32 @@ module YtUtil
38
38
 
39
39
  private
40
40
  def self.request(web_request)
41
- try { Mechanize.new.tap { |i| i.follow_meta_refresh = true }.get(web_request).parser } ||
42
- Nokogiri::HTML(open(web_request))
41
+ YtUtil::URL.request(web_request)
43
42
  end
43
+ private_class_method :request
44
44
 
45
45
  def self.request_query(search, filters = "")
46
46
  web_request = "https://www.youtube.com/results?search_query=#{Addressable::URI.parse(search).normalize + filters}"
47
47
  request(web_request)
48
48
  end
49
+ private_class_method :request_query
49
50
 
50
51
  def self.request_video_stats(video_code)
51
52
  web_request = "https://www.youtube.com/watch?v=#{video_code}"
52
53
  request(web_request)
53
54
  end
55
+ private_class_method :request_video_stats
54
56
 
55
57
  def self.request_user_stats(username)
56
58
  web_request = "https://www.youtube.com/user/#{username}/about"
57
59
  request(web_request)
58
60
  end
61
+ private_class_method :request_user_stats
59
62
 
60
63
  def self.parse_query(query_result)
61
64
  query_result.css("ol.item-section > li")[1..-1].map do |result|
62
65
  {
63
- title: try {result.css("div:nth-child(1)").css("div:nth-child(2)").css("h3").text},
66
+ title: try {result.css("div:nth-child(1)").css("div:nth-child(2)").css("h3").text.match(/(.+) - Duration/).try(:[],1)},
64
67
  video: try {result.css('a').map { |i| i.attributes["href"]}.try(:[],0).try(:value).try(:match,/\?v=(.{11})/).try(:[],1)},
65
68
  views: try {result.css('li').select {|i| i.try(:text) =~ /^[\d,]{1,} views/ }.first.try(:text).try(:split).try(:first).try(:gsub,",","_").to_i},
66
69
  new: try {!!result.css("div:nth-child(1)").css("div:nth-child(2)").css("div:nth-child(4)").css("ul:nth-child(1)").text["New"]},
@@ -70,6 +73,7 @@ module YtUtil
70
73
  }
71
74
  end
72
75
  end
76
+ private_class_method :parse_query
73
77
 
74
78
  def self.parse_video_page(video_code, query_result)
75
79
  {
@@ -84,6 +88,7 @@ module YtUtil
84
88
  license: try {query_result.css('li.watch-meta-item:nth-child(2)').text.gsub("\n", '').strip.tap {|i| i.replace i[i.index(' ').to_i..-1].strip}}
85
89
  }
86
90
  end
91
+ private_class_method :parse_video_page
87
92
 
88
93
  def self.parse_user(query_result)
89
94
  views_n_subs = try {query_result.css('.about-stats').
@@ -99,6 +104,7 @@ module YtUtil
99
104
  joined: try {query_result.css('.about-stats').css('.joined-date').text.strip}
100
105
  }
101
106
  end
107
+ private_class_method :parse_user
102
108
 
103
109
  end
104
110
  end
data/lib/yt_util/url.rb CHANGED
@@ -50,5 +50,10 @@ module YtUtil
50
50
  "https://www.youtube.com/watch?v=#{video_code}".<<(parameters.gsub("?","&"))
51
51
  end
52
52
  end
53
+
54
+ def self.request(web_request)
55
+ try { Mechanize.new.tap { |i| i.follow_meta_refresh = true }.get(web_request).parser } ||
56
+ Nokogiri::HTML(open(web_request))
57
+ end
53
58
  end
54
59
  end
@@ -1,3 +1,3 @@
1
1
  module YtUtil
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/yt_util.rb CHANGED
@@ -4,6 +4,7 @@ require "nokogiri"
4
4
  require "mechanize"
5
5
  require "yt_util/version"
6
6
  require "yt_util/scrape"
7
+ require "yt_util/google_plus"
7
8
  require "yt_util/url"
8
9
  require "yt_util/try"
9
10
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yt_util
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel P. Clark
@@ -14,70 +14,70 @@ dependencies:
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.6'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: nokogiri
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.6'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.6'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mechanize
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '2.7'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.7'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: addressable
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '2.3'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '2.3'
83
83
  description: A toolbox for Youtube.
@@ -87,14 +87,15 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - ".gitignore"
91
- - ".rspec"
90
+ - .gitignore
91
+ - .rspec
92
92
  - Gemfile
93
93
  - Gemfile.lock
94
94
  - LICENSE.txt
95
95
  - README.md
96
96
  - Rakefile
97
97
  - lib/yt_util.rb
98
+ - lib/yt_util/google_plus.rb
98
99
  - lib/yt_util/scrape.rb
99
100
  - lib/yt_util/try.rb
100
101
  - lib/yt_util/url.rb
@@ -111,17 +112,17 @@ require_paths:
111
112
  - lib
112
113
  required_ruby_version: !ruby/object:Gem::Requirement
113
114
  requirements:
114
- - - "~>"
115
+ - - ~>
115
116
  - !ruby/object:Gem::Version
116
117
  version: '2.0'
117
118
  required_rubygems_version: !ruby/object:Gem::Requirement
118
119
  requirements:
119
- - - ">="
120
+ - - '>='
120
121
  - !ruby/object:Gem::Version
121
122
  version: '0'
122
123
  requirements: []
123
124
  rubyforge_project:
124
- rubygems_version: 2.3.0
125
+ rubygems_version: 2.4.3
125
126
  signing_key:
126
127
  specification_version: 4
127
128
  summary: Youtube Utility.