-
-
Save ciphertxt/9656900 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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