punndit_youtube 0.0.2 → 0.0.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.
- data/lib/.DS_Store +0 -0
- data/lib/punndit_youtube/.DS_Store +0 -0
- data/lib/punndit_youtube/client.rb +39 -0
- data/lib/punndit_youtube/model/playlist.rb +10 -0
- data/lib/punndit_youtube/model/user.rb +9 -0
- data/lib/punndit_youtube/model/video.rb +47 -0
- data/lib/punndit_youtube/parser.rb +78 -0
- data/lib/punndit_youtube/record.rb +12 -0
- data/lib/punndit_youtube/version.rb +1 -1
- data/lib/punndit_youtube.rb +1 -0
- data/punndit_youtube.gemspec +2 -0
- data/spec/punndit_youtube_spec.rb +6 -0
- metadata +29 -3
data/lib/.DS_Store
ADDED
Binary file
|
Binary file
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module PunnditYoutube
|
2
|
+
class Client
|
3
|
+
|
4
|
+
#
|
5
|
+
#
|
6
|
+
#
|
7
|
+
def get_playlists(username)
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
#
|
12
|
+
# Retrieves a single playlist
|
13
|
+
#
|
14
|
+
# === Parameters
|
15
|
+
# playlistID<String>:: The ID of the playlist that you'd like to retrieve.
|
16
|
+
#
|
17
|
+
# === Returns
|
18
|
+
# PunnditYoutube::Model::Playlist
|
19
|
+
#
|
20
|
+
def playlist(playlistID)
|
21
|
+
url = "/feeds/api/playlists/#{playlistID}?alt=json&v=2"
|
22
|
+
parser = PunnditYoutube::Parser::PlaylistFeedParser.new(url)
|
23
|
+
parser.parse
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Retrieves a single video
|
28
|
+
#
|
29
|
+
# === Parameters
|
30
|
+
# videoID<String>:: The ID of the video that you'd like to retrieve.
|
31
|
+
#
|
32
|
+
# === Returns
|
33
|
+
# PunnditYoutube::Model::Video
|
34
|
+
#
|
35
|
+
def single_video(videoID)
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module PunnditYoutube
|
2
|
+
class Model
|
3
|
+
class Playlist < PunnditYoutube::Record
|
4
|
+
attr_reader :title, :subtitle, :playlist_id, :author, :thumbnail, :updated_at, :videos
|
5
|
+
#def videos
|
6
|
+
#PunnditYoutube::Parser::VideosFeedParser.new("http://gdata.youtube.com/feeds/api/playlists/#{playlist_id}?v=2").parse
|
7
|
+
#end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module PunnditYoutube
|
2
|
+
class Model
|
3
|
+
class Video < PunnditYoutube::Record
|
4
|
+
#TODO: Add support for categories
|
5
|
+
|
6
|
+
# Returns a string value for the ID of the video
|
7
|
+
attr_reader :id
|
8
|
+
|
9
|
+
# Returns a string value for the title of the video
|
10
|
+
attr_reader :title
|
11
|
+
|
12
|
+
# Returns a string value for the description of the video
|
13
|
+
attr_reader :description
|
14
|
+
|
15
|
+
# Returns a string containing the url for the API call to get all the comments for a video.
|
16
|
+
#TODO: Add a method that will parse and return a Comment object
|
17
|
+
attr_reader :comment_url
|
18
|
+
|
19
|
+
# Returns a string value of the url to view the video (For playlists this returns the video url and not the link to the playlist)
|
20
|
+
attr_reader :video_url
|
21
|
+
|
22
|
+
# Returns a comma seperated string of all keywords associated with the video
|
23
|
+
attr_reader :keywords
|
24
|
+
|
25
|
+
# Returns an array of arrays that contains all availiable thumbnails sizes for the video and their dimensions
|
26
|
+
attr_reader :thumbnails
|
27
|
+
|
28
|
+
# Returns a string value for the aspect ratio of the video ("standard", "widescreen")
|
29
|
+
attr_reader :aspect_ratio
|
30
|
+
|
31
|
+
# Returns the duration of the video in seconds
|
32
|
+
attr_reader :duration
|
33
|
+
|
34
|
+
# Returns the timestamp of when the video was uploaded to YouTube
|
35
|
+
attr_reader :uploaded
|
36
|
+
|
37
|
+
# Returns the YouTube User ID of the account that uploaded the video
|
38
|
+
attr_reader :uploader_id
|
39
|
+
|
40
|
+
# Returns a hash array {:favorites, :view_count, :likes, :dislikes, :average, :max, :min}
|
41
|
+
attr_reader :stats
|
42
|
+
|
43
|
+
# Returns the timestamp when the video was last updated
|
44
|
+
attr_reader :updated_at
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module PunnditYoutube
|
2
|
+
class Parser
|
3
|
+
|
4
|
+
class FeedParser #:nodoc:
|
5
|
+
def initialize(url)
|
6
|
+
@url = url
|
7
|
+
end
|
8
|
+
|
9
|
+
def parse
|
10
|
+
parse_content Net::HTTP.get_response("gdata.youtube.com", @url)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class VideoFeedParser < FeedParser #:nodoc:
|
15
|
+
def parse_content(response)
|
16
|
+
json_body = JSON.parse(response.body)
|
17
|
+
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
# END VideoFeedParser
|
22
|
+
|
23
|
+
class VideosFeedParser < FeedParser #:nodoc:
|
24
|
+
def parse_content(response)
|
25
|
+
json_body = JSON.parse(response.body)
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
# END VideosFeedParser
|
30
|
+
|
31
|
+
class PlaylistFeedParser < FeedParser #:nodoc:
|
32
|
+
def parse_content(response)
|
33
|
+
json_body = JSON.parse(response.body)
|
34
|
+
|
35
|
+
videos = []
|
36
|
+
json_body['feed']['entry'].each do |e|
|
37
|
+
video = PunnditYoutube::Model::Video.new(
|
38
|
+
:id => e['media$group']['yt$videoid']['$t'],
|
39
|
+
:title => e['title']['$t'],
|
40
|
+
:description => e['media$group']['media$description']['$t'],
|
41
|
+
:comment_url => e['gd$comments']['gd$feedLink']['href'],
|
42
|
+
:video_url => e['media$group']['media$player']['url'],
|
43
|
+
#:keywords => e['mediage$group']['media$keywords']['$t'], if e['mediage$group']['media$keywords']['$t']
|
44
|
+
:thumbnails => e['media$group']['media$thumbnail'],
|
45
|
+
#:aspect_ratio => e['media$group']['yt$aspectRatio']['$t'], if e['media$group']['yt$aspectRatio']['$t']
|
46
|
+
:duration => e['media$group']['yt$duration']['seconds'],
|
47
|
+
:uploaded => e['media$group']['yt$uploaded']['$t'],
|
48
|
+
:uploader_id => e['media$group']['yt$uploaderId']['$t'],
|
49
|
+
:stats => {:favorites => e['yt$statistics']['favoriteCount'], :view_count => e['yt$statistics']['viewCount'], :likes => e['yt$rating']['numLikes'], :dislikes => e['yt$rating']['numDislikes'], :average => e['gd$rating']['average'], :max => e['gd$rating']['max'], :min => e['gd$rating']['min'], :numRaters => e['gd$rating']['numRaters'], :rel => e['gd$rating']['rel']},
|
50
|
+
:updated_at => e['updated']['$t']
|
51
|
+
)
|
52
|
+
videos.push(video)
|
53
|
+
end
|
54
|
+
|
55
|
+
playlist = PunnditYoutube::Model::Playlist.new(
|
56
|
+
:playlist_id => json_body['feed']['yt$playlistId']['$t'],
|
57
|
+
:title => json_body['feed']['title']['$t'],
|
58
|
+
:subtitle => json_body['feed']['subtitle']['$t'],
|
59
|
+
:author => json_body['feed']['author'][0]['$t'],
|
60
|
+
:thumbnail => json_body['feed']['media$group']['media$thumbnail'][2]['url'],
|
61
|
+
:updated_at => json_body['feed']['updated']['$t'],
|
62
|
+
:videos => videos
|
63
|
+
)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
# END PlaylistFeedParser
|
67
|
+
|
68
|
+
class ChannelFeedParser < FeedParser #:nodoc:
|
69
|
+
def parse_content(url)
|
70
|
+
response = Net::HTTP.get_response("gdata.youtube.com", url)
|
71
|
+
json_body = JSON.parse(response.body)
|
72
|
+
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
76
|
+
# END ChannelFeedParser
|
77
|
+
end
|
78
|
+
end
|
data/lib/punndit_youtube.rb
CHANGED
data/punndit_youtube.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: punndit_youtube
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,23 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
date: 2012-08-28 00:00:00.000000000 Z
|
13
|
-
dependencies:
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '2.6'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.6'
|
14
30
|
description: simple_youtube is a Ruby client for parsing the YouTube API v2 using
|
15
31
|
JSON objects. This is a lot cleaner and simpler method than trying to use the XML
|
16
32
|
data provided. As the name implies this is for simple tasks involving YouTube like
|
@@ -27,9 +43,18 @@ files:
|
|
27
43
|
- LICENSE
|
28
44
|
- README.md
|
29
45
|
- Rakefile
|
46
|
+
- lib/.DS_Store
|
30
47
|
- lib/punndit_youtube.rb
|
48
|
+
- lib/punndit_youtube/.DS_Store
|
49
|
+
- lib/punndit_youtube/client.rb
|
50
|
+
- lib/punndit_youtube/model/playlist.rb
|
51
|
+
- lib/punndit_youtube/model/user.rb
|
52
|
+
- lib/punndit_youtube/model/video.rb
|
53
|
+
- lib/punndit_youtube/parser.rb
|
54
|
+
- lib/punndit_youtube/record.rb
|
31
55
|
- lib/punndit_youtube/version.rb
|
32
56
|
- punndit_youtube.gemspec
|
57
|
+
- spec/punndit_youtube_spec.rb
|
33
58
|
homepage: http://www.punndit.com
|
34
59
|
licenses: []
|
35
60
|
post_install_message:
|
@@ -54,4 +79,5 @@ rubygems_version: 1.8.24
|
|
54
79
|
signing_key:
|
55
80
|
specification_version: 3
|
56
81
|
summary: Ruby client for the YouTube API v2
|
57
|
-
test_files:
|
82
|
+
test_files:
|
83
|
+
- spec/punndit_youtube_spec.rb
|