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:
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.
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.
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:
Another nice, lightweight Podcast Download is the Open Source "Juice!" from http://juicereceiver.sourceforge.net/
Go get them! Here's the presentations that Web Platform and Tools Team (ASP.NET, IIS, etc) presented:
Enjoy!
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.
$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]) }
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) } }}
Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.