-
-
Save recklessop/6e26d53ee8ea9717d2fdaede3b709e62 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
# Author Rajesh Sitaraman | |
# @rjesh | rjesh.com | |
<# | |
.SYNOPSIS | |
Download Ignite 2019 session presentation slides and videos. | |
.EXAMPLE | |
PS C:\> .\Get-IgniteContent.ps1 -DownloadPath /Users/rajeshsitaraman/src/public/share/IG-2019 -Keyword "AI" | |
.EXAMPLE | |
PS C:\> .\Get-IgniteContent.ps1 -DownloadPath /Users/rajeshsitaraman/src/public/share/IG-2019 -Keyword "Teams" -IncludeVideos | |
.EXAMPLE | |
Downloads all sessions -- Might take very long time | |
PS C:\> .\Get-IgniteContent.ps1 -DownloadPath /Users/rajeshsitaraman/src/public/share/IG-2019 | |
#> | |
[CmdletBinding()] | |
Param( | |
[Parameter(Mandatory = $true, Position = 1)] | |
[String]$DownloadPath, | |
[Parameter(Mandatory = $false, Position = 2)] | |
[String]$Keyword, | |
[Parameter(Mandatory = $false, Position = 3)] | |
[Switch]$IncludeVideos | |
) | |
$itemsPerPage = 100 | |
$page = 1 | |
$response = $null | |
If (-Not (Test-Path -Path $DownloadPath -PathType Container)) { | |
New-Item -Path $DownloadPath -ItemType directory | Out-Null | |
} | |
function Get-File { | |
param([Parameter(Mandatory=$true)][string] $FilePath, [Parameter(Mandatory=$true)][string] $URI) | |
If ($PSVersionTable.PSEdition -eq "Core") { | |
Invoke-WebRequest -Uri $URI -OutFile $FilePath | |
} | |
Else { | |
Start-BitsTransfer -Source $URI -Destination $FilePath | |
} | |
} | |
if (!$Keyword) { $searchText = "" } else { $searchText = $Keyword} | |
do { | |
$body = @{ | |
"itemsPerPage" = $itemsPerPage | |
"searchText" = $searchText | |
"searchPage" = $page | |
"sortOption" = "None" | |
"mustHaveOnDemandVideo" = $true | |
} | |
$params = @{ | |
Headers = @{"Content-type"="application/json"} | |
Body = $body | convertto-json | |
Method = "Post" | |
URI = "https://api-myignite.techcommunity.microsoft.com/api/session/search" | |
} | |
$response = Invoke-RestMethod @params | |
foreach ($item in $response.data) { | |
$name = $item.Title -replace '[\W]', ' ' | |
$name = $name.Substring(0,[System.Math]::Min(50, $name.Length)) | |
Write-Host "Downloading -- $($item.sessionCodeNormalized)" -ForegroundColor Green | |
# check to see if MP4 already exists if so skip re-downloading it | |
$outmp4 = "$DownloadPath/$($item.sessionCodeNormalized)-$name.mp4" | |
if (Test-Path $outmp4 -PathType Leaf) { | |
Write-Host "MP4 Already Exists" | |
}else { | |
Write-Host "Downloading MP4" | |
if ($item.downloadVideoLink -and $IncludeVideos) {Get-File -URI $item.downloadVideoLink-FilePath $outmp4} | |
} | |
# check to see if pptx already exists if so skip re-downloading it | |
$outpptx = "$DownloadPath/$($item.sessionCodeNormalized)-$name.pptx" | |
if (Test-Path $outpptx -PathType Leaf) { | |
Write-Host "PPTX Already Exists" | |
}else { | |
Write-Host "Downloading PPTX" | |
if ($item.slideDeck) {Get-File -URI $item.slideDeck -FilePath $outpptx} | |
} | |
} | |
$page +=1 | |
} until ($page -gt ($($response.total)/$itemsPerPage)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment