Download Channel 9 Series

It’s learning season again, and I’m gearing up for lots of Azure this year. Between Build, Ignite, the Microsoft Virtual Academy and the endless stream of content on Channel 9, it’s easy to feel overwhelmed!

Since bandwidth is a precious commodity, and that I don’t always have the luxury of having an access point, I decided to re-purpose the script I used to download the Build and Ignite sessions. This new script has only one reason to be; it exists to download Series from Channel 9 so that I can watch them on the go.

Going through the list of Series, I was amazed by the amount of new content. I found MVA sessions and a bunch of other interesting topics related to Azure.

Feel free to use the comments section at the bottom of this post to suggest feeds that I should pay attention to.

The Script

To execute this script, I used Windows Powershell ISE and I manually download the Series that interest me. Browse through the series that I identified for myself. Who knows, you may find something of interest.

   1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
 function Get-Media{    [CmdletBinding()]    param    (        [Object]        $url,        [Object]        $title,        [Object]        $path    )     $u = New-Object System.Uri($url)    $name = $title    $extension = [System.IO.Path]::GetExtension($u.Segments[-1])    $fileName = $name + $extension     $fileName = $fileName -replace "’", ''    $fileName = $fileName -replace "\?", ''    $fileName = $fileName -replace ":", ''    $fileName = $fileName -replace '/', ''    $fileName = $fileName -replace ",", ''    $fileName = $fileName -replace '"', ''     $fileName     if (Test-Path($fileName)) {        Write-Host 'Skipping file, already downloaded' -ForegroundColor Yellow    }    else    {        Invoke-WebRequest $url -OutFile (Join-Path -Path $path -ChildPath $fileName)    }} function Get-VideosFromFeed{    [CmdletBinding()]    param    (        [Object]        $feedUrl,        [Object]        $folder,        [Object]        $path    )     $feed=[xml](New-Object System.Net.WebClient).DownloadString($feedUrl)     $downloadPath = (Join-Path -Path $path -ChildPath $folder)     if (Test-Path($downloadPath)) {        Write-Host 'Skipping folder, already exists' -ForegroundColor Yellow    }    else    {        New-Item -Path $downloadPath -ItemType directory -WarningAction SilentlyContinue    }     foreach($i in $feed.rss.channel.item) {        foreach($m in $i.group){            foreach($u in $m.content `                    | Where-Object { `                            $_.url -like '*mid.mp4' `                         } | Select-Object -Property @{Name='url'; Expression = {$_.url}}, `                                                     @{Name='title'; Expression = {$i.title}})            {                Get-Media -url $u.url -title $u.title -path $downloadPath            }        }    }} $physicalPath = "V:\Videos\Series" # Microsoft Datacenter vNext Preview: Bringing Azure to Your DatacenterGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Microsoft-Datacenter-vNext-Preview-Bringing-Azure-to-Your-Datacenter/RSS' -path $physicalPath -folder 'Data Center Preview' # Microsoft Azure Fundamentals: Virtual MachinesGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Microsoft-Azure-Fundamentals-Virtual-Machines/RSS' -path $physicalPath -folder 'Microsoft Azure Fundamentals Virtual Machines' # Adding Microsoft Azure Search to Your Websites and AppsGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Adding-Microsoft-Azure-Search-to-Your-Websites-and-Apps/RSS' -path $physicalPath -folder 'Working with Azure Search' # Docker for .NET DevelopersGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Docker-for-NET-Developers/RSS' -path $physicalPath -folder 'Docker for NET Devs' # Storage Spaces Deep DiveGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Storage-Spaces-Deep-Dive/RSS' -path $physicalPath -folder 'Storage Spaces Deep Dive' # Cloud DevCampGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Cloud-DevCamp/RSS' -path $physicalPath -folder 'Cloud DevCamp' # Microsoft Azure Back End for GamingGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Microsoft-Azure-Back-End-for-Gaming/RSS' -path $physicalPath -folder 'Microsoft Azure Back End for Gaming' # Azure App ServiceGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Windows-Azure-Web-Sites-Tutorials/RSS' -path $physicalPath -folder 'Azure App Service' # Developing Solutions with Azure DocumentDBGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Developing-Solutions-with-Azure-DocumentDB/RSS' -path $physicalPath -folder 'Developing Solutions with Azure DocumentDB' # Big Data Analytics with HDInsightGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Big-Data-Analytics-with-HDInsight/RSS' -path $physicalPath -folder 'Big Data Analytics with HDInsight' # Microsoft Hybrid Cloud Best Practices for IT ProsGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Microsoft-Hybrid-Cloud-Best-Practices-for-IT-Pros/RSS' -path $physicalPath -folder 'Microsoft Hybrid Cloud Best Practices for IT Pros' # Java on Microsoft AzureGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Java-on-Microsoft-Azure/RSS' -path $physicalPath -folder 'Java on Microsoft Azure' # Azure Active Directory Core SkillsGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Azure-Active-Directory-Core-Skills/RSS' -path $physicalPath -folder 'Azure Active Directory Core Skills' # Managing Linux Workloads in Windows Server and System CenterGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Managing-Linux-Workloads-in-Windows-Server-and-System-Center/RSS' -path $physicalPath -folder 'Managing Linux Workloads in Windows Server and System Center' # All About Microsoft Azure Operational InsightsGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/All-About-Microsoft-Azure-Operational-Insights/RSS' -path $physicalPath -folder 'All About Microsoft Azure Operational Insights' # You ve Got Key Values! A Redis Jump StartGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Youve-Got-Key-Values-A-Redis-Jump-Start/RSS' -path $physicalPath -folder 'You ve Got Key Values! A Redis Jump Start' # Azure Solution TrainingGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Azure-Solutions-Training/RSS' -path $physicalPath -folder 'Azure Solution Training' # Advanced PowerShell Desired State Configuration (DSC) and Custom ResourcesGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Advanced-PowerShell-Desired-State-Configuration-DSC-and-Custom-Resources/RSS' -path $physicalPath -folder 'Advanced PowerShell Desired State Configuration (DSC) and Custom Resources' # Getting Started with PowerShell Desired State Configuration (DSC)Get-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Getting-Started-with-PowerShell-Desired-State-Configuration-DSC/RSS' -path $physicalPath -folder 'Getting Started with PowerShell Desired State Configuration (DSC)' # Polyglot Persistence: Choosing the Right Azure Storage MixGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Polyglot-Persistence-Choosing-the-Right-Azure-Storage-Mix/RSS' -path $physicalPath -folder 'Polyglot Persistence Choosing the Right Azure Storage Mix' # Getting Started with Microsoft Azure Active DirectoryGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Getting-Started-with-Microsoft-Azure-Active-Directory/RSS' -path $physicalPath -folder 'Getting Started with Microsoft Azure Active Directory' # MEAN Stack Jump StartGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/MEAN-Stack-Jump-Start/RSS' -path $physicalPath -folder 'MEAN Stack Jump Start' # Managing Your Systems on Microsoft Azure with ChefGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Managing-Your-Systems-on-Microsoft-Azure-with-Chef/RSS' -path $physicalPath -folder 'Managing Your Systems on Microsoft Azure with Chef' # Connect(On Demand);Get-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/ConnectOn-Demand/RSS' -path $physicalPath -folder 'Connect(On Demand)' # Partner Profitability: Cloud Transformation SeriesGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Partner-Profitability-Cloud-Transformation-Series/RSS' -path $physicalPath -folder 'Partner Profitability Cloud Transformation Series' # Web API DesignGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Web-API-Design/RSS' -path $physicalPath -folder 'Web API Design' # Developing Microsoft SQL Server DatabasesGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Developing-Microsoft-SQL-Server-Databases/RSS' -path $physicalPath -folder 'Developing Microsoft SQL Server Databases' # Monitor Workloads with System Center Operations ManagerGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Monitor-Workloads-with-System-Center-Operations-Manager/RSS' -path $physicalPath -folder 'Monitor Workloads with System Center Operations Manager' # Azure HDInsight ServiceGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Getting-started-with-Windows-Azure-HDInsight-Service/RSS' -path $physicalPath -folder 'Azure HDInsight Service' # Automate Workloads with System Center OrchestratorGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Automate-Workloads-with-System-Center-Orchestrator/RSS' -path $physicalPath -folder 'Automate Workloads with System Center Orchestrator' # Open Source for DevOps PracticesGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Open-Source-for-DevOps-Practices/RSS' -path $physicalPath -folder 'Open Source for DevOps Practices' # Developing Microsoft Azure SolutionsGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Developing-Microsoft-Azure-Solutions/RSS' -path $physicalPath -folder 'Developing Microsoft Azure Solutions' # Architecting Microsoft Azure SolutionsGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Architecting-Microsoft-Azure-Solutions/RSS' -path $physicalPath -folder 'Architecting Microsoft Azure Solutions' # Getting Great Performance out of AzureGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Getting-Great-Performance-out-of-Azure/RSS' -path $physicalPath -folder 'Getting Great Performance out of Azure' # Azure Networking Fundamentals for IT ProsGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Azure-Networking-Fundamentals-for-IT-Pros/RSS' -path $physicalPath -folder 'Azure Networking Fundamentals for IT Pros' # PHP for AzureGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/PHP-for-Azure/RSS' -path $physicalPath -folder 'PHP for Azure' # You ve Got Documents! A MongoDB Jump StartGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Youve-Got-Documents-A-MongoDB-Jump-Start/RSS' -path $physicalPath -folder 'You ve Got Documents - A MongoDB Jump Start' # Designing Solutions for SQL ServerGet-VideosFromFeed -feedUrl 'https://channel9.msdn.com/Series/Designing-Solutions-for-SQL-Server/RSS' -path $physicalPath -folder 'Designing Solutions for SQL Server'