Scott Hanselman

Mix 11 Videos - Download them all with RSS

April 18, '11 Comments [19] Posted in ASP.NET | ASP.NET Ajax | ASP.NET Dynamic Data | ASP.NET MVC | Channel9 | HTML5 | IE9 | IIS | Mix | NuGet | Speaking | VS2010
Sponsored By

Such a fun time was had at Mix 11 this last week in Vegas. I only saw a few talks as I was busy presenting, but now as I sit at home on my first day back, I say to myself, Self, how can I get all the Mix videos at once?

First, you can watch all the videos online at http://channel9.msdn.com/Events/MIX/MIX11 

Second, you can get them via RSS. Most major browsers are hiding the RSS button these days, but the discovery metadata is all still there. In IE9, for example, if you show the Command Bar, you can see the RSS Feeds for the Mix site:

Hey, the Mix Site has RSS feeds in its Meta Tags!

What's all this awesomeness? Oh, yes, it's the Mix talks via RSS with enclosures, just as you've always wanted. Now you can list the thousand ways that you might retrieve these lovely files and abuse Microsoft's bandwidth while hoarding knowledge on your multi-terabyte personal SAN.

Direct links to the Mix RSS feeds that include Enclosures:

So now you can get them with iTunes or Zune, or PowerShell, 'cause that's bad-ass. Yes, you can use Curl also, nyah.

$feed=[xml](New-Object System.Net.WebClient).DownloadString("http://channel9.msdn.com/Events/MIX/MIX11/RSS")
foreach($i in $feed.rss.channel.item) {
$url = New-Object System.Uri($i.enclosure.url)
$url.ToString()
$url.Segments[-1]
(New-Object System.Net.WebClient).DownloadFile($url, $url.Segments[-1])
}

Or, you can subscribe in iTunes from Advanced|Subscribe to Podcast, assume, of course, you want iTunes in your life.

I hate iTunes with the heat of a thousand suns

Or, in Zune (which is a good Podcast Downloader even if you don't have a Zune) you can go to Collection|Podcasts and click Add A Podcast:

Zune's OK

Another nice, lightweight Podcast Download is the Open Source "Juice!" from http://juicereceiver.sourceforge.net/

Juice Podcast Downloader

Go get them! Here's the presentations that Web Platform and Tools Team (ASP.NET, IIS, etc) presented:

Enjoy!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web
Monday, April 18, 2011 7:09:32 PM UTC
why file names are too bad.
Monday, April 18, 2011 10:48:33 PM UTC
Most of the files are shown in the RSS as 1.0 bytes...
Monday, April 18, 2011 10:57:46 PM UTC
@Simond, yep... RSS spec doesn't allow you to skip the enclosure length field even if you don't have the size of the file available, and it is specified as a non-zero integer, so we have to put 1 when we don't have the file size.

When we encode videos directly for Channel 9, we store the size as we upload them, but in this case we do the upload from the event and then just get back a list of URLs without sizes. Seems better to get them online with a size of 1.0, than wait until we can write a script to update all the sizes.
Tuesday, April 19, 2011 1:12:21 AM UTC
At the moment, only 117 or the 126 items in those RSS feeds actually have enclosures. The PowerShell script above will error on the ones that don't.
Blake
Tuesday, April 19, 2011 1:28:37 AM UTC
To follow up on my gripe above, I'm using:

$wc = New-Object System.Net.WebClient
([xml]$wc.DownloadString("http://channel9.msdn.com/Events/MIX/MIX11/RSS/wmvhigh")).rss.channel.item |
? { $_.GetElementsByTagName("enclosure") } |
% { [uri] $_.enclosure.url } |
% { Write-Host $_; $wc.DownloadFile($_, $.Segments[-1]) }
Blake
Tuesday, April 19, 2011 1:59:41 AM UTC
scott.

when I paste the MP4 links into iTunes for windows using the advanced | subcribe to podcast, it only picks up the mixx 11 Day 2 keynotes for either resolution. when I right click and ask to get more episodes itunes doesnt seem to find any more of the good content. Does your instructions assume Mac?

version of itunes: 10.2.2.12.

link I used:
http://channel9.msdn.com/Events/MIX/MIX11/RSS/mp4

Really hoping to watch these as I can never get budget to travel to Vegas...
Tuesday, April 19, 2011 5:21:05 AM UTC
Given that it's mostly the boot camp sessions that are missing, I suspect this may be a feature rather than a bug. In case it is just an oversight, here are the sessions with missing videos. I know I'd like to see a number of them:
HTML5/CSS3 Boot Camp
Design, Content, Code: Start-to-Finish
Silverlight Boot Camp
Cloud Computing with the Windows Azure Platform
jQuery Boot Camp
HTML5 Canvas Mastery
Windows Phone 7 Boot Camp
Silverlight for SharePoint Boot Camp
Agile .NET Cloud-Deployment with Git
WomenInTech with LegoSeriousPlay
Blake
Tuesday, April 19, 2011 7:06:43 AM UTC
Ausnahme beim Aufrufen von "DownloadString" mit 1 Argument(en): "Der Remoteserver hat einen Fehler zurückgegeben: (407) Proxyauthentifizierung erforderlich."

=(
tkrause
Tuesday, April 19, 2011 9:28:15 AM UTC
Currently watching An Overview of MS Stack of Love on my Android phone.

Some owners of Android may find that their Android phone will not play the channel 9 WMV or MP4 videos. One reason may be, that even though the videos are mp4, they are encoded using the Microsoft VC1 encoding.

Some of you who purchased Expression Blend will have thought, that it will be easy to simply re-encode the mp4 file using H264 with Expression Encoder. Unfortunately this is not going to work. You will need Expression Encoder Pro version to do this.

Luckily, Samsung supplied a program with their mobile phone called Kies which will convert either the mp4 or the wmv files to an mp4 encoded version which does work on an android phone. You should be able to download this program for free on the Samsung website.

It would be useful for many developers, who have Android devices, if Channel 9 would encode the MP4 videos using H264. Unless, of course, they wish to simply inconvenience developers who purchase Android devices.
Tuesday, April 19, 2011 11:27:33 AM UTC
You have too many followers. The scripted downloading is too much for channel9. They seem to have stability problems. :-)
Michael
Tuesday, April 19, 2011 1:26:03 PM UTC
Thanks for the great link and reading my mind :). I was thinking about this the other day and how to get them on my PS3. This will help. I'll have to couple this with TVersity.
David
Tuesday, April 19, 2011 6:59:16 PM UTC
Thanks a lot Scott, this was very helpful.

Do you know if there is any rss feed for slides also?
Tuesday, April 19, 2011 9:53:39 PM UTC
The web pages on Channel 9 don't show all the version of videos, even if there is a video in the RSS for all the formats.
This is quite confusing. But downloading all MP4 from iTunes works like a charm.
Thx

Simone
Wednesday, April 20, 2011 6:33:30 AM UTC
That piece of script was really cool. However it would be nice to be able to restart the script without re-downloading everything, which is easily done by replacing line 4-6 with the following lines:

$file = $url.Segments[-1]
if (! (Test-Path $file))
{
$url.ToString()
(New-Object System.Net.WebClient).DownloadFile($url, $file)
}

I've put the complete sample-code on my blog.
Wednesday, April 20, 2011 4:57:54 PM UTC
I did some powershell fiddling and got the following script to download all sessions of a particular type - this handles several types of errors and allows restart. It also downloads with the actual session name as appropriate. I hope it helps someone :-)


function MIX11Download (
[parameter(Mandatory=$true)]
[string]
$TYPE
) {
$validtypes = "wmv","wmvhigh","mp4","mp4high","zune","mp3";
if ($validtypes -notcontains $TYPE) {
throw New-Object ArgumentException("Valid types to download are: " + ($validtypes -join " "));
}

$client = New-Object System.Net.WebClient;
[xml]$feed = $client.DownloadString("http://channel9.msdn.com/Events/MIX/MIX11/RSS/" + $TYPE);

$root = $home;
$root = [IO.Path]::Combine($home, 'Downloads');
$root = [IO.Path]::Combine($root, 'MIX11');
$root = [IO.Path]::Combine($root, $TYPE);
mkdir $root;

$feed.rss.channel.item | ?{$_.enclosure.url} | %{
$url = New-Object System.Uri($_.enclosure.url);

$name = $_.Title;
[IO.Path]::GetInvalidFileNameChars() | %{$name = $name.Replace($_, ' ')};

$newfile = [IO.Path]::Combine($root, $name + [IO.Path]::GetExtension($url.Segments[-1]));

if (-not [IO.File]::Exists($newfile)) {
"{0} => {1}" -f $url, $newfile
$client.DownloadFile($url, $newfile)
}
}
}
Friday, April 22, 2011 9:37:29 AM UTC
I'm using Free Download Manager, a couple of click and the game is done. Just open in explorer the rss link, right click -> download all with free download manager, filter only wmv extension, press download and the game is done. I did some screenshot on my blog.

Happy downloading.
Monday, April 25, 2011 12:34:26 PM UTC
Thanks, this is great. I am downloading almost all of it!
Tuesday, April 26, 2011 5:01:07 PM UTC
Hi Scott,

I'm trying to use juice to download the WMV and WMV high videos but I'm getting an error? Do you know if there is something with those feeds?

Thanks
Allan Ferreira
Thursday, July 21, 2011 4:49:38 PM UTC
Come on Scott, PodCasts are soooooo 2006, can't we just JQuery a mind-meld by now?
Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.