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!
$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) } }}
Scott Hanselman's Productivity Tips Video
Scott at DevReach in Bulgaria in October
Developer Stand up Comedy - Coding 4 Fun
TechDays/DevDays Netherlands and Belgium:
Posts by Category Posts by Month
Greatest Hits Dev Tools List