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 CHANGED
@@ -1,3 +1,11 @@
1
+ == 0.7.0 2010-03-19
2
+
3
+ * Add playlist object
4
+
5
+ == 0.6.0 2010-03-19
6
+
7
+ * Add homepage object
8
+
1
9
  == 0.5.1 2010-03-18
2
10
 
3
11
  * Add paging for user object videos
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.1
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.5.1"
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-18}
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.5.0.gem",
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",
@@ -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
@@ -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
@@ -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
@@ -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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; Family</category>
2666
+ <category parent_id="978" id="1027">Pregnancy</category>
2667
+ <category parent_id="1027" id="1034">Pregnancy Health &amp; 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 &amp; Nutrition</category>
2694
+ <category parent_id="479" id="480">General Health</category>
2695
+ <category parent_id="480" id="492">Stomach &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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
- - 5
8
- - 1
9
- version: 0.5.1
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 00:00:00 -07:00
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.5.0.gem
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