Wednesday, May 6, 2015

The Ultimate Script to download Microsoft Ignite Videos AND slides!

With the amount of great sessions at Ignite this year, there is no way you could have attended all, and even if they are posted on Channel9, you might want to download them to be able to view them offline! That is why I created this PowerShell Script so everyone can easily download them whether they were present at Ignite or not! Here are the features:

  • Downloads all the Microsoft Ignite 2015 Sessions and Slides (Note: Slides are not posted yet, but the script will download them as soon as they are)
  • Groups them by folders
  • Makes sure no errors come up due to Illegal File names.
  • If you stop the script and restart in the middle, it will start where it left off and not from beginning

*Total size of videos will be updated when conference finishes & all sessions will be posted online!

download Microsoft Ignite Videos and Content

In this blog you will see the source code of he script, however my WordPress plugin sometimes breaks some PowerShell, so DO NOT copy it from my blog,

Thanks to Jeff Collins for helping me out with the script during Ignite! Make sure you send it out to all your twitter friends by clicking the image below!

 

Download the script from here!  Do not copy paste from below!

Here is the source code:

# Originally published at http://ift.tt/1RdgMpS
# I Customized it for SPC14 with slides
# If you like it, leave me a comment
# If you don't like it, complain to Github. :)

[Environment]::CurrentDirectory=(Get-Location -PSProvider FileSystem).ProviderPath
$rss = (new-object net.webclient)

# Grab the RSS feed for the MP4 downloads

# SharePoint Conference 2014 Videos
$a = (1$rss.downloadstring("http://ift.tt/1KMcCB4;))
$b = (1$rss.downloadstring("http://ift.tt/1RdgMpY;)) 

#other qualities for the videos only. Choose the one you want!
# $a = (1$rss.downloadstring("http://ift.tt/1KMczVE;))
#$a = (1$rss.downloadstring("http://ift.tt/1RdgMq0;)) 

#Preferably enter something not too long to not have filename problems! cut and paste them afterwards
$downloadlocation = "C:\Ignite"

        if (-not (Test-Path $downloadlocation)) {
                Write-Host "Folder $fpath dosen't exist. Creating it..."
                New-Item $downloadlocation -type directory
        }
set-location $downloadlocation

#Download all the slides
try { 

$b.rss.channel.item | foreach{
        $code = $_.comments.split("/") | select -last 1          

        # Grab the URL for the PPTX file
        $urlpptx = New-Object System.Uri($_.enclosure.url)
    $filepptx = $code + "-" + $_.creator + " - " + $_.title.Replace(":", "-").Replace("?", "").Replace("/", "-").Replace("<", "").Replace("|", "").Replace('"',"").Replace("*","")
        $filepptx = $filepptx.substring(0, [System.Math]::Min(120, $filepptx.Length))
        $filepptx = $filepptx.trim()
        $filepptx = $filepptx + ".pptx"
        if ($code -ne "")
        {
                 $folder = $code + " - " + $_.title.Replace(":", "-").Replace("?", "").Replace("/", "-").Replace("<", "").Replace("|", "").Replace('"',"").Replace("*","")
                 $folder = $folder.substring(0, [System.Math]::Min(100, $folder.Length))
                 $folder = $folder.trim()
        }
        else
        {
                $folder = "NoCodeSessions"
        }

        if (-not (Test-Path $folder)) {
                Write-Host "Folder $folder dosen't exist. Creating it..."
                New-Item $folder -type directory
        }

        # Make sure the PowerPoint file doesn't already exist
        if (!(test-path "$downloadlocation\$folder\$filepptx"))
        {
                # Echo out the  file that's being downloaded
                $filepptx
                $wc = (New-Object System.Net.WebClient)  

                # Download the MP4 file
                $wc.DownloadFile($urlpptx, "$downloadlocation\$filepptx")
                mv $filepptx $folder 

        }
        }

}
catch
{
Write-host "Slides are not yet up. Run this script every day to get the latest updates"
}

#download all the mp4

# Walk through each item in the feed
$a.rss.channel.item | foreach{
        $code = $_.comments.split("/") | select -last 1          

        # Grab the URL for the MP4 file
        $url = New-Object System.Uri($_.enclosure.url)  

        # Create the local file name for the MP4 download
        $file = $code + "-" + $_.creator + "-" + $_.title.Replace(":", "-").Replace("?", "").Replace("/", "-").Replace("<", "").Replace("|", "").Replace('"',"").Replace("*","")
        $file = $file.substring(0, [System.Math]::Min(120, $file.Length))
        $file = $file.trim()
        $file = $file + ".mp4"  

        if ($code -ne "")
        {
                 $folder = $code + " - " + $_.title.Replace(":", "-").Replace("?", "").Replace("/", "-").Replace("<", "").Replace("|", "").Replace('"',"").Replace("*","")
                 $folder = $folder.substring(0, [System.Math]::Min(100, $folder.Length))
                 $folder = $folder.trim()
        }
        else
        {
                $folder = "NoCodeSessions"
        }

        if (-not (Test-Path $folder)) {
                Write-Host "Folder $folder) dosen't exist. Creating it..."
                New-Item $folder -type directory
        }

        # Make sure the MP4 file doesn't already exist

        if (!(test-path "$folder\$file"))
        {
                # Echo out the  file that's being downloaded
                $file
                $wc = (New-Object System.Net.WebClient)  

                # Download the MP4 file
                $wc.DownloadFile($url, "$downloadlocation\$file")
                mv $file $folder
        }

#text description from session
        $OutFile = New-Item -type file "$($downloadlocation)\$($Folder)\$($Code.trim()).txt" -Force
    $Category = "" ; $Content = ""
    $_.category | foreach {$Category += $_ + ","}
    $Content = $_.title.trim() + &quot;<code>r</code>n&quot; + $_.creator + &quot;<code>r</code>n&quot; + $_.summary.trim() + &quot;<code>r</code>n&quot; + &quot;<code>r</code>n&quot; + $Category.Substring(0,$Category.Length -1)
   add-content $OutFile $Content

        }

Leave a comment and don’t forget to like the Absolute SharePoint Blog Page  on Facebook and to follow me on Twitter here  for the latest news and technical articles on SharePoint.  Also, don’t forget to check out SharePoint Community.Net for more great SharePoint Content.

The post The Ultimate Script to download Microsoft Ignite Videos AND slides! appeared first on Absolute SharePoint Blog by Vlad Catrinescu.


by Vlad Catrinescu via Absolute SharePoint Blog by Vlad Catrinescu

No comments:

Post a Comment