howcast 0.5.1 → 0.7.0
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/CHANGELOG +8 -0
- data/VERSION +1 -1
- data/howcast-0.6.0.gem +0 -0
- data/howcast.gemspec +9 -3
- data/lib/howcast/client.rb +1 -1
- data/lib/howcast/client/base.rb +11 -0
- data/lib/howcast/client/homepage.rb +65 -0
- data/lib/howcast/client/playlist.rb +69 -0
- data/lib/howcast/client/user.rb +0 -9
- data/spec/howcast/client/homepage_spec.rb +42 -0
- data/spec/howcast/client/playlist_spec.rb +43 -0
- data/spec/xml_fixtures_helper.rb +460 -0
- metadata +11 -5
- data/howcast-0.5.0.gem +0 -0
data/CHANGELOG
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.0
|
data/howcast-0.6.0.gem
ADDED
Binary file
|
data/howcast.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{howcast}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.7.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jingshen Jimmy Zhang", "Ian Smith-Heisters"]
|
12
|
-
s.date = %q{2010-03-
|
12
|
+
s.date = %q{2010-03-19}
|
13
13
|
s.description = %q{ Howcast offers an Application Programming Interface (API) which allows
|
14
14
|
developers to build applications that interface with Howcast. The Howcast
|
15
15
|
API is RESTful (REpresentational State Transfer) and users of this API will
|
@@ -31,13 +31,15 @@ Gem::Specification.new do |s|
|
|
31
31
|
"README.markdown",
|
32
32
|
"Rakefile",
|
33
33
|
"VERSION",
|
34
|
-
"howcast-0.
|
34
|
+
"howcast-0.6.0.gem",
|
35
35
|
"howcast.gemspec",
|
36
36
|
"lib/howcast.rb",
|
37
37
|
"lib/howcast/client.rb",
|
38
38
|
"lib/howcast/client/base.rb",
|
39
39
|
"lib/howcast/client/category.rb",
|
40
|
+
"lib/howcast/client/homepage.rb",
|
40
41
|
"lib/howcast/client/marker.rb",
|
42
|
+
"lib/howcast/client/playlist.rb",
|
41
43
|
"lib/howcast/client/search.rb",
|
42
44
|
"lib/howcast/client/user.rb",
|
43
45
|
"lib/howcast/client/video.rb",
|
@@ -45,6 +47,8 @@ Gem::Specification.new do |s|
|
|
45
47
|
"lib/howcast/logging.rb",
|
46
48
|
"spec/howcast/client/base_spec.rb",
|
47
49
|
"spec/howcast/client/category_spec.rb",
|
50
|
+
"spec/howcast/client/homepage_spec.rb",
|
51
|
+
"spec/howcast/client/playlist_spec.rb",
|
48
52
|
"spec/howcast/client/search_spec.rb",
|
49
53
|
"spec/howcast/client/user_spec.rb",
|
50
54
|
"spec/howcast/client/video_spec.rb",
|
@@ -63,6 +67,8 @@ Gem::Specification.new do |s|
|
|
63
67
|
s.test_files = [
|
64
68
|
"spec/howcast/client/base_spec.rb",
|
65
69
|
"spec/howcast/client/category_spec.rb",
|
70
|
+
"spec/howcast/client/homepage_spec.rb",
|
71
|
+
"spec/howcast/client/playlist_spec.rb",
|
66
72
|
"spec/howcast/client/search_spec.rb",
|
67
73
|
"spec/howcast/client/user_spec.rb",
|
68
74
|
"spec/howcast/client/video_spec.rb",
|
data/lib/howcast/client.rb
CHANGED
@@ -2,6 +2,6 @@
|
|
2
2
|
class Howcast::Client
|
3
3
|
end
|
4
4
|
|
5
|
-
%w(client/base client/video client/search client/category client/marker client/user).each do |dependency|
|
5
|
+
%w(client/base client/video client/search client/category client/marker client/user client/homepage client/playlist).each do |dependency|
|
6
6
|
require(File.expand_path(File.join(File.dirname(__FILE__), dependency)))
|
7
7
|
end
|
data/lib/howcast/client/base.rb
CHANGED
@@ -131,6 +131,8 @@ class Howcast::Client
|
|
131
131
|
hash[attribute] = markers_for(xml) unless xml.at(node_name).nil?
|
132
132
|
elsif node_name == "related-videos"
|
133
133
|
hash[attribute] = related_videos_for(xml) unless xml.at(node_name).nil?
|
134
|
+
elsif node_name == "videos"
|
135
|
+
hash[attribute] = videos_for(xml) unless xml.at(node_name).nil?
|
134
136
|
else
|
135
137
|
hash[attribute] = !xml.at(node_name).nil? ? xml.at(node_name).inner_text.strip : ""
|
136
138
|
end
|
@@ -248,4 +250,13 @@ class Howcast::Client
|
|
248
250
|
end unless node.nil?
|
249
251
|
related
|
250
252
|
end
|
253
|
+
|
254
|
+
def videos_for(xml)
|
255
|
+
videos = []
|
256
|
+
node = xml.at('videos')
|
257
|
+
node.children_of_type('video').each do |child|
|
258
|
+
videos << parse_single_xml(child, Video)
|
259
|
+
end unless node.nil?
|
260
|
+
videos
|
261
|
+
end
|
251
262
|
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2010 Howcast Media Inc.
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
# a copy of this software and associated documentation files (the
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
# the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
|
24
|
+
class Howcast::Client
|
25
|
+
class Homepage
|
26
|
+
extend WatchAttrAccessors
|
27
|
+
attr_accessor :videos
|
28
|
+
|
29
|
+
# Creates a new Homepage object which is used to encapsulate all the attributes available
|
30
|
+
# from the Howcast homepage API.
|
31
|
+
#
|
32
|
+
# === Inputs
|
33
|
+
#
|
34
|
+
# * <tt>attributes</tt> -- A hash to set the various attributes of the homepage object
|
35
|
+
#
|
36
|
+
# === Examples
|
37
|
+
#
|
38
|
+
# Initialize a user with an array of videos
|
39
|
+
# Homepage.new :videos => [video1, video2]
|
40
|
+
def initialize(attributes={})
|
41
|
+
attributes.each do |k, v|
|
42
|
+
self.send("#{k}=", v) if self.respond_to?(k)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# Provides access to the Howcast homepage API.
|
48
|
+
#
|
49
|
+
# === Outputs
|
50
|
+
#
|
51
|
+
# Homepage object
|
52
|
+
#
|
53
|
+
# === Exceptions
|
54
|
+
#
|
55
|
+
# * <tt>Howcast::ApiNotFound</tt>
|
56
|
+
#
|
57
|
+
# === Examples
|
58
|
+
#
|
59
|
+
# Create the Howcast homepage object
|
60
|
+
# Howcast::Client.new.homepage
|
61
|
+
def homepage
|
62
|
+
response = establish_connection("homepage/staff_videos.xml")
|
63
|
+
parse_single_xml(response, Homepage)
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2010 Howcast Media Inc.
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
# a copy of this software and associated documentation files (the
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
# the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
|
24
|
+
class Howcast::Client
|
25
|
+
class Playlist
|
26
|
+
extend WatchAttrAccessors
|
27
|
+
attr_accessor :title, :videos
|
28
|
+
|
29
|
+
# Creates a new Playlist object which is used to encapsulate all the attributes available
|
30
|
+
# from the Howcast playlist API.
|
31
|
+
#
|
32
|
+
# === Inputs
|
33
|
+
#
|
34
|
+
# * <tt>attributes</tt> -- A hash to set the various attributes of the playlist object
|
35
|
+
#
|
36
|
+
# === Examples
|
37
|
+
#
|
38
|
+
# Initialize a playlist with title "My Playlist"
|
39
|
+
# Playlist.new :title => "My Playlist"
|
40
|
+
def initialize(attributes={})
|
41
|
+
attributes.each do |k, v|
|
42
|
+
self.send("#{k}=", v) if self.respond_to?(k)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# Provides access to the Howcast playlist API.
|
48
|
+
#
|
49
|
+
# === Inputs
|
50
|
+
#
|
51
|
+
# * <tt>id</tt> -- The id of the playlist to lookup
|
52
|
+
#
|
53
|
+
# === Outputs
|
54
|
+
#
|
55
|
+
# Playlist object if the id exists or nil if the id doesn't exist or is malformed
|
56
|
+
#
|
57
|
+
# === Exceptions
|
58
|
+
#
|
59
|
+
# * <tt>Howcast::ApiNotFound</tt>
|
60
|
+
#
|
61
|
+
# === Examples
|
62
|
+
#
|
63
|
+
# Get the Howcast playlist with id 12345
|
64
|
+
# Howcast::Client.new.playlist(12345)
|
65
|
+
def playlist(id, options = {})
|
66
|
+
response = establish_connection("playlists/#{id}.xml")
|
67
|
+
parse_single_xml(response, Playlist)
|
68
|
+
end
|
69
|
+
end
|
data/lib/howcast/client/user.rb
CHANGED
@@ -82,13 +82,4 @@ class Howcast::Client
|
|
82
82
|
hash[:login] = login
|
83
83
|
hash.values.all?{|v| v==""} ? nil : User.new(hash)
|
84
84
|
end
|
85
|
-
|
86
|
-
def videos_for(xml)
|
87
|
-
videos = []
|
88
|
-
node = xml.at('videos')
|
89
|
-
node.children_of_type('video').each do |child|
|
90
|
-
videos << parse_single_xml(child, Video)
|
91
|
-
end unless node.nil?
|
92
|
-
videos
|
93
|
-
end
|
94
85
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
describe Howcast::Client::Homepage, "initialize" do
|
4
|
+
before do
|
5
|
+
@videos = [mock(Howcast::Client::Video)]
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should create a homepage object with all the inputted attributes" do
|
9
|
+
homepage = Howcast::Client::Homepage.new :videos => @videos
|
10
|
+
homepage.videos.should == @videos
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should ignore inputs which are not homepage attributes" do
|
14
|
+
homepage = Howcast::Client::Homepage.new :not_an_attribute => "value", :videos => @videos
|
15
|
+
homepage.respond_to?(:not_an_attribute).should be_false
|
16
|
+
homepage.videos.should == @videos
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe Howcast::Client, "videos" do
|
21
|
+
before do
|
22
|
+
@hc = Howcast::Client.new(:key => "myapikey")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should establish a connection with the correct homepage videos url" do
|
26
|
+
@hc.should_receive(:open).with(equivalent_uri("http://www.howcast.com/homepage/staff_videos.xml?api_key=myapikey")).and_return(homepage_videos_xml)
|
27
|
+
@hc.homepage
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should raise Howcast::ApiKeyNotFound error when the response contains Invalid API Key" do
|
31
|
+
lambda {
|
32
|
+
@hc.stub!(:open).and_return(invalid_api_key_xml)
|
33
|
+
@hc.homepage
|
34
|
+
}.should raise_error(Howcast::ApiKeyNotFound)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should set the videos attribute in the homepage model response" do
|
38
|
+
videos = @hc.homepage.videos
|
39
|
+
videos.size.should == 8
|
40
|
+
videos[0].title.should == "How To Display Impeccable Manners"
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
describe Howcast::Client::Playlist, "initialize" do
|
4
|
+
it "should create a playlist object with all the inputted attributes" do
|
5
|
+
playlist = Howcast::Client::Playlist.new :title => "My Playlist"
|
6
|
+
playlist.title.should == 'My Playlist'
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should ignore inputs which are not playlist attributes" do
|
10
|
+
playlist = Howcast::Client::Playlist.new :not_an_attribute => "value", :title => "My Playlist"
|
11
|
+
playlist.respond_to?(:not_an_attribute).should be_false
|
12
|
+
playlist.title.should == "My Playlist"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe Howcast::Client, "playlist" do
|
17
|
+
before do
|
18
|
+
@hc = Howcast::Client.new(:key => "myapikey")
|
19
|
+
@hc.stub!(:open).and_return(playlist_xml)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should establish a connection with the correct playlist url" do
|
23
|
+
@hc.should_receive(:open).with(equivalent_uri("http://www.howcast.com/playlists/12345.xml?api_key=myapikey")).and_return(playlist_xml)
|
24
|
+
@hc.playlist(12345)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should raise Howcast::ApiKeyNotFound error when the response contains Invalid API Key" do
|
28
|
+
lambda {
|
29
|
+
@hc.stub!(:open).and_return(invalid_api_key_xml)
|
30
|
+
@hc.playlist(12345)
|
31
|
+
}.should raise_error(Howcast::ApiKeyNotFound)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should set the title attribute in the playlist model response" do
|
35
|
+
@hc.playlist(12345).title.should == "Howcast - Eggs-Travaganza!"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should set the videos attribute in the playlist model response" do
|
39
|
+
videos = @hc.playlist(12345).videos
|
40
|
+
videos.size.should == 8
|
41
|
+
videos[0].title.should == "How To Separate an Egg"
|
42
|
+
end
|
43
|
+
end
|
data/spec/xml_fixtures_helper.rb
CHANGED
@@ -2525,4 +2525,464 @@ module XmlFixturesHelper
|
|
2525
2525
|
</howcast>
|
2526
2526
|
VID
|
2527
2527
|
end
|
2528
|
+
|
2529
|
+
def homepage_videos_xml
|
2530
|
+
<<-VID
|
2531
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2532
|
+
<howcast version="0.1">
|
2533
|
+
<title>Howcast - Staff Picks</title>
|
2534
|
+
<videos>
|
2535
|
+
<video>
|
2536
|
+
<category-id>876</category-id>
|
2537
|
+
<id>92193</id>
|
2538
|
+
<title>How To Display Impeccable Manners</title>
|
2539
|
+
<views>4420</views>
|
2540
|
+
<type>HowcastGuide</type>
|
2541
|
+
<created-at>Mon, 08 Dec 2008 06:01:37 -0800</created-at>
|
2542
|
+
<rating>18</rating>
|
2543
|
+
<username>Jordana_Giorgio</username>
|
2544
|
+
<description>
|
2545
|
+
<![CDATA[You’ll probably never have to greet the Queen, but everyone should know some basic etiquette rules. ]]>
|
2546
|
+
</description>
|
2547
|
+
<embed>
|
2548
|
+
<![CDATA[<object width="425" height="273" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=92193"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=92193" type="application/x-shockwave-flash" width="425" height="273" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2549
|
+
</embed>
|
2550
|
+
<duration>113</duration>
|
2551
|
+
<filename>http://media.howcast.com/system/videos/3/93/21/09/92193.flv</filename>
|
2552
|
+
<tags>etiquette, practicing, work, office, social, niceties, basics, decorum, public, acting</tags>
|
2553
|
+
<category-hierarchy>
|
2554
|
+
<category id="841">Language & Reference</category>
|
2555
|
+
<category parent_id="841" id="875">Etiquette</category>
|
2556
|
+
<category parent_id="875" id="876">General Etiquette</category>
|
2557
|
+
</category-hierarchy>
|
2558
|
+
<comment-count>2</comment-count>
|
2559
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/92193/impeccable_manners_hd_1_xxlarge_maintained_aspect.jpg</thumbnail-url>
|
2560
|
+
<permalink>http://www.howcast.com/videos/92193-How-To-Display-Impeccable-Manners</permalink>
|
2561
|
+
<content_rating>nonadult</content_rating>
|
2562
|
+
</video>
|
2563
|
+
<video>
|
2564
|
+
<category-id>496</category-id>
|
2565
|
+
<id>359329</id>
|
2566
|
+
<title>Health To Go: How To Eat Healthy on the Go</title>
|
2567
|
+
<views>127</views>
|
2568
|
+
<type>HowcastGuide</type>
|
2569
|
+
<created-at>Fri, 12 Mar 2010 12:15:56 -0800</created-at>
|
2570
|
+
<rating>0</rating>
|
2571
|
+
<username>Howcast</username>
|
2572
|
+
<description>
|
2573
|
+
<![CDATA[On the run and out of healthy options? Save plastic takeout containers, fill them with peanut butter or hummus, and take along some raw vegetables. Bingo!]]>
|
2574
|
+
</description>
|
2575
|
+
<embed>
|
2576
|
+
<![CDATA[<object width="425" height="273" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=359329"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=359329" type="application/x-shockwave-flash" width="425" height="273" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2577
|
+
</embed>
|
2578
|
+
<duration>20</duration>
|
2579
|
+
<filename>http://media.howcast.com/system/videos/0/78/65/32/326578.flv</filename>
|
2580
|
+
<tags>diet, food, nutrition, vegetables, to-go, eat, healthy, pack, lunch, snack</tags>
|
2581
|
+
<category-hierarchy>
|
2582
|
+
<category id="479">Health & Nutrition</category>
|
2583
|
+
<category parent_id="479" id="494">Diet</category>
|
2584
|
+
<category parent_id="494" id="496">Better Health</category>
|
2585
|
+
</category-hierarchy>
|
2586
|
+
<comment-count>0</comment-count>
|
2587
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/359329/ge_health-to-go_jungle_thumb_xxlarge_maintained_aspect.jpg</thumbnail-url>
|
2588
|
+
<permalink>http://www.howcast.com/videos/359329-Health-To-Go-How-To-Eat-Healthy-on-the-Go</permalink>
|
2589
|
+
<content_rating>nonadult</content_rating>
|
2590
|
+
</video>
|
2591
|
+
<video>
|
2592
|
+
<category-id>1728</category-id>
|
2593
|
+
<id>372018</id>
|
2594
|
+
<title>How To Make a TV Remote Jammer</title>
|
2595
|
+
<views>0</views>
|
2596
|
+
<type>HowcastGuide</type>
|
2597
|
+
<created-at>Thu, 18 Mar 2010 04:02:21 -0700</created-at>
|
2598
|
+
<rating>1</rating>
|
2599
|
+
<username>gigafide</username>
|
2600
|
+
<description>
|
2601
|
+
<![CDATA[Tired of remote control jockeys speeding through the channels? Here's your chance to stop them dead in their tracks.]]>
|
2602
|
+
</description>
|
2603
|
+
<embed>
|
2604
|
+
<![CDATA[<object width="425" height="273" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=372018"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=372018" type="application/x-shockwave-flash" width="425" height="273" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2605
|
+
</embed>
|
2606
|
+
<duration>202</duration>
|
2607
|
+
<filename>http://media.howcast.com/system/videos/6/06/00/35/350006.flv</filename>
|
2608
|
+
<tags>channel, circuit, control, signal, interfere, project, make, tv, remote, jammer, create, resistor</tags>
|
2609
|
+
<category-hierarchy>
|
2610
|
+
<category id="1470">Technology</category>
|
2611
|
+
<category parent_id="1470" id="1728">Science & Technology Projects</category>
|
2612
|
+
</category-hierarchy>
|
2613
|
+
<comment-count>0</comment-count>
|
2614
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/372018/make_a_tv_remote_jammer_thumb_xxlarge_maintained_aspect.jpg</thumbnail-url>
|
2615
|
+
<permalink>http://www.howcast.com/videos/372018-How-To-Make-a-TV-Remote-Jammer</permalink>
|
2616
|
+
<content_rating>nonadult</content_rating>
|
2617
|
+
</video>
|
2618
|
+
<video>
|
2619
|
+
<category-id>884</category-id>
|
2620
|
+
<id>185824</id>
|
2621
|
+
<title>How To Pick a Wedgie in Public</title>
|
2622
|
+
<views>4798</views>
|
2623
|
+
<type>HowcastGuide</type>
|
2624
|
+
<created-at>Wed, 27 May 2009 14:34:04 -0700</created-at>
|
2625
|
+
<rating>9</rating>
|
2626
|
+
<username>michaelrsanchez</username>
|
2627
|
+
<description>
|
2628
|
+
<![CDATA[Discomfort. Embarrassment. The wedgie. Get rid of the problem with these simple tips.]]>
|
2629
|
+
</description>
|
2630
|
+
<embed>
|
2631
|
+
<![CDATA[<object width="425" height="273" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=185824"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=185824" type="application/x-shockwave-flash" width="425" height="273" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2632
|
+
</embed>
|
2633
|
+
<duration>71</duration>
|
2634
|
+
<filename>http://media.howcast.com/system/videos/2/24/58/18/185824.flv</filename>
|
2635
|
+
<tags>etiquette, picking, wedgie, socially, awkward, situations, adjusting, underwear, panties, public</tags>
|
2636
|
+
<category-hierarchy>
|
2637
|
+
<category id="841">Language & Reference</category>
|
2638
|
+
<category parent_id="841" id="875">Etiquette</category>
|
2639
|
+
<category parent_id="875" id="884">Socially Awkward Situations</category>
|
2640
|
+
</category-hierarchy>
|
2641
|
+
<comment-count>2</comment-count>
|
2642
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/185824/pick_wedgie_public_xxlarge_maintained_aspect.jpg</thumbnail-url>
|
2643
|
+
<permalink>http://www.howcast.com/videos/185824-How-To-Pick-a-Wedgie-in-Public</permalink>
|
2644
|
+
<content_rating>nonadult</content_rating>
|
2645
|
+
</video>
|
2646
|
+
<video>
|
2647
|
+
<category-id>1034</category-id>
|
2648
|
+
<id>217432</id>
|
2649
|
+
<title>How To Have a Healthy Pregnancy</title>
|
2650
|
+
<views>701</views>
|
2651
|
+
<type>HowcastGuide</type>
|
2652
|
+
<created-at>Mon, 16 Nov 2009 15:15:42 -0800</created-at>
|
2653
|
+
<rating>1</rating>
|
2654
|
+
<username>CinemaSlam</username>
|
2655
|
+
<description>
|
2656
|
+
<![CDATA[When you're expecting, you're not just eating for two – you're living for two. Here's how to have the healthiest pregnancy possible. ]]>
|
2657
|
+
</description>
|
2658
|
+
<embed>
|
2659
|
+
<![CDATA[<object width="425" height="273" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=217432"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=217432" type="application/x-shockwave-flash" width="425" height="273" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2660
|
+
</embed>
|
2661
|
+
<duration>176</duration>
|
2662
|
+
<filename>http://media.howcast.com/system/videos/4/59/25/28/282559.flv</filename>
|
2663
|
+
<tags>DIY, Instructional, tutorial, Do It Yourself, Tips, Essential Skills, Learn to, parenting, family, pregnancy, health, fitness, have, having, healthy, safe, pregnant, child, baby, kid</tags>
|
2664
|
+
<category-hierarchy>
|
2665
|
+
<category id="978">Parenting & Family</category>
|
2666
|
+
<category parent_id="978" id="1027">Pregnancy</category>
|
2667
|
+
<category parent_id="1027" id="1034">Pregnancy Health & Fitness</category>
|
2668
|
+
</category-hierarchy>
|
2669
|
+
<comment-count>0</comment-count>
|
2670
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/217432/HealthyPregnancy_xxlarge_maintained_aspect.png</thumbnail-url>
|
2671
|
+
<permalink>http://www.howcast.com/videos/217432-How-To-Have-a-Healthy-Pregnancy</permalink>
|
2672
|
+
<content_rating>nonadult</content_rating>
|
2673
|
+
</video>
|
2674
|
+
<video>
|
2675
|
+
<category-id>492</category-id>
|
2676
|
+
<id>194715</id>
|
2677
|
+
<title>How To Soothe an Upset Stomach</title>
|
2678
|
+
<views>26292</views>
|
2679
|
+
<type>HowcastGuide</type>
|
2680
|
+
<created-at>Fri, 12 Jun 2009 11:03:20 -0700</created-at>
|
2681
|
+
<rating>5</rating>
|
2682
|
+
<username>theprohouse</username>
|
2683
|
+
<description>
|
2684
|
+
<![CDATA[Everyone gets an upset stomach from time to time. The first line of defense in this high-tech age is still old-time remedies!]]>
|
2685
|
+
</description>
|
2686
|
+
<embed>
|
2687
|
+
<![CDATA[<object width="425" height="352" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=194715"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=194715" type="application/x-shockwave-flash" width="425" height="352" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2688
|
+
</embed>
|
2689
|
+
<duration>92</duration>
|
2690
|
+
<filename>http://media.howcast.com/system/videos/3/15/47/19/194715.flv</filename>
|
2691
|
+
<tags>DIY, Instructional, tutorial, indigestion, cramps, Bloating, diarrhea, flu, aches, pains</tags>
|
2692
|
+
<category-hierarchy>
|
2693
|
+
<category id="479">Health & Nutrition</category>
|
2694
|
+
<category parent_id="479" id="480">General Health</category>
|
2695
|
+
<category parent_id="480" id="492">Stomach & Digestion</category>
|
2696
|
+
</category-hierarchy>
|
2697
|
+
<comment-count>2</comment-count>
|
2698
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/194715/Picture_1_xxlarge_maintained_aspect.png</thumbnail-url>
|
2699
|
+
<permalink>http://www.howcast.com/videos/194715-How-To-Soothe-an-Upset-Stomach</permalink>
|
2700
|
+
<content_rating>nonadult</content_rating>
|
2701
|
+
</video>
|
2702
|
+
<video>
|
2703
|
+
<category-id>1728</category-id>
|
2704
|
+
<id>202712</id>
|
2705
|
+
<title>How To Get an Egg Through a Bottleneck</title>
|
2706
|
+
<views>4574</views>
|
2707
|
+
<type>HowcastGuide</type>
|
2708
|
+
<created-at>Fri, 10 Jul 2009 12:48:01 -0700</created-at>
|
2709
|
+
<rating>20</rating>
|
2710
|
+
<username>sen1710</username>
|
2711
|
+
<description>
|
2712
|
+
<![CDATA[Be the life of the party – without wearing a lampshade or starting a conga line – by getting an egg into a bottle. ]]>
|
2713
|
+
</description>
|
2714
|
+
<embed>
|
2715
|
+
<![CDATA[<object width="425" height="273" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=202712"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=202712" type="application/x-shockwave-flash" width="425" height="273" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2716
|
+
</embed>
|
2717
|
+
<duration>60</duration>
|
2718
|
+
<filename>http://media.howcast.com/system/videos/6/12/27/20/202712.flv</filename>
|
2719
|
+
<tags>holidays, celebrations, parties, party, tricks, games, getting, egg, fitting, magic</tags>
|
2720
|
+
<category-hierarchy>
|
2721
|
+
<category id="1470">Technology</category>
|
2722
|
+
<category parent_id="1470" id="1728">Science & Technology Projects</category>
|
2723
|
+
</category-hierarchy>
|
2724
|
+
<comment-count>1</comment-count>
|
2725
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/202712/Picture_3_xxlarge_maintained_aspect.png</thumbnail-url>
|
2726
|
+
<permalink>http://www.howcast.com/videos/202712-How-To-Get-an-Egg-Through-a-Bottleneck</permalink>
|
2727
|
+
<content_rating>nonadult</content_rating>
|
2728
|
+
</video>
|
2729
|
+
<video>
|
2730
|
+
<category-id>496</category-id>
|
2731
|
+
<id>218307</id>
|
2732
|
+
<title>How To Develop Healthy Eating Habits</title>
|
2733
|
+
<views>2506</views>
|
2734
|
+
<type>HowcastGuide</type>
|
2735
|
+
<created-at>Mon, 24 Aug 2009 07:47:32 -0700</created-at>
|
2736
|
+
<rating>8</rating>
|
2737
|
+
<username>Equilibrio</username>
|
2738
|
+
<description>
|
2739
|
+
<![CDATA[Good health is just a matter of taking a new approach to eating and making simple changes.]]>
|
2740
|
+
</description>
|
2741
|
+
<embed>
|
2742
|
+
<![CDATA[<object width="425" height="273" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=218307"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=218307" type="application/x-shockwave-flash" width="425" height="273" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2743
|
+
</embed>
|
2744
|
+
<duration>98</duration>
|
2745
|
+
<filename>http://media.howcast.com/system/videos/5/12/68/22/226812.flv</filename>
|
2746
|
+
<tags>eating, habits, develop, healthy, health, nutrition, better health, food, eat</tags>
|
2747
|
+
<category-hierarchy>
|
2748
|
+
<category id="479">Health & Nutrition</category>
|
2749
|
+
<category parent_id="479" id="494">Diet</category>
|
2750
|
+
<category parent_id="494" id="496">Better Health</category>
|
2751
|
+
</category-hierarchy>
|
2752
|
+
<comment-count>4</comment-count>
|
2753
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/218307/Picture_1_xxlarge_maintained_aspect.png</thumbnail-url>
|
2754
|
+
<permalink>http://www.howcast.com/videos/218307-How-To-Develop-Healthy-Eating-Habits</permalink>
|
2755
|
+
<content_rating>nonadult</content_rating>
|
2756
|
+
</video>
|
2757
|
+
</videos>
|
2758
|
+
</howcast>
|
2759
|
+
VID
|
2760
|
+
end
|
2761
|
+
|
2762
|
+
def playlist_xml
|
2763
|
+
<<-PLAYLIST
|
2764
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2765
|
+
<howcast version="0.1">
|
2766
|
+
<title>Howcast - Eggs-Travaganza!</title>
|
2767
|
+
<videos>
|
2768
|
+
<video>
|
2769
|
+
<category-id>392</category-id>
|
2770
|
+
<id>21314</id>
|
2771
|
+
<title>How To Separate an Egg</title>
|
2772
|
+
<views>4653</views>
|
2773
|
+
<type>HowcastGuide</type>
|
2774
|
+
<created-at>Fri, 01 Aug 2008 17:00:40 -0700</created-at>
|
2775
|
+
<rating>11</rating>
|
2776
|
+
<username>michaelrsanchez</username>
|
2777
|
+
<description>
|
2778
|
+
<![CDATA[You may have to break a few eggs to make an omelet, but if you want to make a soufflé—or an angel food cake, or a custard—you’ll need to separate them too.]]>
|
2779
|
+
</description>
|
2780
|
+
<embed>
|
2781
|
+
<![CDATA[<object width="425" height="352" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=21314"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=21314" type="application/x-shockwave-flash" width="425" height="352" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2782
|
+
</embed>
|
2783
|
+
<duration>85</duration>
|
2784
|
+
<filename>http://media.howcast.com/system/videos/6/14/13/02/21314.flv</filename>
|
2785
|
+
<tags>DIY, Instructional, tutorial, Do It Yourself, Tips, Essential Skills, Learn to, egg, separate, cooking</tags>
|
2786
|
+
<category-hierarchy>
|
2787
|
+
<category id="355">Food & Drink</category>
|
2788
|
+
<category parent_id="355" id="392">Cooking Basics</category>
|
2789
|
+
</category-hierarchy>
|
2790
|
+
<comment-count>2</comment-count>
|
2791
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/21314/40_xxlarge_maintained_aspect.jpg</thumbnail-url>
|
2792
|
+
<permalink>http://www.howcast.com/videos/21314-How-To-Separate-an-Egg</permalink>
|
2793
|
+
<content_rating>nonadult</content_rating>
|
2794
|
+
</video>
|
2795
|
+
<video>
|
2796
|
+
<category-id>392</category-id>
|
2797
|
+
<id>191496</id>
|
2798
|
+
<title>How To Test Eggs For Freshness</title>
|
2799
|
+
<views>4799</views>
|
2800
|
+
<type>HowcastGuide</type>
|
2801
|
+
<created-at>Wed, 10 Jun 2009 07:47:21 -0700</created-at>
|
2802
|
+
<rating>27</rating>
|
2803
|
+
<username>lorishe09</username>
|
2804
|
+
<description>
|
2805
|
+
<![CDATA[It's easy to find out if your eggs can be scrambled, fried, or used in a recipe - or if they need to be tossed in the trash.]]>
|
2806
|
+
</description>
|
2807
|
+
<embed>
|
2808
|
+
<![CDATA[<object width="425" height="352" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=191496"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=191496" type="application/x-shockwave-flash" width="425" height="352" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2809
|
+
</embed>
|
2810
|
+
<duration>86</duration>
|
2811
|
+
<filename>http://media.howcast.com/system/videos/4/96/14/19/191496.flv</filename>
|
2812
|
+
<tags>DIY, Instructional, tutorial, Do It Yourself, Tips, breakfast, Dairy, milk, flour, farm</tags>
|
2813
|
+
<category-hierarchy>
|
2814
|
+
<category id="355">Food & Drink</category>
|
2815
|
+
<category parent_id="355" id="392">Cooking Basics</category>
|
2816
|
+
</category-hierarchy>
|
2817
|
+
<comment-count>4</comment-count>
|
2818
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/191496/Picture_1_xxlarge_maintained_aspect.png</thumbnail-url>
|
2819
|
+
<permalink>http://www.howcast.com/videos/191496-How-To-Test-Eggs-For-Freshness</permalink>
|
2820
|
+
<content_rating>nonadult</content_rating>
|
2821
|
+
</video>
|
2822
|
+
<video>
|
2823
|
+
<category-id>392</category-id>
|
2824
|
+
<id>282247</id>
|
2825
|
+
<title>How To Crack an Egg</title>
|
2826
|
+
<views>1421</views>
|
2827
|
+
<type>HowcastGuide</type>
|
2828
|
+
<created-at>Fri, 04 Dec 2009 09:16:18 -0800</created-at>
|
2829
|
+
<rating>0</rating>
|
2830
|
+
<username>lazydiamond</username>
|
2831
|
+
<description>
|
2832
|
+
<![CDATA[No need to walk on eggshells if you're looking to make scrambled eggs or your favorite homemade cookies – take a crack at this simple task.]]>
|
2833
|
+
</description>
|
2834
|
+
<embed>
|
2835
|
+
<![CDATA[<object width="425" height="273" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=282247"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=282247" type="application/x-shockwave-flash" width="425" height="273" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2836
|
+
</embed>
|
2837
|
+
<duration>67</duration>
|
2838
|
+
<filename>http://media.howcast.com/system/videos/0/58/97/28/289758.flv</filename>
|
2839
|
+
<tags>egg, shell, cracking, splitting, beating, preparing, cooking, kitchen, baking, bowl, breaking, yolk</tags>
|
2840
|
+
<category-hierarchy>
|
2841
|
+
<category id="355">Food & Drink</category>
|
2842
|
+
<category parent_id="355" id="392">Cooking Basics</category>
|
2843
|
+
</category-hierarchy>
|
2844
|
+
<comment-count>0</comment-count>
|
2845
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/282247/CrackEgg_xxlarge_maintained_aspect.png</thumbnail-url>
|
2846
|
+
<permalink>http://www.howcast.com/videos/282247-How-To-Crack-an-Egg</permalink>
|
2847
|
+
<content_rating>nonadult</content_rating>
|
2848
|
+
</video>
|
2849
|
+
<video>
|
2850
|
+
<category-id>382</category-id>
|
2851
|
+
<id>258250</id>
|
2852
|
+
<title>How To Hard-Boil an Egg</title>
|
2853
|
+
<views>886</views>
|
2854
|
+
<type>HowcastGuide</type>
|
2855
|
+
<created-at>Tue, 20 Oct 2009 15:17:37 -0700</created-at>
|
2856
|
+
<rating>3</rating>
|
2857
|
+
<username>michaelrsanchez</username>
|
2858
|
+
<description>
|
2859
|
+
<![CDATA[Making the perfect hard-boiled egg is a science. Follow these simple steps to have that perfect creamy yellow yolk.]]>
|
2860
|
+
</description>
|
2861
|
+
<embed>
|
2862
|
+
<![CDATA[<object width="425" height="273" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=258250"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=258250" type="application/x-shockwave-flash" width="425" height="273" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2863
|
+
</embed>
|
2864
|
+
<duration>90</duration>
|
2865
|
+
<filename>http://media.howcast.com/system/videos/5/82/46/26/264682.flv</filename>
|
2866
|
+
<tags>eggs,boiling,hard-boiling,hard,cooking,making,breakfast,recipes,food,preparing,correctly</tags>
|
2867
|
+
<category-hierarchy>
|
2868
|
+
<category id="355">Food & Drink</category>
|
2869
|
+
<category parent_id="355" id="382">Breakfast</category>
|
2870
|
+
</category-hierarchy>
|
2871
|
+
<comment-count>0</comment-count>
|
2872
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/258250/HardBoilEgg_xxlarge_maintained_aspect.png</thumbnail-url>
|
2873
|
+
<permalink>http://www.howcast.com/videos/258250-How-To-HardBoil-an-Egg</permalink>
|
2874
|
+
<content_rating>nonadult</content_rating>
|
2875
|
+
</video>
|
2876
|
+
<video>
|
2877
|
+
<category-id>382</category-id>
|
2878
|
+
<id>29259</id>
|
2879
|
+
<title>How To Poach an Egg</title>
|
2880
|
+
<views>22026</views>
|
2881
|
+
<type>HowcastGuide</type>
|
2882
|
+
<created-at>Tue, 02 Sep 2008 10:03:03 -0700</created-at>
|
2883
|
+
<rating>64</rating>
|
2884
|
+
<username>michaelrsanchez</username>
|
2885
|
+
<description>
|
2886
|
+
<![CDATA[Good news for egg lovers: You don't need a drop of oil or butter for this preparation, which makes poaching one of the healthiest ways to put a protein powerhouse on your plate.]]>
|
2887
|
+
</description>
|
2888
|
+
<embed>
|
2889
|
+
<![CDATA[<object width="425" height="352" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=29259"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=29259" type="application/x-shockwave-flash" width="425" height="352" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2890
|
+
</embed>
|
2891
|
+
<duration>104</duration>
|
2892
|
+
<filename>http://media.howcast.com/system/videos/6/59/92/02/29259.flv</filename>
|
2893
|
+
<tags>DIY, Instructional, tutorial, Do It Yourself, Tips, Essential Skills, Learn to, egg, poach, breakfast</tags>
|
2894
|
+
<category-hierarchy>
|
2895
|
+
<category id="355">Food & Drink</category>
|
2896
|
+
<category parent_id="355" id="382">Breakfast</category>
|
2897
|
+
</category-hierarchy>
|
2898
|
+
<comment-count>9</comment-count>
|
2899
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/29259/Picture_8_xxlarge_maintained_aspect.png</thumbnail-url>
|
2900
|
+
<permalink>http://www.howcast.com/videos/29259-How-To-Poach-an-Egg</permalink>
|
2901
|
+
<content_rating>nonadult</content_rating>
|
2902
|
+
</video>
|
2903
|
+
<video>
|
2904
|
+
<category-id>382</category-id>
|
2905
|
+
<id>2578</id>
|
2906
|
+
<title>How To Hard-Boil an Egg So It Peels Easily</title>
|
2907
|
+
<views>21462</views>
|
2908
|
+
<type>HowcastGuide</type>
|
2909
|
+
<created-at>Tue, 18 Mar 2008 11:08:10 -0700</created-at>
|
2910
|
+
<rating>32</rating>
|
2911
|
+
<username>SheriffThompson</username>
|
2912
|
+
<description>
|
2913
|
+
<![CDATA[Have you ever thrown out a perfectly good hard-boiled egg because you got so frustrated trying to peel it? Here’s how to cook the perfectly-peelable egg. ]]>
|
2914
|
+
</description>
|
2915
|
+
<embed>
|
2916
|
+
<![CDATA[<object width="425" height="352" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=2578"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=2578" type="application/x-shockwave-flash" width="425" height="352" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2917
|
+
</embed>
|
2918
|
+
<duration>99</duration>
|
2919
|
+
<filename>http://media.howcast.com/system/videos/2/78/25/2578.flv</filename>
|
2920
|
+
<tags>boil, boiled, boiling, cook, cooking, DIY, Do It Yourself, easily, easy, egg, eggs, Essential Skills, food, hard-boil, hard-boiled, Instructional, Learn to, make, making, peel, peeling, Tips, tutorial</tags>
|
2921
|
+
<category-hierarchy>
|
2922
|
+
<category id="355">Food & Drink</category>
|
2923
|
+
<category parent_id="355" id="382">Breakfast</category>
|
2924
|
+
</category-hierarchy>
|
2925
|
+
<comment-count>8</comment-count>
|
2926
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/2578/ppn_rich_hard_boil_egg_sd_xxlarge_maintained_aspect.jpg</thumbnail-url>
|
2927
|
+
<permalink>http://www.howcast.com/videos/2578-How-To-HardBoil-an-Egg-So-It-Peels-Easily</permalink>
|
2928
|
+
<content_rating>nonadult</content_rating>
|
2929
|
+
</video>
|
2930
|
+
<video>
|
2931
|
+
<category-id>382</category-id>
|
2932
|
+
<id>1072</id>
|
2933
|
+
<title>How To Make Perfect Scrambled Eggs</title>
|
2934
|
+
<views>19427</views>
|
2935
|
+
<type>HowcastGuide</type>
|
2936
|
+
<created-at>Tue, 05 Feb 2008 13:28:45 -0800</created-at>
|
2937
|
+
<rating>23</rating>
|
2938
|
+
<username>pjvaldez</username>
|
2939
|
+
<description>
|
2940
|
+
<![CDATA[Everyone and their mother claims to make the best scrambled eggs. We're no different—we're just not your mom.]]>
|
2941
|
+
</description>
|
2942
|
+
<embed>
|
2943
|
+
<![CDATA[<object width="425" height="352" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=1072"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=1072" type="application/x-shockwave-flash" width="425" height="352" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2944
|
+
</embed>
|
2945
|
+
<duration>133</duration>
|
2946
|
+
<filename>http://media.howcast.com/system/videos/1/72/10/1072.flv</filename>
|
2947
|
+
<tags>breakfast, cook, DIY, Do It Yourself, eggs, Essential Skills, food, Instructional, Learn to, scrambled, Tips, tutorial</tags>
|
2948
|
+
<category-hierarchy>
|
2949
|
+
<category id="355">Food & Drink</category>
|
2950
|
+
<category parent_id="355" id="382">Breakfast</category>
|
2951
|
+
</category-hierarchy>
|
2952
|
+
<comment-count>2</comment-count>
|
2953
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/1072/hpn_a011_perfect_scrambled_eggs_sd_xxlarge_maintained_aspect.jpg</thumbnail-url>
|
2954
|
+
<permalink>http://www.howcast.com/videos/1072-How-To-Make-Perfect-Scrambled-Eggs</permalink>
|
2955
|
+
<content_rating>nonadult</content_rating>
|
2956
|
+
</video>
|
2957
|
+
<video>
|
2958
|
+
<category-id>382</category-id>
|
2959
|
+
<id>29262</id>
|
2960
|
+
<title>How To Fry an Egg</title>
|
2961
|
+
<views>24757</views>
|
2962
|
+
<type>HowcastGuide</type>
|
2963
|
+
<created-at>Tue, 02 Sep 2008 10:45:47 -0700</created-at>
|
2964
|
+
<rating>32</rating>
|
2965
|
+
<username>michaelrsanchez</username>
|
2966
|
+
<description>
|
2967
|
+
<![CDATA[They say if it's hot enough, you can fry an egg on the sidewalk. But if concrete's not your thing, a skillet works, too.]]>
|
2968
|
+
</description>
|
2969
|
+
<embed>
|
2970
|
+
<![CDATA[<object width="425" height="352" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="howcastplayer"><param name="movie" value="http://www.howcast.com/flash/howcast_player.swf?file=29262"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.howcast.com/flash/howcast_player.swf?file=29262" type="application/x-shockwave-flash" width="425" height="352" allowFullScreen="true" allowScriptAccess="always" ></embed></object>]]>
|
2971
|
+
</embed>
|
2972
|
+
<duration>93</duration>
|
2973
|
+
<filename>http://media.howcast.com/system/videos/2/62/92/02/29262.flv</filename>
|
2974
|
+
<tags>DIY, Instructional, tutorial, Do It Yourself, Tips, Essential Skills, Learn to, fry, egg, breakfast</tags>
|
2975
|
+
<category-hierarchy>
|
2976
|
+
<category id="355">Food & Drink</category>
|
2977
|
+
<category parent_id="355" id="382">Breakfast</category>
|
2978
|
+
</category-hierarchy>
|
2979
|
+
<comment-count>10</comment-count>
|
2980
|
+
<thumbnail-url>http://img.howcast.com/thumbnails/29262/Picture_7_xxlarge_maintained_aspect.png</thumbnail-url>
|
2981
|
+
<permalink>http://www.howcast.com/videos/29262-How-To-Fry-an-Egg</permalink>
|
2982
|
+
<content_rating>nonadult</content_rating>
|
2983
|
+
</video>
|
2984
|
+
</videos>
|
2985
|
+
</howcast>
|
2986
|
+
PLAYLIST
|
2987
|
+
end
|
2528
2988
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 7
|
8
|
+
- 0
|
9
|
+
version: 0.7.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jingshen Jimmy Zhang
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-03-
|
18
|
+
date: 2010-03-19 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -57,13 +57,15 @@ files:
|
|
57
57
|
- README.markdown
|
58
58
|
- Rakefile
|
59
59
|
- VERSION
|
60
|
-
- howcast-0.
|
60
|
+
- howcast-0.6.0.gem
|
61
61
|
- howcast.gemspec
|
62
62
|
- lib/howcast.rb
|
63
63
|
- lib/howcast/client.rb
|
64
64
|
- lib/howcast/client/base.rb
|
65
65
|
- lib/howcast/client/category.rb
|
66
|
+
- lib/howcast/client/homepage.rb
|
66
67
|
- lib/howcast/client/marker.rb
|
68
|
+
- lib/howcast/client/playlist.rb
|
67
69
|
- lib/howcast/client/search.rb
|
68
70
|
- lib/howcast/client/user.rb
|
69
71
|
- lib/howcast/client/video.rb
|
@@ -71,6 +73,8 @@ files:
|
|
71
73
|
- lib/howcast/logging.rb
|
72
74
|
- spec/howcast/client/base_spec.rb
|
73
75
|
- spec/howcast/client/category_spec.rb
|
76
|
+
- spec/howcast/client/homepage_spec.rb
|
77
|
+
- spec/howcast/client/playlist_spec.rb
|
74
78
|
- spec/howcast/client/search_spec.rb
|
75
79
|
- spec/howcast/client/user_spec.rb
|
76
80
|
- spec/howcast/client/video_spec.rb
|
@@ -113,6 +117,8 @@ summary: Howcast API Ruby Wrapper
|
|
113
117
|
test_files:
|
114
118
|
- spec/howcast/client/base_spec.rb
|
115
119
|
- spec/howcast/client/category_spec.rb
|
120
|
+
- spec/howcast/client/homepage_spec.rb
|
121
|
+
- spec/howcast/client/playlist_spec.rb
|
116
122
|
- spec/howcast/client/search_spec.rb
|
117
123
|
- spec/howcast/client/user_spec.rb
|
118
124
|
- spec/howcast/client/video_spec.rb
|
data/howcast-0.5.0.gem
DELETED
Binary file
|