<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DU8MR3Y9fyp7ImA9WxBWE0o.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823</id><updated>2010-02-05T05:51:26.867-08:00</updated><title type="text">YouTube API Blog</title><subtitle type="html">Your official source for information on the YouTube API.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://apiblog.youtube.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://apiblog.youtube.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>A Googler</name><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>77</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/YoutubeApiBlog" /><feedburner:info uri="youtubeapiblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><feedburner:emailServiceId>YoutubeApiBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;CUUFSXozeip7ImA9WxBWEEg.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-7065540789338833483</id><published>2010-02-01T11:38:00.000-08:00</published><updated>2010-02-01T11:40:18.482-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-01T11:40:18.482-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="json-c" /><category scheme="http://www.blogger.com/atom/ns#" term="atom" /><category scheme="http://www.blogger.com/atom/ns#" term="format" /><category scheme="http://www.blogger.com/atom/ns#" term="jsonc" /><category scheme="http://www.blogger.com/atom/ns#" term="json" /><title>A New Format for JSON Results</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 13px; "&gt;It's been two and a half years since we &lt;a href="http://apiblog.youtube.com/2007/08/new-youtube-api-released-into-wild.html" id="w2vc" title="announced" style="color: rgb(85, 26, 139); "&gt;announced&lt;/a&gt; JSON as an alternative output format to Atom XML for YouTube API responses. As illustrated in the &lt;a href="http://code.google.com/apis/youtube/2.0/developers_guide_json.html" id="xhs7" title="developer's guide" style="color: rgb(85, 26, 139); "&gt;developer's guide&lt;/a&gt; and &lt;a href="http://gdata.ops.demo.googlepages.com/yt_json_codelab.html" id="s6ex" title="codelab" style="color: rgb(85, 26, 139); "&gt;codelab&lt;/a&gt;, JSON-formatted data is a natural choice when writing web applications – after all, who wants to parse XML from JavaScript?&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Our existing JSON format isn't perfect, however. It's very much a literal translation from Atom. As is often the case with literal translations, the current JSON format is wordier than it needs to be, and it lacks some of the elegance that a native dialect would offer.&lt;/div&gt;&lt;br /&gt;We've rethought out current JSON implementation, and moved away from a literal representation of the Atom data to a format that we hope will be more pleasing to those who are fluent in JSON. The vestigial XML namespace prefixes are no more, and we've removed many pieces of metadata specific to Atom documents that come across as noise in JSON. Repeating data elements are always structured as true JSON lists, and useful video metadata that exist as XML attributes in Atom have been rearranged to make more sense in the JSON document. You'll also find that the new JSON results are more compact than Atom XML, which is of special importance to code running from limited-bandwith mobile applications.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;We call this new format JSON-C, and you can read about all the technical details in our &lt;a href="http://code.google.com/apis/youtube/2.0/developers_guide_jsonc.html" id="d6:v" title="documentation" style="color: rgb(85, 26, 139); "&gt;documentation&lt;/a&gt; and see it in action in our &lt;a href="http://code.google.com/apis/youtube/articles/view_youtube_jsonc_responses.html" id="qdxk" title="live demo" style="color: rgb(85, 26, 139); "&gt;live demo&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;With the release of JSON-C, we consider the legacy JSON format officially deprecated. All new development should prefer JSON-C to JSON, and if you have existing YouTube API code that relies on JSON-formatted results, you'll need to upgrade your code to use the new format. We will be supporting legacy JSON-formatted output in accordance with the deprecation policy outlined in our &lt;a href="http://code.google.com/apis/youtube/terms.html" id="t_0." title="Terms of Service" style="color: rgb(85, 26, 139); "&gt;Terms of Service&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Cheers,&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;i&gt;-Jeff Posnick, YouTube API Team&lt;/i&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-7065540789338833483?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/C0fkHW8YfZQ" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/7065540789338833483?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/7065540789338833483?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/C0fkHW8YfZQ/new-format-for-json-results.html" title="A New Format for JSON Results" /><author><name>Jeffrey Posnick</name><uri>http://www.blogger.com/profile/12266211780281941403</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17334247292451043294" /></author><feedburner:origLink>http://apiblog.youtube.com/2010/02/new-format-for-json-results.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08DR3Y9eCp7ImA9WxBQFU0.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-7160230243264782520</id><published>2010-01-14T14:55:00.000-08:00</published><updated>2010-01-14T14:57:56.860-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-14T14:57:56.860-08:00</app:edited><title>YouTube's APIs and Refresher on our Terms of Service</title><content type="html">&lt;div&gt;It's been a busy 2009 and we're excited to be back in 2010 to work on all the cool features we have planned for the YouTube APIs in the coming months. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Opening up our API has led to some &lt;a href="http://code.google.com/apis/youtube/casestudies/"&gt;really cool and fun commercial applications&lt;/a&gt;, far beyond what anyone here at YouTube could ever have imagined. Tens of thousands of developers have created great apps and websites that not only entertain and delight users in creative ways but give our content partners more choice and reach in distributing their videos. For example, we recently announced &lt;a href="http://www.youtube.com/direct"&gt;YouTube Direct&lt;/a&gt;, an open-source video uploading platform that is built entirely on top of the YouTube APIs and is available to any commercial website that wants to solicit video submissions from their users.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We thought it would be a good idea to start the year by revisiting a subject that many of you have had questions about since the APIs were born: the API Terms of Service.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Launched back in 2007, the YouTube APIs provide access to some of YouTube's core features (uploading, searching and playing videos, organizing playlists, etc.) for your websites and apps. Before using the API, we ask that you do one thing: carefully read through our &lt;a href="http://code.google.com/apis/youtube/terms.html"&gt;Terms of Service&lt;/a&gt; (TOS).  Here are a few things contained in our TOS that you should be aware of.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Videos belong to their owners&lt;/b&gt; - YouTube is a hosting platform. The videos themselves belong to the content owner (anyone from a major studio to a mother recording her son's graduation). In all cases, the content owner decides how and where their YouTube videos are distributed. Sometimes, video owners don't want others to profit from their work, or sometimes they may want to restrict where their videos are shown. While you may disagree with this decision, we need to respect the content owners' wishes.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Standard YouTube video player is key&lt;/b&gt; - Consistency in terms of quick video loads and playbacks is a hallmark of the YouTube experience. We therefore ask that you don't enable videos for download, modify a video in any way, or enable playback through means other than other official embeddable players.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Don't serve or strip ads from the video&lt;/b&gt; - Serving your own ads against a video without sharing revenue with the content creator, or YouTube, is against the TOS. So is using technology that strips out the ads we're serving on videos.  Doing this deprives the uploader from legitimate earnings from his or her work.  If you want to learn more about monetizing your YouTube apps, check out our &lt;a href="http://code.google.com/apis/youtube/creating_monetizable_applications.html"&gt;API monetization guide&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;It's ok to charge customers to access your application&lt;/b&gt; - Creating a subscription, or a one-time access/download fee to use your website or app is fine.  But if you do, make it clear that it's you who's charging for access to the video, not YouTube.  If you don't make this clear, you're very likely violating the TOS.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Occasionally, we update our TOS to make things even clearer, or to evolve as new features become available on the Web.  But rest assured that the core guidelines in our TOS related to advertising, downloading videos, and using an official player have been there since the TOS's inception. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Our hope is that this post can serve as a reference point to clear up any confusions you might have surrounding our TOS. We're always looking to do more to make the API better for our developers and we are eager to hear your ideas and feedback. If you haven't already, do drop by our &lt;a href="http://groups.google.com/group/youtube-api-gdata/"&gt;YouTube APIs Developer Forum&lt;/a&gt; and get in touch with us.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; "&gt;Posted by Kuan Yong, YouTube APIs and Tools Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-7160230243264782520?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/lnf60JsWbfI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://apiblog.youtube.com/feeds/7160230243264782520/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=2443724041307041823&amp;postID=7160230243264782520" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/7160230243264782520?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/7160230243264782520?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/lnf60JsWbfI/youtubes-apis-and-refresher-on-our.html" title="YouTube's APIs and Refresher on our Terms of Service" /><author><name>Kuan Yong</name><uri>http://www.blogger.com/profile/16935301056658837962</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03469350828253255920" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><feedburner:origLink>http://apiblog.youtube.com/2010/01/youtubes-apis-and-refresher-on-our.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YNQn08cSp7ImA9WxNbFEo.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-8410057462189566196</id><published>2009-11-17T07:16:00.000-08:00</published><updated>2009-11-17T07:19:53.379-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-17T07:19:53.379-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="direct" /><category scheme="http://www.blogger.com/atom/ns#" term="uploads" /><category scheme="http://www.blogger.com/atom/ns#" term="embed" /><title>Enrich your site with YouTube Direct</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 13px; "&gt;Today we announced the launch of &lt;a id="s6a." href="http://youtube-global.blogspot.com/2009/11/connecting-citizens-and-journalists.html" title="YouTube Direct" style="color: rgb(85, 26, 139); "&gt;YouTube Direct&lt;/a&gt;, a new tool built on top of YouTube's public APIs that enables any developer to solicit video submissions on their website, powered by YouTube.&lt;br /&gt;&lt;br /&gt;Users upload their videos directly on the developer's website, after which the developer can review the submissions and select the best ones to showcase. Since these videos live on YouTube, users are able to reach YouTube's large user base directly while also getting broader exposure and editorial validation for the videos they create.&lt;br /&gt;&lt;br /&gt;Although YouTube Direct was originally created with our news partners in mind, we believe that other developers and website owners can benefit from it as well. To put YouTube Direct in the hands of as many developers as possible, we open sourced the bulk of the code and designed it to run on &lt;a id="tg2f" href="http://appengine.google.com/" title="Google App Engine" style="color: rgb(85, 26, 139); "&gt;Google App Engine&lt;/a&gt; - Google's scalable hosting platform. This enables developers to easily deploy their own instance of the tool and take advantage of App Engine's scalability and low cost. The videos themselves are served from the same infrastructure that powers YouTube.com.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uFt9gapWLMU&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/uFt9gapWLMU&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;span class="Apple-style-span"  style="font-family:Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Visit &lt;a id="sroc" href="http://code.google.com/apis/youtube/ytdirect.html" title="YouTube Direct for Developers page" style="color: rgb(85, 26, 139); "&gt;YouTube Direct for Developers page&lt;/a&gt; to read more about it or go directly to the &lt;a id="uo.s" href="http://code.google.com/p/youtube-direct" title="YouTube Direct's project page"&gt;project page&lt;/a&gt; to download the code. As always, we'd love to hear your feedback on this new tool. Drop us a line in &lt;a id="q.2k" href="http://groups.google.com/group/youtube-api-gdata" title="YouTube API Developer Forum" style="color: rgb(85, 26, 139); "&gt;YouTube's Developer Forum&lt;/a&gt;.&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-8410057462189566196?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/zjxFoPHfuIU" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/8410057462189566196?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/8410057462189566196?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/zjxFoPHfuIU/enrich-your-site-with-youtube-direct.html" title="Enrich your site with YouTube Direct" /><author><name>Jeffrey Posnick</name><uri>http://www.blogger.com/profile/12266211780281941403</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17334247292451043294" /></author><feedburner:origLink>http://apiblog.youtube.com/2009/11/enrich-your-site-with-youtube-direct.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8GQXc6cCp7ImA9WxNUGEU.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-6960592291750978280</id><published>2009-11-10T13:31:00.000-08:00</published><updated>2009-11-10T13:33:40.918-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-10T13:33:40.918-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="staging" /><title>New YouTube API Version Available for Testing</title><content type="html">&lt;span class="Apple-style-span"   style="  ;font-family:Verdana;font-size:13px;"&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;While we don't normally call out new releases of the Google Data YouTube API on this blog, we wanted to draw specific attention to the version that has just been pushed out to our staging servers. There are two specific changes that we'd like to give our developers and partners a chance to test before they go live. Both changes affect important areas of the API: &lt;a href="http://code.google.com/apis/youtube/2.0/developers_guide_protocol_clientlogin.html" id="ue97" target="_blank" title="ClientLogin authentication" style="color: rgb(85, 26, 139); "&gt;ClientLogin authentication&lt;/a&gt;, and playback URLs in &lt;a href="http://code.google.com/apis/youtube/2.0/reference.html#youtube_data_api_tag_media:content" id="b0i:" target="_blank" title="media:content entries" style="color: rgb(85, 26, 139); "&gt;media:content entries&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;We fully intend for the changes to be backwards compatible, and from the developer's perspective you should not have to change any code. But testing your code is always a best practice, so if you rely on ClientLogin or retrieving media playback URLs from the Google Data YouTube API, please &lt;a href="http://apiblog.youtube.com/2008/11/all-worlds-stage.html" id="ifcn" target="_blank" title="repoint your code to http://stage.gdata.youtube.com" style="color: rgb(85, 26, 139); "&gt;repoint your code to http://stage.gdata.youtube.com&lt;/a&gt; and confirm functionality.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; text-align: left; "&gt;Any incompatibilities should be reported as soon as possible in our &lt;a href="http://groups.google.com/group/youtube-api-gdata" id="mlin" target="_blank" title="YouTube API Developer Forum" style="color: rgb(85, 26, 139); "&gt;YouTube API Developer Forum&lt;/a&gt;. We expect to move the changes from the staging environment into production on November 17.&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-6960592291750978280?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/tpSMyDUQmDo" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/6960592291750978280?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/6960592291750978280?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/tpSMyDUQmDo/new-youtube-api-version-available-for.html" title="New YouTube API Version Available for Testing" /><author><name>Jeffrey Posnick</name><uri>http://www.blogger.com/profile/12266211780281941403</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17334247292451043294" /></author><feedburner:origLink>http://apiblog.youtube.com/2009/11/new-youtube-api-version-available-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAEQnczfCp7ImA9WxNUE0s.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-7803136323596501160</id><published>2009-11-04T13:03:00.000-08:00</published><updated>2009-11-04T13:05:03.984-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-04T13:05:03.984-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="legacy" /><category scheme="http://www.blogger.com/atom/ns#" term="decommission" /><title>Final Decommission Notice for the Legacy YouTube API</title><content type="html">&lt;span class="Apple-style-span"   style="  ;font-family:Verdana;font-size:13px;"&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;It's been several years since we've released the &lt;a href="http://code.google.com/apis/youtube/getting_started.html#data_api" id="te:6" target="_blank" title="GData-based YouTube API" style="color: rgb(85, 26, 139); "&gt;Google Data-based YouTube API&lt;/a&gt;, and in that time we've been encouraging developers who used the legacy YouTube API to upgrade before we pull the metaphoric plug on that older version. At this point, all but a handful of holdouts have upgraded, and as of November 11, 2009, the legacy YouTube API will cease operation.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;If you're using one of our &lt;a href="http://code.google.com/apis/youtube/code.html" id="vsbi" target="_blank" title="YouTube API client libraries" style="color: rgb(85, 26, 139); "&gt;YouTube API client libraries&lt;/a&gt;, then you're definitely making use of the modern Google Data YouTube API. If you're manually making HTTP requests to a URL whose hostname contains &lt;span class="Apple-style-span"  style="font-family:'Courier New';"&gt;gdata.youtube.com&lt;/span&gt;, then you're also good to go. If you think you might still be using the legacy YouTube API but aren't sure, take a look at some of the example legacy API calls in this &lt;a href="http://code.google.com/apis/youtube/migration.html" id="i4.-" target="_blank" title="migration guide" style="color: rgb(85, 26, 139); "&gt;migration guide&lt;/a&gt;. If it turns out that you are still using the older API, then the migration guide will give you the information you need to upgrade – and be sure to do so before November 11!&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-7803136323596501160?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/Exju6MBKS8s" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/7803136323596501160?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/7803136323596501160?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/Exju6MBKS8s/final-decommission-notice-for-legacy.html" title="Final Decommission Notice for the Legacy YouTube API" /><author><name>Jeffrey Posnick</name><uri>http://www.blogger.com/profile/12266211780281941403</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17334247292451043294" /></author><feedburner:origLink>http://apiblog.youtube.com/2009/11/final-decommission-notice-for-legacy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUFSHs_eSp7ImA9WxNVGU4.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-8847961565615430250</id><published>2009-10-30T13:13:00.000-07:00</published><updated>2009-10-30T13:23:39.541-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-30T13:23:39.541-07:00</app:edited><title>Cleaning Up Our Embeds</title><content type="html">&lt;div&gt;For the longest time, official YouTube video embed codes have contained embarrassingly malformed URLs; the first URL parameter (at the end of URLs) should always start with a ? character, but our URL parameters begin with &amp;amp;. That looks something like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  http://www.youtube.com/v/0XjwoVqM_qE&amp;amp;feature=player_embedded&amp;amp;fs=1 (incorrect)&lt;/div&gt;&lt;div&gt;  http://www.youtube.com/v/0XjwoVqM_qE?feature=player_embedded&amp;amp;fs=1 (correct)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fortunately, we've found a way to use correct URLs without breaking old browsers and we can't wait to do it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Speaking of changes to the embed code, we'll also be tweaking the HTML content. The new YouTube embed code is leaner and still works on everything from ancient desktop browsers to modern smart phones. You won't find another snippet of HTML that's as battle-tested and mother-approved! Here's a preview of the new, streamlined format:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;br /&gt;&lt;param name="movie" value="http://www.youtube.com/v/0XjwoVqM_qE?color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;br /&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;br /&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/0XjwoVqM_qE?color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And here's what the HTML looks like:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&amp;lt;object width="425" height="344"&amp;gt;&lt;br /&gt;&amp;lt;param name="movie" value="http://www.youtube.com/v/0XjwoVqM_qE?color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&amp;gt;&lt;br /&gt;&amp;lt;param name="allowFullScreen" value="true"&amp;gt;&lt;br /&gt;&amp;lt;param name="allowScriptAccess" value="always"&amp;gt;&lt;br /&gt;&amp;lt;embed src="http://www.youtube.com/v/0XjwoVqM_qE?color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&lt;br /&gt;type="application/x-shockwave-flash" allowfullscreen="true"&lt;br /&gt;allowScriptAccess="always" width="425" height="344"&amp;gt;&lt;br /&gt;&amp;lt;/object&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you grab YouTube embed codes by hand from YouTube.com, or from the YouTube Player APIs or oEmbed, you'll start getting this updated HTML soon. As for all the embeds already on the web: worry not, those will continue to work forever.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-8847961565615430250?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/kduNnPQcpJ0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/8847961565615430250?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/8847961565615430250?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/kduNnPQcpJ0/cleaning-up-our-embeds.html" title="Cleaning Up Our Embeds" /><author><name>Phil Harnish</name><uri>http://www.blogger.com/profile/13021892132093155173</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08484898287717449648" /></author><feedburner:origLink>http://apiblog.youtube.com/2009/10/cleaning-up-our-embeds.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0INSHk4cCp7ImA9WxNWFUg.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-1044786734109220101</id><published>2009-10-14T15:31:00.000-07:00</published><updated>2009-10-14T15:33:19.738-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-14T15:33:19.738-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="chromeless" /><category scheme="http://www.blogger.com/atom/ns#" term="player" /><category scheme="http://www.blogger.com/atom/ns#" term="actionscript" /><category scheme="http://www.blogger.com/atom/ns#" term="flash" /><title>The ActionScript 3 YouTube Chromeless Player is Now Live</title><content type="html">&lt;span class="Apple-style-span" style="background-color: rgb(255, 255, 255); font-family: Verdana; font-size: 13px; "&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;We have some good news for developers who integrate YouTube videos into their ActionScript 3 Flash applications: the official YouTube Chromeless Player API has been updated to natively support ActionScript 3!&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Previous to this release, ActionScript 3 developers had to rely on wrapper libraries that bridged the gap between the native ActionScript 2 API and their own ActionScript 3 code. We're thrilled that intrepid developers were able to patch things together on their own and share their code with the rest of the community. Now that there's official support for using the chromeless player from ActionScript 3, everyone should have more time to focus on writing compelling Flash applications, rather than dealing with the unique issues that cross-language coding entails.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Please check out our &lt;a href="http://code.google.com/apis/youtube/flash_api_reference.html" id="smhq" target="_blank" title="ActionScript 3 documentation" style="color: rgb(85, 26, 139); "&gt;ActionScript 3 documentation&lt;/a&gt;, and let us know what you think of the new API in our &lt;a href="http://groups.google.com/group/youtube-api-gdata" id="e6vt" target="_blank" title="developer forum" style="color: rgb(85, 26, 139); "&gt;developer forum&lt;/a&gt;.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;With the launch of ActionScript 3 support, we're officially deprecating the &lt;a href="http://code.google.com/apis/youtube/flash_api_reference_as2.html" id="eikc" target="_blank" title="ActionScript 2 YouTube Chromeless Player API" style="color: rgb(85, 26, 139); "&gt;ActionScript 2 YouTube Chromeless Player API&lt;/a&gt;. As per our YouTube API deprecation policy, detailed in our &lt;a href="http://code.google.com/apis/youtube/terms.html" id="v3rr" target="_blank" title="Terms of Service" style="color: rgb(85, 26, 139); "&gt;Terms of Service&lt;/a&gt;, we will continue to operate the ActionScript 2 API for a period of three years (until October 14, 2012).&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Cheers,&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;-The YouTube API Team&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-1044786734109220101?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/5siFAQmoNuE" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/1044786734109220101?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/1044786734109220101?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/5siFAQmoNuE/actionscript-3-youtube-chromeless.html" title="The ActionScript 3 YouTube Chromeless Player is Now Live" /><author><name>Jeffrey Posnick</name><uri>http://www.blogger.com/profile/12266211780281941403</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17334247292451043294" /></author><feedburner:origLink>http://apiblog.youtube.com/2009/10/actionscript-3-youtube-chromeless.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EMR3Y5fCp7ImA9WxNWE0o.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-426936227490051029</id><published>2009-10-12T11:20:00.000-07:00</published><updated>2009-10-12T11:21:26.824-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-12T11:21:26.824-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="uploads" /><title>Direct Uploads Server Migration</title><content type="html">&lt;span class="Apple-style-span" style="background-color: rgb(255, 255, 255); font-family: Verdana; font-size: 13px; "&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;We first &lt;a id="p8zq" href="http://apiblog.youtube.com/2009/06/public-service-announcement-upload.html" title="announced" style="color: rgb(85, 26, 139); "&gt;announced&lt;/a&gt; our new API upload infrastructure back in June and asked developers to test their YouTube API code against our staging environment.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Since then, we've started deploying the new upload infrastructure to production machines in a phased manner. Last month, we transitioned &lt;a id="nj9s" href="http://code.google.com/apis/youtube/2.0/developers_guide_protocol_browser_based_uploading.html" title="browser-based API uploads" style="color: rgb(85, 26, 139); "&gt;browser-based API uploads&lt;/a&gt; to the new servers, and have been closely monitoring performance and error rates to ensure that there were no unintended side effects.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;We're now ready to begin the transition for &lt;a id="fi4:" href="http://code.google.com/apis/youtube/2.0/developers_guide_protocol_direct_uploading.html" title="direct uploads" style="color: rgb(85, 26, 139); "&gt;direct uploads&lt;/a&gt;. Starting today, a small percentage of direct uploads traffic will automatically be routed to our new servers. We will be monitoring traffic over the next few weeks and gradually increasing the traffic that the new servers receive until we have fully completed the migration.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;As a developer, you won't have to make any changes in your code to take advantage of the increased reliability and bug fixes found in the new infrastructure. While we do expect that this new infrastructure will be fully backwards compatible, if you do notice any change in your application's behavior with regard to direct uploads, please let us know in our &lt;a id="u51f" href="http://groups.google.com/group/youtube-api-gdata" title="developer group" style="color: rgb(85, 26, 139); "&gt;developer group&lt;/a&gt;.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Cheers,&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;-The YouTube API Team&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-426936227490051029?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/zHk2xAoh_r8" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/426936227490051029?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/426936227490051029?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/zHk2xAoh_r8/direct-uploads-server-migration.html" title="Direct Uploads Server Migration" /><author><name>Jeffrey Posnick</name><uri>http://www.blogger.com/profile/12266211780281941403</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17334247292451043294" /></author><feedburner:origLink>http://apiblog.youtube.com/2009/10/direct-uploads-server-migration.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQFRX4_eSp7ImA9WxNWE0s.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-4905176591945538672</id><published>2009-10-09T08:54:00.000-07:00</published><updated>2009-10-12T10:08:34.041-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-12T10:08:34.041-07:00</app:edited><title>oEmbed support</title><content type="html">&lt;div&gt;&lt;a href="http://oembed.com/"&gt;oEmbed&lt;/a&gt; is a pretty slick way to embed multimedia for a link. For example with a request like this:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch%3Fv%3DbDOYN-6gdRE&amp;amp;format=json"&gt;http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch%3Fv%3DbDOYN-6gdRE&amp;amp;format=json&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;You get a response like this:&lt;/div&gt;&lt;pre&gt;{"provider_url": "http://www.youtube.com/",&lt;br /&gt;"title": "Auto-Tune the News #8: dragons. geese. Michael Vick. (ft. T-Pain)",&lt;br /&gt;"html": "&lt;b&gt;embed code&lt;/b&gt;",&lt;br /&gt;...}&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;The value for the "html" key is all you need to insert into your webpage to render an embedded YouTube video:&lt;/div&gt;&lt;div&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bDOYN-6gdRE&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/bDOYN-6gdRE&amp;amp;fs=1" type="application/x-shockwave-flash" width="425" height="344" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Check out the documentation at &lt;a href="http://oembed.com/"&gt;oEmbed.com&lt;/a&gt; for more information.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-4905176591945538672?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/h8caOcTXn5Q" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/4905176591945538672?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/4905176591945538672?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/h8caOcTXn5Q/oembed-support.html" title="oEmbed support" /><author><name>Phil Harnish</name><uri>http://www.blogger.com/profile/13021892132093155173</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08484898287717449648" /></author><feedburner:origLink>http://apiblog.youtube.com/2009/10/oembed-support.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcBR307eyp7ImA9WxNQEU4.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-1010068033243353548</id><published>2009-09-16T13:30:00.000-07:00</published><updated>2009-09-16T13:30:56.303-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-16T13:30:56.303-07:00</app:edited><title>New Reporting Dashboard for Developers</title><content type="html">Getting your YouTube web or client application up and running is only half the battle. We know that you'll also want to monitor your application to see how it's performing. Our new Developer Dashboard shows you at a glance the number of API requests, playbacks, uploads and errors that your app is generating. You can visualize the data using our interactive chart or download a file to process the data offline. To use the dashboard, you'll need to provide a developer key in your API requests and then pass the media URLs from the API responses to the standard embedded player or the chromeless player.&lt;br /&gt;&lt;div id="p1av"&gt;&lt;br /&gt;&lt;/div&gt;You can log into the new Developer Dashboard at &lt;a href="http://code.google.com/apis/youtube/dashboard/"&gt;&lt;u id="lyt8"&gt;http://code.google.com/apis/youtube/dashboard/&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Posted by Kuan Yong, YouTube APIs and Tools Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-1010068033243353548?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/wqKEbRiqIOQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://apiblog.youtube.com/feeds/1010068033243353548/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=2443724041307041823&amp;postID=1010068033243353548" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/1010068033243353548?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/1010068033243353548?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/wqKEbRiqIOQ/new-reporting-dashboard-for-developers.html" title="New Reporting Dashboard for Developers" /><author><name>Kuan Yong</name><uri>http://www.blogger.com/profile/16935301056658837962</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03469350828253255920" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total><feedburner:origLink>http://apiblog.youtube.com/2009/09/new-reporting-dashboard-for-developers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cGSXw6fyp7ImA9WxNTEko.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-2200309777715490138</id><published>2009-08-14T11:30:00.000-07:00</published><updated>2009-08-14T11:37:08.217-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-14T11:37:08.217-07:00</app:edited><title>Caption your videos with the YouTube API</title><content type="html">&lt;span style="color: rgb(0, 0, 0);"&gt;In August last year, we launched the ability to add captions to your videos on YouTube. Now, you can do the same using the YouTube Data API. &lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the new captions API, developers can create third-party apps that help users create, upload and manage the caption tracks of their YouTube videos. Each video can have multiple caption tracks, and multiple subtitle formats are supported. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Find out more in our &lt;a href="http://code.google.com/intl/en/apis/youtube/2.0/developers_guide_protocol_captions.html"&gt;Developer's Guide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Posted by Christoph Schwab-Ganser, YouTube Engineering&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-2200309777715490138?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/rHFekwylhBM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://apiblog.youtube.com/feeds/2200309777715490138/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=2443724041307041823&amp;postID=2200309777715490138" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/2200309777715490138?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/2200309777715490138?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/rHFekwylhBM/caption-your-videos-with-youtube-api.html" title="Caption your videos with the YouTube API" /><author><name>Kuan Yong</name><uri>http://www.blogger.com/profile/16935301056658837962</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03469350828253255920" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><feedburner:origLink>http://apiblog.youtube.com/2009/08/caption-your-videos-with-youtube-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAHSXo-fyp7ImA9WxJbE0Q.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-5748815451850534020</id><published>2009-07-23T16:00:00.000-07:00</published><updated>2009-07-23T16:12:18.457-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-23T16:12:18.457-07:00</app:edited><title>New Video Portal For Film Buffs, Powered by YouTube</title><content type="html">Attention film buffs!&lt;br /&gt;&lt;br /&gt;The American Film Institute (AFI) just launched a new video portal on &lt;a href="http://www.afi.com/video"&gt;AFI.com&lt;/a&gt; featuring hundreds of videos from its vast archives. AFI is utilizing YouTube's APIs in order to stream videos directly from AFI's &lt;a href="http://www.youtube.com/afi"&gt;YouTube channel&lt;/a&gt;, as well as other great clips curated from YouTube. In addition to accessing the video content, users can post comments on the AFI.com video site as well as embed the videos on other sites, blogs and social networking pages.&lt;br /&gt;&lt;div id=":27u" class="ii gt"&gt;&lt;div class="im"&gt;&lt;br /&gt;The collection will be regularly augmented with videos selected from the AFI Archive, which contains 10,000 hours of material produced during AFI's 42-year history, much of which has never been seen by the general public. Be sure not to miss great clips such as "Alfred Hitchcock On Mastering Cinematic Tension" or "Steven Spielberg: The Toughest Thing For A Director".&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;We're thrilled that the YouTube APIs can help unlock such amazing material. Nice work, AFI!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Posted by George Strompolos, YouTube Partner Team&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-5748815451850534020?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/w_f5i3kSq3s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://apiblog.youtube.com/feeds/5748815451850534020/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=2443724041307041823&amp;postID=5748815451850534020" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/5748815451850534020?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/5748815451850534020?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/w_f5i3kSq3s/new-video-portal-for-film-buffs-powered.html" title="New Video Portal For Film Buffs, Powered by YouTube" /><author><name>Kuan Yong</name><uri>http://www.blogger.com/profile/16935301056658837962</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03469350828253255920" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://apiblog.youtube.com/2009/07/new-video-portal-for-film-buffs-powered.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcBRX86eip7ImA9WxJWE0k.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-970300242171560100</id><published>2009-06-18T11:00:00.000-07:00</published><updated>2009-06-18T11:00:54.112-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-18T11:00:54.112-07:00</app:edited><title>Simple Update Protocol for User Activity Feed docs are now available</title><content type="html">At Google I/O 2009, we demoed a nifty &lt;a href="http://code.google.com/p/gdata-samples/source/browse/#svn/trunk/uberviewer"&gt;sample application&lt;/a&gt; that tracks updates to any number of YouTube user activity feeds. The technology behind the application is the Simple Update Protocol (&lt;span class="il"&gt;SUP&lt;/span&gt;), a simple and compact "ping feed" that enables your application to efficiently monitor changes to a large number of user activity feeds.&lt;br /&gt;&lt;br /&gt;If you run a social network with tons of users who also happen to be active on YouTube, you should consider using &lt;span class="il"&gt;SUP&lt;/span&gt; to let your users easily share their updates on YouTube with their friends through their social graph on your site. See the docs &lt;a href="http://code.google.com/apis/youtube/2.0/developers_guide_protocol_sup.html"&gt;here&lt;/a&gt;&lt;u&gt;&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Posted by Kuan Yong, YouTube APIs and Tools Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-970300242171560100?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/oUiao6_eyjk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://apiblog.youtube.com/feeds/970300242171560100/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=2443724041307041823&amp;postID=970300242171560100" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/970300242171560100?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/970300242171560100?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/oUiao6_eyjk/simple-update-protocol-for-user.html" title="Simple Update Protocol for User Activity Feed docs are now available" /><author><name>Kuan Yong</name><uri>http://www.blogger.com/profile/16935301056658837962</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03469350828253255920" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://apiblog.youtube.com/2009/06/simple-update-protocol-for-user.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEGRH8_eCp7ImA9WxJXFUU.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-5329927040090421005</id><published>2009-06-09T16:03:00.001-07:00</published><updated>2009-06-09T16:03:45.140-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-09T16:03:45.140-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="announcements" /><title>Public Service Announcement - Upload Regression Testing</title><content type="html">The team has been working to improve the API upload infrastructure behind the scenes, and the new build is up at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://uploads2.gdata.youtube.com/" target="_blank"&gt;http://uploads2.gdata.youtube.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please do regression testing on your systems and report problems in our &lt;a title="discussion forum" href="http://groups.google.com/group/youtube-api-gdata" id="y1vj"&gt;discussion forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Barring any major complications, this will begin rolling out to the production uploads URL (uploads.gdata.youtube.com) in two weeks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Posted by Stephanie Liu, YouTube APIs and Tools Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-5329927040090421005?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/NZLCll6Iop4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/5329927040090421005?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/5329927040090421005?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/NZLCll6Iop4/public-service-announcement-upload.html" title="Public Service Announcement - Upload Regression Testing" /><author><name>Stephanie Liu</name><uri>http://www.blogger.com/profile/08457117592361473057</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06938078375332321706" /></author><feedburner:origLink>http://apiblog.youtube.com/2009/06/public-service-announcement-upload.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ENQX05fip7ImA9WxJQFE0.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-976502736995045215</id><published>2009-05-26T23:26:00.000-07:00</published><updated>2009-05-26T23:28:10.326-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-26T23:28:10.326-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="announcements" /><title>Google I/O Pass Winner!</title><content type="html">Wow, there's quite a bit of creative talent out there! It was hard to select from &lt;a title="all the posts" href="http://groups.google.com/group/youtube-api-gdata/browse_thread/thread/8dff8bdc11e91795" id="loiu"&gt;all the posts&lt;/a&gt;, but the winning haiku was from &lt;span style="font-weight: bold;"&gt;lionstone&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;public void youtube&lt;br /&gt; extends the community&lt;br /&gt; return social change&lt;br /&gt;&lt;br /&gt;Honorable mention goes to Ron (who already bought a ticket to the conference!):&lt;br /&gt;&lt;br /&gt;Documentation -&lt;br /&gt; cut, five, seven, five, season&lt;br /&gt; form situation&lt;br /&gt;&lt;br /&gt;We'll be seeing both of them at &lt;a title="Google I/O" href="http://code.google.com/events/io/" id="q1ag"&gt;Google I/O&lt;/a&gt; tomorrow -- if you're coming as well, come say 'hi' to the team at Office Hours, at the Sandbox, and in our two sessions. If you can't make it, watch the &lt;a title="Twitter stream" href="http://googleio.twazzup.com/" id="yakb"&gt;Twitter stream&lt;/a&gt; during the conference and the &lt;a title="videos" href="http://www.youtube.com/googledevelopers" id="i4v:"&gt;videos&lt;/a&gt; that will be posted afterwards.&lt;br /&gt;&lt;br /&gt;Posted by Stephanie Liu, YouTube APIs and Tools Team&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-976502736995045215?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/nFDVP_OKSWU" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/976502736995045215?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/976502736995045215?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/nFDVP_OKSWU/google-io-pass-winner.html" title="Google I/O Pass Winner!" /><author><name>Stephanie Liu</name><uri>http://www.blogger.com/profile/08457117592361473057</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06938078375332321706" /></author><feedburner:origLink>http://apiblog.youtube.com/2009/05/google-io-pass-winner.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkABRHYzfCp7ImA9WxJRFkQ.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-1742831488870806016</id><published>2009-05-18T17:50:00.000-07:00</published><updated>2009-05-18T17:59:15.884-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-18T17:59:15.884-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="announcements" /><title>Google I/O Pass</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6NxOo7yjlR4/ShIC4-1Rq7I/AAAAAAAAADw/o8Lg7-Jhimo/s1600-h/color_io_badge.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 67px; border:none; " src="http://1.bp.blogspot.com/_6NxOo7yjlR4/ShIC4-1Rq7I/AAAAAAAAADw/o8Lg7-Jhimo/s200/color_io_badge.jpg" alt="" id="BLOGGER_PHOTO_ID_5337331686349843378" border="0" /&gt;&lt;/a&gt;&lt;a href="http://code.google.com/events/io/" id="e4j8" title="Google I/O"&gt;Google I/O&lt;/a&gt;, our largest developer conference in San Francisco, CA, is just around the corner, and we'd love to see more YouTube developers there. We'll have two formal sessions, as well as office hours and lots of demos at the Developer Sandbox.&lt;br /&gt;&lt;br /&gt;Kuan, our Product Manager, will be giving a session about &lt;a href="http://code.google.com/events/io/sessions/BestPracticesYouTubeApps.html" id="c2_t" title="writing great, monetizable apps"&gt;writing great, monetizable apps&lt;/a&gt;, and Jeff Fisher and Jochen Hartmann will be giving a session on the &lt;a href="http://code.google.com/events/io/sessions/GoingSocialYouTubeApps.html" id="xm6x" title="new social feeds"&gt;new social feeds&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Check out the rest of the &lt;a href="http://code.google.com/events/io/sessions.html" id="guyi" title="great sessions"&gt;great sessions&lt;/a&gt; and the &lt;a href="http://code.google.com/events/io/schedule.html" id="ymu6" title="schedule"&gt;schedule&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We have one free pass ($400 value) to give away, so if you'll be in the area, tell us why you want to go in &lt;a title="this forum thread" href="http://groups.google.com/group/youtube-api-gdata/browse_thread/thread/8dff8bdc11e91795" id="u:nk"&gt;this forum thread&lt;/a&gt;. We'll pick the worthiest person by the end of the week (hint: Jeff really likes Haikus :).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Posted by Stephanie Liu, YouTube APIs and Tools Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-1742831488870806016?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/qyMi8kGArP0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/1742831488870806016?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/1742831488870806016?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/qyMi8kGArP0/google-io-pass.html" title="Google I/O Pass" /><author><name>Stephanie Liu</name><uri>http://www.blogger.com/profile/08457117592361473057</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06938078375332321706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_6NxOo7yjlR4/ShIC4-1Rq7I/AAAAAAAAADw/o8Lg7-Jhimo/s72-c/color_io_badge.jpg" height="72" width="72" /><feedburner:origLink>http://apiblog.youtube.com/2009/05/google-io-pass.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8NSX86eCp7ImA9WxJSFUs.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-5166217240890518568</id><published>2009-05-05T16:05:00.000-07:00</published><updated>2009-05-05T16:08:18.110-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-05T16:08:18.110-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><title>YouTube APIs: Search Explained</title><content type="html">In an alternate universe (where I have a goatee) I may be a voice actor instead of a Googler. However, since we live in this universe, the best I can do is make you a screencast about the YouTube API. Specifically, this video discusses the various search options we have in our Data API and the various limitations and caveats to keep in mind while integrating it into your program or website.&lt;br /&gt;&lt;br /&gt;If our API documentation is like the printed manual in the box of a new purchase that you never read, think of this video as the one-page laminated card with pretty pictures on it telling you not to get crushed by a bookshelf or hurt your back. Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sOEAD-gfJ_M&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/sOEAD-gfJ_M&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-5166217240890518568?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/yaWkCzEIVl0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/5166217240890518568?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/5166217240890518568?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/yaWkCzEIVl0/youtube-apis-search-explained.html" title="YouTube APIs: Search Explained" /><author><name>Jeff Fisher</name><email>noreply@blogger.com</email></author><feedburner:origLink>http://apiblog.youtube.com/2009/05/youtube-apis-search-explained.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QERn8zeCp7ImA9WxJTE0k.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-6162815977682324482</id><published>2009-04-21T11:11:00.000-07:00</published><updated>2009-04-21T13:21:47.180-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-21T13:21:47.180-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tutorials" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="json" /><category scheme="http://www.blogger.com/atom/ns#" term="devs" /><category scheme="http://www.blogger.com/atom/ns#" term="appengine" /><title>Modifying Chow-Down Part 2: Make it Faster!</title><content type="html">As promised in the &lt;a href="http://apiblog.youtube.com/2009/04/modifying-chow-down-application-part-1.html"&gt;previous blog post&lt;/a&gt;, I was given the task of making our &lt;a href="http://chow-down-gdata.appspot.com/"&gt;Chow Down Gdata&lt;/a&gt; sample a little faster. It would sometimes take a while to load restaurant information due to the requests to YouTube and Picasa Web Albums taking a while to be processed on the backend. Since this would cause the user to sometimes see a "loading" bar for several seconds; something had to be done.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3bO2g9UbC5k/Se4qkjKaV9I/AAAAAAAAABo/wdMMA2e870E/s1600-h/chow-down-gdata.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 196px;" src="http://1.bp.blogspot.com/_3bO2g9UbC5k/Se4qkjKaV9I/AAAAAAAAABo/wdMMA2e870E/s320/chow-down-gdata.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5327242216628443090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Originally, the application used the Python client library to retrieve information from YouTube and PWA and then stored it inside of memcache. The new solution is to instead retrieves these feeds directly in the browser using the &lt;a href="http://code.google.com/apis/gdata/json.html"&gt;json-in-script support&lt;/a&gt; of the Google Data APIs. This approach worked well for the Chow Down application since we were not retrieving any private information for use in this application and so did not need to authenticate as a user.&lt;br /&gt;&lt;br /&gt;Another benefit of using the JSON feeds is that the browser can asynchronously request results from both YouTube and PWA at the same time and render the results as soon as they are returned. This helps decrease the "perceived load time" that the user experiences since they are seeing information start to be loaded instead of just watching a progress bar.&lt;br /&gt;&lt;br /&gt;The code for the entire sample is available on code.google.com:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/gdata-samples/source/browse/trunk/chow-down-gdata/"&gt;http://code.google.com/p/gdata-samples/source/browse/trunk/chow-down-gdata/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But you can see all of the logic for retrieving the feeds using JavaScript in the ajax_restaurant_info template:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/gdata-samples/source/browse/trunk/chow-down-gdata/src/templates/ajax_restaurant_info.html"&gt;http://code.google.com/p/gdata-samples/source/browse/trunk/chow-down-gdata/src/templates/ajax_restaurant_info.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The code makes use of the &lt;a href="http://jquery.com/"&gt;jQuery JavaScript library&lt;/a&gt; in order to remain compact and compatible.&lt;br /&gt;&lt;br /&gt;So if your site is using the Data APIs of one or more Google properties and you don't need authentication, considering switching to the JSON feeds to improve perceived latency and let your pages load the AJAXy way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-6162815977682324482?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/-fimD4dTkys" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/6162815977682324482?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/6162815977682324482?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/-fimD4dTkys/modifying-chow-down-part-2-make-it.html" title="Modifying Chow-Down Part 2: Make it Faster!" /><author><name>Jeff Fisher</name><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_3bO2g9UbC5k/Se4qkjKaV9I/AAAAAAAAABo/wdMMA2e870E/s72-c/chow-down-gdata.png" height="72" width="72" /><feedburner:origLink>http://apiblog.youtube.com/2009/04/modifying-chow-down-part-2-make-it.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcMQnk-fip7ImA9WxVaGU8.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-6672572241533824787</id><published>2009-04-16T16:09:00.000-07:00</published><updated>2009-04-16T17:11:23.756-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-16T17:11:23.756-07:00</app:edited><title>Modifying the Chow-Down Application, part 1: Adding media from YouTube and Picasa</title><content type="html">Recently I was given the task of modifying the &lt;a href="http://chow-down.appspot.com/" target="_blank"&gt;Chow Down&lt;/a&gt; sample application (originally written to demonstrate how to implement the &lt;a href="http://code.google.com/apis/friendconnect/" target="_blank"&gt;Google FriendConnect API&lt;/a&gt; on &lt;a href="http://code.google.com/appengine/" target="_blank"&gt;Google AppEngine&lt;/a&gt;) to include videos, pictures and search results in the restaurant detail pages. This task resulted in the creation of &lt;a href="http://chow-down-gdata.appspot.com/" target="_blank"&gt;Chow Down Gdata&lt;/a&gt; (&lt;a href="http://code.google.com/p/gdata-samples/source/browse/branches/chow-down-gdata/1.0/src/" target="_blank"&gt;full source code&lt;/a&gt;) which uses the &lt;a href="http://code.google.com/apis/youtube/2.0/developers_guide_protocol_audience.html" target="_blank"&gt;YouTube Data API&lt;/a&gt;, the &lt;a href="http://code.google.com/apis/picasaweb/overview.html" target="_blank"&gt;Picasa Web Albums API&lt;/a&gt; and the &lt;a href="http://code.google.com/apis/ajaxsearch/" target="_blank"&gt;AJAX Search APIs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_B8HA18T3qlI/See_GYMJK5I/AAAAAAAAABM/kqehVmvmhsI/s1600-h/chowndown_gdata.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 270px;" src="http://4.bp.blogspot.com/_B8HA18T3qlI/See_GYMJK5I/AAAAAAAAABM/kqehVmvmhsI/s320/chowndown_gdata.png" alt="" id="BLOGGER_PHOTO_ID_5325435200682404754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Since everything was written in Python, using our &lt;a href="http://code.google.com/apis/gdata/articles/python_client_lib.html" target="_blank"&gt;Python client library&lt;/a&gt; was a no brainer. The first step was to add the necessary files and import statements. The application follows a standard &lt;a href="http://en.wikipedia.org/wiki/Model-view-controller" target="_blank"&gt;MVC&lt;/a&gt; layout, so the next step was to create a new view called &lt;code&gt;JsonRestaurantInfoView&lt;/code&gt; in &lt;a href="http://code.google.com/p/gdata-samples/source/browse/branches/chow-down-gdata/1.0/src/views.py" target="_blank"&gt;&lt;code&gt;views.py&lt;/code&gt;&lt;/a&gt;, which I then connected both to the &lt;a href="http://code.google.com/p/gdata-samples/source/browse/branches/chow-down-gdata/1.0/src/templates/ajax_restaurant_info.html" target="_blank"&gt;&lt;code&gt;ajax_restaurant_info.html&lt;/code&gt;&lt;/a&gt;template and also to the &lt;code&gt;restaurants_info&lt;/code&gt; method in &lt;a href="http://code.google.com/p/gdata-samples/source/browse/branches/chow-down-gdata/1.0/src/providers/restaurants.py" target="_blank"&gt;&lt;code&gt;providers/restaurants.py&lt;/code&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The bulk of the modifications happen inside &lt;code&gt;restaurants_info&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# Create client and query to execute a YouTube search:&lt;br /&gt;gdata_youtube_client = gdata.youtube.service.YouTubeService();&lt;br /&gt;query = gdata.youtube.service.YouTubeVideoQuery()&lt;br /&gt;query.vq = "%s %s" % (restaurant.name, restaurant.city)&lt;br /&gt;video_feed = gdata_youtube_client.YouTubeQuery(query)&lt;br /&gt;&lt;br /&gt;# Grab the URL to the embeddable Flash player SWF (if embeddable)&lt;br /&gt;swf_url = video_entry.GetSwfUrl()&lt;br /&gt;&lt;br /&gt;if swf_url:&lt;br /&gt; restaurant.player = """&amp;lt;object width="425" height="350"&amp;gt;&lt;br /&gt;        &amp;lt;param name="movie" value="%s"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        &amp;lt;embed src="%s" type="application/x-shockwave-flash"&lt;br /&gt;         width="425" height="350"&amp;gt;&amp;lt;/embed&amp;gt;&amp;lt;/object&amp;gt;""" %&lt;br /&gt;         (swf_url, swf_url)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;But wait! We are not done yet. Let's also look for pictures for this restaurant in Picasa:&lt;br /&gt;&lt;pre&gt;gdata_picasawebalbums_client = gdata.photos.service.PhotosService()&lt;br /&gt;query_parameters = map(urllib.quote, [restaurant.name, restaurant.city]);&lt;br /&gt;&lt;br /&gt;# Fetch a feed of 10 thumbnails, 32x32 pixels in size and cropped to a square&lt;br /&gt;photo_feed = gdata_picasawebalbums_client.GetFeed(&lt;br /&gt; "/data/feed/api/all?q=%s%%20%s&amp;amp;max-results=10&amp;amp;thumbsize=32c" %&lt;br /&gt; (query_parameters[0], query_parameters[1]))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We store all the new metadata in the restaurant object that ends up being passed to the template. To direct users there from the search page, I added a simple &lt;a href="http://code.google.com/p/gdata-samples/source/browse/branches/chow-down-gdata/1.0/src/templates/index.html#49" target="_blank"&gt;&lt;code&gt;show_restaurant_info&lt;/code&gt;&lt;/a&gt; function which is triggered when a user clicks on the restaurant title in the search listing. While I was in the templates/index.html file, I also added the &lt;a href="http://code.google.com/p/gdata-samples/source/browse/branches/chow-down-gdata/1.0/src/templates/index.html#63" target="_blank"&gt;&lt;code&gt;ajax_api_restaurant_info&lt;/code&gt;&lt;/a&gt; function which fetches blog, web, news and book search information about the restaurant.&lt;br /&gt;&lt;br /&gt;Check out the &lt;a href="http://code.google.com/p/gdata-samples/source/browse/branches/chow-down-gdata/#chow-down-gdata/1.0" target="_blank"&gt;full source code&lt;/a&gt; to get the full picture including information about how this data was also cached.&lt;br /&gt;&lt;br /&gt;In the next article, Jeff Fisher is going to talk about how to optimize the performance for this application by using JavaScript.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-6672572241533824787?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/ED_WR_efjl0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/6672572241533824787?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/6672572241533824787?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/ED_WR_efjl0/modifying-chow-down-application-part-1.html" title="Modifying the Chow-Down Application, part 1: Adding media from YouTube and Picasa" /><author><name>Jochen Hartmann</name><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_B8HA18T3qlI/See_GYMJK5I/AAAAAAAAABM/kqehVmvmhsI/s72-c/chowndown_gdata.png" height="72" width="72" /><feedburner:origLink>http://apiblog.youtube.com/2009/04/modifying-chow-down-application-part-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4ASXg4fCp7ImA9WxVaEU8.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-998054480324807047</id><published>2009-04-07T10:51:00.000-07:00</published><updated>2009-04-07T10:55:48.634-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-07T10:55:48.634-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="announcements" /><title>Latest Release Notes: Playlist Search, Time, and More</title><content type="html">Enjoy a few new tidbits in the latest release.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Search for playlists&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Yup, the same way you can &lt;a href="http://code.google.com/apis/youtube/2.0/reference.html#Videos_feed" id="nvd-" title="search for videos"&gt;search for videos&lt;/a&gt; and &lt;a href="http://code.google.com/apis/youtube/2.0/developers_guide_protocol_channel_search.html" id="miqf" title="channels"&gt;channels&lt;/a&gt; , you can now use the API to &lt;a title="search for playlists" href="http://code.google.com/apis/youtube/2.0/developers_guide_protocol.html#Searching_for_Playlists" id="qye1"&gt;search for playlists&lt;/a&gt;:&lt;br /&gt;&lt;pre style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;a title="http://gdata.youtube.com/feeds/api/playlists/snippets?q=soccer&amp;amp;v=2" href="http://gdata.youtube.com/feeds/api/playlists/snippets?q=soccer&amp;amp;v=2" id="dscz"&gt;http://gdata.youtube.com/feeds/api/playlists/snippets?q=soccer&amp;amp;v=2&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt; The query above will return a list of playlist snippets that match the query 'soccer'. Searching in playlists is an excellent way to find YouTube videos about a specific point of interest (e.g. dancing, cooking, sports etc.).&lt;br /&gt;&lt;h4&gt;Time filtering for video search&lt;br /&gt;&lt;/h4&gt;You can now restrict the video search result to a specific time interval (today, this_week,  this_month, all_time):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;a title="http://gdata.youtube.com/feeds/api/videos?q=soccer&amp;amp;time=today&amp;amp;v=2" href="http://gdata.youtube.com/feeds/api/videos?q=soccer&amp;amp;time=today&amp;amp;v=2" id="zvqc"&gt;http://gdata.youtube.com/feeds/api/videos?q=soccer&amp;amp;time=today&amp;amp;v=2&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The default is 'all_time'.&lt;br /&gt;&lt;h4&gt;More results&lt;/h4&gt;You can now request past the 100th video in a playlist and past the 200th video in a favorite list. Additionally, you can now get 1000 videos in a search feed instead of 999! Enjoy that last video, guys.&lt;br /&gt;&lt;br /&gt;As always, &lt;a title="post in the forum" href="http://groups.google.com/group/youtube-api-gdata" id="bn9g"&gt;post in the forum&lt;/a&gt;  if you have any feedback or questions!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Posted by Daniel Danciu, Software Engineer&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-998054480324807047?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/E2JDwgN1TCk" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/998054480324807047?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/998054480324807047?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/E2JDwgN1TCk/latest-release-notes-playlist-search.html" title="Latest Release Notes: Playlist Search, Time, and More" /><author><name>Stephanie Liu</name><uri>http://www.blogger.com/profile/08457117592361473057</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06938078375332321706" /></author><feedburner:origLink>http://apiblog.youtube.com/2009/04/latest-release-notes-playlist-search.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYGSXo5fip7ImA9WxVUE0w.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-2459565196499145564</id><published>2009-03-17T11:29:00.000-07:00</published><updated>2009-03-17T12:12:08.426-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-17T12:12:08.426-07:00</app:edited><title>Recent activity: apitestjhartmann has written a tutorial</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_B8HA18T3qlI/Sb_s-MCjJvI/AAAAAAAAAAk/-deBQtnwah0/s1600-h/activityApp3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 289px;" src="http://1.bp.blogspot.com/_B8HA18T3qlI/Sb_s-MCjJvI/AAAAAAAAAAk/-deBQtnwah0/s320/activityApp3.png" alt="" id="BLOGGER_PHOTO_ID_5314226638448436978" border="0" /&gt;&lt;/a&gt;As you may have heard, &lt;a href="http://apiblog.youtube.com/2009/02/youtube-api-outgrows-shy-adolescence.html" target="_blank"&gt;YouTube has been getting more social lately&lt;/a&gt;. Our activity feeds help your users stay up-to-date on the cool channels and videos that their friends (or anyone else, for that matter) have been uploading, subscribing to, adding as favorites and so forth.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But we don't just care about YouTube users. We also care about developers. And we want you to have time to be more social, too.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With that in mind, Jeff Fisher and I wrote a &lt;a href="http://code.google.com/apis/youtube/articles/youtube_api_activity_php.html" target="_blank"&gt;hands-on tutorial&lt;/a&gt; that explains how to build the &lt;a href="http://www.googlecodesamples.com/youtube/php/YouTubeActivityViewer/" target="_blank"&gt;YouTubeActivityViewer&lt;/a&gt;, a PHP application that uses the new activity feeds. The application uses our &lt;a href="http://code.google.com/apis/youtube/developers_guide_php.html" target="_blank"&gt;PHP client library&lt;/a&gt; with &lt;a href="http://jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt;. If you're still not ready to rush out and socialize, you can also build in a caching system with &lt;a href="http://www.danga.com/memcached/" target="_blank"&gt;memcache&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-2459565196499145564?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/XU4WN-s68Mo" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/2459565196499145564?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/2459565196499145564?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/XU4WN-s68Mo/recent-activity-apitestjhartmann-has.html" title="Recent activity: apitestjhartmann has written a tutorial" /><author><name>Jochen Hartmann</name><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_B8HA18T3qlI/Sb_s-MCjJvI/AAAAAAAAAAk/-deBQtnwah0/s72-c/activityApp3.png" height="72" width="72" /><feedburner:origLink>http://apiblog.youtube.com/2009/03/recent-activity-apitestjhartmann-has.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMBRH44cCp7ImA9WxVVEkU.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-7162165252735754783</id><published>2009-03-05T11:58:00.000-08:00</published><updated>2009-03-05T12:04:15.038-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-05T12:04:15.038-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="samples" /><category scheme="http://www.blogger.com/atom/ns#" term="announcements" /><category scheme="http://www.blogger.com/atom/ns#" term="releases" /><category scheme="http://www.blogger.com/atom/ns#" term="dotnet" /><title>Latest .NET SDK Released! LINQ &amp; New Social Notifier Sample</title><content type="html">&lt;div&gt;  &lt;i&gt;Posted by Frank Mantek, Google Data APIs Team&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;  The new .NET SDK is released and available for download here:&lt;br /&gt;&lt;br /&gt; &lt;a href="http://code.google.com/p/google-gdata/downloads/list" target="_blank"&gt;http://code.google.com/p/&lt;wbr&gt;google-gdata/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There's now updated support for YouTube V2 and a new vertical object model that allows you to use local LINQ queries. Please go through the &lt;a title="Google.YouTube" href="http://google-gdata.googlecode.com/svn/docs/folder55/N_Google_YouTube.htm" id="zusz"&gt;Google.YouTube&lt;/a&gt;  namespaces and see what's new there. We have some documentation for it here:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://google-gdata.googlecode.com/svn/trunk/clients/cs/docs/AdditionalContent/YouTubeLinqExamples.html" target="_blank"&gt;http://google-gdata.&lt;wbr&gt;googlecode.com/svn/trunk/&lt;wbr&gt;clients/cs/docs/&lt;wbr&gt;AdditionalContent/&lt;wbr&gt;YouTubeLinqExamples.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Last, but not least, there is the &lt;a href="http://code.google.com/p/google-gdata/source/browse/#svn/trunk/clients/cs/samples/YouTubeNotifier"&gt;Notifier for YouTube&lt;/a&gt; sample application, which showcases the &lt;a href="http://apiblog.youtube.com/2009/02/youtube-api-outgrows-shy-adolescence.html"&gt;activity feeds&lt;/a&gt; YouTube is exposing. You can subscribe to events from your friends and other YouTube users and get notified whenever they leave their marks in the YouTube universe. The &lt;a title="sample" href="http://google-gdata.googlecode.com/files/nfyt.exe" id="b64:"&gt;sample&lt;/a&gt;  is also available as a separate download.&lt;br /&gt;&lt;br /&gt;The complete release notes can be found here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://google-gdata.googlecode.com/svn/docs/RELEASE_NOTES.HTML" target="_blank"&gt;http://google-gdata.&lt;wbr&gt;googlecode.com/svn/docs/&lt;wbr&gt;RELEASE_NOTES.HTML&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;which also lists all the bugs that were fixed in this release. Report new ones here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/google-gdata/issues/list" target="_blank"&gt;http://code.google.com/p/&lt;wbr&gt;google-gdata/issues/list&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-7162165252735754783?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/pEtGNuM3inw" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/7162165252735754783?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/7162165252735754783?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/pEtGNuM3inw/latest-net-sdk-released-linq-new-social.html" title="Latest .NET SDK Released! LINQ &amp; New Social Notifier Sample" /><author><name>Stephanie Liu</name><uri>http://www.blogger.com/profile/08457117592361473057</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06938078375332321706" /></author><feedburner:origLink>http://apiblog.youtube.com/2009/03/latest-net-sdk-released-linq-new-social.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQMSHo_cCp7ImA9WxVVEE4.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-6545573234468869982</id><published>2009-03-02T13:58:00.000-08:00</published><updated>2009-03-02T14:19:49.448-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-02T14:19:49.448-08:00</app:edited><title>PHP Client Library: Uploading videos now 99% more efficient !</title><content type="html">&lt;span style="font-style: italic;"&gt;Posted by Jochen Hartmann, YouTube APIs and Tools Team&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_B8HA18T3qlI/SaxaQm_coMI/AAAAAAAAAAc/lV-8vq5q_LM/s1600-h/99percent_final.jpg"&gt;&lt;img style="display:block; margin:0px; cursor:pointer; cursor:hand;width: 200px; height: 200px; border: none;" src="http://1.bp.blogspot.com/_B8HA18T3qlI/SaxaQm_coMI/AAAAAAAAAAc/lV-8vq5q_LM/s200/99percent_final.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5308717302154043586" /&gt;&lt;/a&gt;&lt;br /&gt;If you are using the &lt;a href="http://framework.zend.com/download/gdata"&gt;PHP Client Library&lt;/a&gt; to upload your videos to YouTube.com you may have had to deal with memory issues, such as the common &lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;Fatal error: Allowed memory size of ... bytes exhausted&lt;/span&gt; error message.&lt;br /&gt;&lt;br /&gt;I am happy to announce that &lt;a href="http://framework.zend.com/download/latest"&gt;as of version 1.7.6 of the client library&lt;/a&gt;, this should no longer be a problem. Jeff Fisher and I have added support for streaming large video files to our API in manageable 1 MB chunks. The change is completely transparent, so you won't need to do anything besides upgrade your copy of the client library.&lt;br /&gt;&lt;br /&gt;Prior to this change, our client library used to rely solely on the &lt;a href="http://framework.zend.com/apidoc/core/Zend_Http/Client/Zend_Http_Client.html"&gt;Zend_Http_Client&lt;/a&gt; object to handle HTTP communication between servers. The client makes requests by reading the entire body of your &lt;a href="http://en.wikipedia.org/wiki/Http"&gt;HTTP POST&lt;/a&gt; message into a string, which then gets sent to our API server. This behavior is perfectly acceptable for normal use since most of the time we are just sending XML strings or small media files such as images, but doesn't work quite so well for uploading 1 GB video files.&lt;br /&gt;&lt;br /&gt;To address this problem, I designed a &lt;a href="http://framework.zend.com/apidoc/core/Zend_Gdata/Gdata/Zend_Gdata_MediaMimeStream.html"&gt;Zend_Gdata_MediaMimeStream&lt;/a&gt; object which only stores a handle to the video file being uploaded. Jeff built a &lt;a href="http://framework.zend.com/apidoc/core/Zend_Gdata/Gdata/Zend_Gdata_HttpAdapterStreamingSocket.html"&gt;Zend_Gdata_HttpAdapterStreamingSocket&lt;/a&gt; which then reads from the media stream in 1 MB chunks and sends to the socket until the entire message is read. We have tested this code extensively and are always open to feedback on how to improve performance issues in our client library, so &lt;a href="http://framework.zend.com/code/changelog/Zend_Framework/?cs=14172"&gt;check out the source code&lt;/a&gt; if you are interested.&lt;br /&gt;&lt;br /&gt;While I have your attention, let me also share another trick for those obsessed with efficiency: If you are only interested in working with the raw XML instead of the complete Zend_Gdata object model, you can &lt;a href="http://framework.zend.com/apidoc/core/Zend_Gdata/App/Zend_Gdata_App.html#useObjectMapping"&gt;flip a minor switch&lt;/a&gt; that is available in all of our service classes (Zend_Gdata_YouTube, Zend_Gdata_Docs, etc.):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$yt = new Zend_Gdata_YouTube();&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;$yt-&gt;useObjectMapping(false);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;$xmlString = $yt-&gt;getRecentlyFeaturedVideoFeed();&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;echo gettype($xmlString); # will return 'string'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see in the snippet above, the &lt;span style="font-family:courier new;"&gt;$xmlString&lt;/span&gt; variable is now just a regular string instead of a &lt;a href="http://framework.zend.com/apidoc/core/Zend_Gdata/YouTube/Zend_Gdata_YouTube_VideoFeed.html"&gt;Zend_Gdata_VideoFeed&lt;/a&gt; object. My testing shows that this can make fetching video feeds from YouTube faster by up to 35 times. Of course you would need to add a little bit of time parsing the XML with the tool of your choice (&lt;a href="http://us2.php.net/manual/en/function.xpath-eval-expression.php"&gt;XPath&lt;/a&gt;, etc.). I should also add that those interested in parsing XML without the aid of the client library may want to check out the &lt;a href="http://code.google.com/intl/en/apis/youtube/compatibility_guidelines.html"&gt;Backward Compatibility Guidelines&lt;/a&gt; for the YouTube Data API.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-6545573234468869982?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/07-zesr3oII" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/6545573234468869982?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/6545573234468869982?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/07-zesr3oII/php-client-library-uploading-videos-now.html" title="PHP Client Library: Uploading videos now 99% more efficient !" /><author><name>Jochen Hartmann</name><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_B8HA18T3qlI/SaxaQm_coMI/AAAAAAAAAAc/lV-8vq5q_LM/s72-c/99percent_final.jpg" height="72" width="72" /><feedburner:origLink>http://apiblog.youtube.com/2009/03/php-client-library-uploading-videos-now.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4HQnw5fyp7ImA9WxVWFU8.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-884493722896102129</id><published>2009-02-24T16:00:00.000-08:00</published><updated>2009-02-24T16:15:33.227-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-24T16:15:33.227-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="announcements" /><title>YouTube API Outgrows Shy Adolescence, Now Social</title><content type="html">&lt;i&gt;Posted by Stephanie Liu, YouTube APIs and Tools Team&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6NxOo7yjlR4/SaSLPiFNyoI/AAAAAAAAADQ/BnLszchp7-Q/s1600-h/Picture+3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 122px; height: 200px; border: none;" src="http://2.bp.blogspot.com/_6NxOo7yjlR4/SaSLPiFNyoI/AAAAAAAAADQ/BnLszchp7-Q/s200/Picture+3.png" alt="" id="BLOGGER_PHOTO_ID_5306519359912266370" border="0" /&gt;&lt;/a&gt;YouTube has been &lt;a href="http://www.youtube.com/blog?entry=Vp8bYKTy35U" id="d-6x" title="getting more social"&gt;getting more social&lt;/a&gt; lately, using activity feeds to make it easier to find cool videos and channels that your YouTube friends are favoriting, rating, subscribing to, etc. But what if all your friends aren't on YouTube, but rather on social network / site XYZ?&lt;br /&gt;&lt;br /&gt;Well, my friends, the API has come out of its awkward teenage years, and now has more sophisticated social skills to help. Activities like favoriting, uploading, commenting, and more can now be integrated into the social context of your choice. Check out the &lt;a href="http://code.google.com/apis/youtube/2.0/developers_guide_protocol.html#Activity_feeds" id="p-0m" title="docs"&gt;docs&lt;/a&gt; for the new user activity feed and friend activity feed.&lt;br /&gt;&lt;br /&gt;Before you ask, the user activity feed is &lt;a href="http://www.youtube.com/account#privacy/activity" id="gagq" title="fully customizable"&gt;fully customizable&lt;/a&gt; by the user, and the corresponding feed through the API respects all privacy settings. So users still have full control over what they make available in their recent activity feed.&lt;br /&gt;&lt;br /&gt;We think some cool apps can be made with these feeds -- like the obvious social network / feed aggregator integrations, to notification apps, to novel data views. We can't wait to see what you guys make!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.googlecodesamples.com/youtube/php/YouTubeActivityViewer"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 160px; height: 200px; border: none;" src="http://1.bp.blogspot.com/_6NxOo7yjlR4/SaSM_Fn-ubI/AAAAAAAAADg/8pt2nI4OGUE/s200/phpsamplethumb.jpg" alt="" id="BLOGGER_PHOTO_ID_5306521276418800050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Get started by perusing the docs and playing with the sample. Besides the &lt;a href="http://code.google.com/apis/youtube/2.0/developers_guide_protocol.html#Activity_feeds" id="ly3q" title="protocol guide"&gt;protocol guide&lt;/a&gt;, we've also updated the &lt;a href="http://code.google.com/apis/youtube/2.0/developers_guide_java.html#Activity_feeds" id="q1sy" title="Java"&gt;Java&lt;/a&gt; and &lt;a href="http://code.google.com/apis/youtube/2.0/developers_guide_php.html#Activity_feeds" id="g7xl" title="PHP"&gt;PHP&lt;/a&gt; guides with helpful snippets. An &lt;a href="http://www.googlecodesamples.com/youtube/php/YouTubeActivityViewer/" id="b80y" title="activity viewer sample"&gt;activity viewer sample&lt;/a&gt; written in PHP and its &lt;a href="http://code.google.com/p/gdata-samples/source/browse/#svn/branches/ytaviewer/1.0" id="jrmd" title="source"&gt;source code&lt;/a&gt; is also available for you to play with.&lt;br /&gt;&lt;br /&gt;As always, let us know if you have any questions or feedback in the &lt;a href="http://groups.google.com/group/youtube-api-gdata" id="peh7" title="forum"&gt;forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;PS. If you want to socialize with the team in person, come to &lt;a href="http://code.google.com/io" id="cfi1" title="Google I/O"&gt;Google I/O&lt;/a&gt;, where we'll be giving a &lt;a href="http://code.google.com/events/io/sessions.html" id="lxdt" title="session"&gt;session&lt;/a&gt; on "Going social with the YouTube APIs"!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-884493722896102129?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/OudJKbyermI" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/884493722896102129?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/884493722896102129?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/OudJKbyermI/youtube-api-outgrows-shy-adolescence.html" title="YouTube API Outgrows Shy Adolescence, Now Social" /><author><name>Stephanie Liu</name><uri>http://www.blogger.com/profile/08457117592361473057</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06938078375332321706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_6NxOo7yjlR4/SaSLPiFNyoI/AAAAAAAAADQ/BnLszchp7-Q/s72-c/Picture+3.png" height="72" width="72" /><feedburner:origLink>http://apiblog.youtube.com/2009/02/youtube-api-outgrows-shy-adolescence.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ECRHs4eCp7ImA9WxVXE0Q.&quot;"><id>tag:blogger.com,1999:blog-2443724041307041823.post-8258805918233807315</id><published>2009-02-11T16:34:00.000-08:00</published><updated>2009-02-11T16:47:45.530-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-11T16:47:45.530-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="as3" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorials" /><category scheme="http://www.blogger.com/atom/ns#" term="announcements" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="devs" /><title>TubeLoc: An AS3 Player Wrapper Using LocalConnection</title><content type="html">&lt;em&gt;Posted by Jeff Fisher, YouTube APIs and Tools Team&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;We know developers really like AS3, but sometimes they have difficulty getting our players to work correctly. To make this process easier for the Flashy/Flexy crowd, the awesome Ben Longoria has given us &lt;a href="http://code.google.com/p/tubeloc/"&gt;TubeLoc&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3bO2g9UbC5k/SZNxMmaRnOI/AAAAAAAAABg/c9XZUfVT5Aw/s1600-h/chromeless_screenshot.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 198px;" src="http://1.bp.blogspot.com/_3bO2g9UbC5k/SZNxMmaRnOI/AAAAAAAAABg/c9XZUfVT5Aw/s320/chromeless_screenshot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5301705647628328162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TubeLoc is an AS3 wrapper around the Player API that uses LocalConnection to communicate to the AS2 YouTube SWFs. It takes this a step further by also providing Flex components to make inserting a YouTube video and controls easy.&lt;br /&gt;&lt;br /&gt;Ready to get started? First &lt;a href="http://code.google.com/apis/youtube/articles/tubeloc.html"&gt;read the article&lt;/a&gt; that goes in depth on how to use TubeLoc. Next, visit the &lt;a href="http://code.google.com/p/tubeloc/"&gt;project page&lt;/a&gt; to download the code and play with the live demos. Finally, tell us what you think &lt;a href="http://groups.google.com/group/youtube-api-gdata"&gt;on the forum&lt;/a&gt;. Thanks Ben!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2443724041307041823-8258805918233807315?l=apiblog.youtube.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/YoutubeApiBlog/~4/xcachFnrxbc" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/8258805918233807315?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2443724041307041823/posts/default/8258805918233807315?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/YoutubeApiBlog/~3/xcachFnrxbc/tubeloc-as3-player-wrapper-using.html" title="TubeLoc: An AS3 Player Wrapper Using LocalConnection" /><author><name>Jeff Fisher</name><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_3bO2g9UbC5k/SZNxMmaRnOI/AAAAAAAAABg/c9XZUfVT5Aw/s72-c/chromeless_screenshot.png" height="72" width="72" /><feedburner:origLink>http://apiblog.youtube.com/2009/02/tubeloc-as3-player-wrapper-using.html</feedburner:origLink></entry></feed>
