Skip to content

Instantly share code, notes, and snippets.

@ciphertxt
Forked from nzthiago/download.ps1
Last active December 11, 2020 09:47
Show Gist options
  • Save ciphertxt/9656900 to your computer and use it in GitHub Desktop.
Save ciphertxt/9656900 to your computer and use it in GitHub Desktop.
# Originally published at https://gist.github.com/nzthiago/5736907
# 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 = ([xml]$rss.downloadstring("http://channel9.msdn.com/Events/SharePoint-Conference/2014/RSS/mp4high"))
$b = ([xml]$rss.downloadstring("http://channel9.msdn.com/Events/SharePoint-Conference/2014/RSS/slides"))
#other qualities for the videos only. Choose the one you want!
# $a = ([xml]$rss.downloadstring("http://channel9.msdn.com/Events/SharePoint-Conference/2014/RSS/mp4"))
#$a = ([xml]$rss.downloadstring("http://channel9.msdn.com/Events/SharePoint-Conference/2014/RSS/mp3"))
#Preferably enter something not too long to not have filename problems! cut and paste them afterwards
$downloadlocation = "C:\spc14"
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
$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
}
#text description from session . Thank you VaperWare
$OutFile = New-Item -type file "$($downloadlocation)\$($Folder)\$($Code.trim()).txt" -Force
$Category = "" ; $Content = ""
$_.category | foreach {$Category += $_ + ","}
$Content = $_.title.trim() + "`r`n" + $_.creator + "`r`n" + $_.summary.trim() + "`r`n" + "`r`n" + $Category.Substring(0,$Category.Length -1)
add-content $OutFile $Content
# 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 PPT file
$wc.DownloadFile($urlpptx, "$downloadlocation\$filepptx")
mv $filepptx $folder
}
else
{
# Let's make sure we actually got the whole thing...
$filepptx
$wc = (New-Object System.Net.WebClient)
# Test the size
$wc.OpenRead($urlpptx);
$bytestotal = [int64]$wc.ResponseHeaders["Content-Length"];
$filepptxref = Get-Item "$downloadlocation\$folder\$filepptx"
if ($bytestotal -ne $filepptx.Length)
{
Write-Host "That last one was no good! Let's try again!"
# Download the PPT file
Remove-Item "$downloadlocation\$folder\$filepptx" -Force
$wc.DownloadFile($urlpptx, "$downloadlocation\$filepptx")
mv $filepptx $folder
}
}
}
#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 "$downloadlocation\$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
}
else
{
# Let's make sure we actually got the whole thing...
$file
$wc = (New-Object System.Net.WebClient)
# Test the size
$wc.OpenRead($url);
$bytestotal = [int64]$wc.ResponseHeaders["Content-Length"];
$fileref = Get-Item "$downloadlocation\$folder\$file"
if ($bytestotal -ne $fileref.Length)
{
Write-Host "That last one was no good! Let's try again!"
# Download the PPT file
Remove-Item "$downloadlocation\$folder\$file" -Force
$wc.DownloadFile($url, "$downloadlocation\$file")
mv $file $folder
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment