Latest release: October 11th, 2017, version 2.65.

This script can download all the Microsoft Ignite slidedecks and videos that are
available from the Ignite portal. Video downloads will leverage a utility which can be downloaded
from https://yt-dl.org/latest/youtube-dl.exe, and needs to reside in the same folder
as the script. The script itself will try to download the utility when the utility is not present.

When you are interested in retrieving session information only, you can use the InfoOnly switch.

To prevent retrieving session information for every run, the script will cache session information

PARAMETERS

Possible values:
160          mp4        256x144    DASH video  108k , avc1.4d400b, 30fps, video only
133          mp4        426x240    DASH video  242k , avc1.4d400c, 30fps, video only
134          mp4        640x360    DASH video  305k , avc1.4d401e, 30fps, video only
135          mp4        854x480    DASH video 1155k , avc1.4d4014, 30fps, video only
136          mp4        1280x720   DASH video 2310k , avc1.4d4016, 30fps, video only
137          mp4        1920x1080  DASH video 2495k , avc1.640028, 30fps, video only
18           mp4        640x360    medium , avc1.42001E,  mp4a.40.2@ 96k
22           mp4        1280x720   hd720 , avc1.64001F,  mp4a.40.2@192k (best, default)

 

REVISION
1.0+2.0 MF

2.1 MR
Added video downloading
Reformatting code

2.11 MR
Fixed titles with apostrophes
added Keyword and TItle filtering options

2.12 MR
Replaced pptx download Invoke-WebRequest with .NET webclient request (=faster)
fixed titles with backslashes

2.13 MR
Adjusts pptx timestamp to publishing timestamp

2.14 MR
Made filtering case-insensitive
added NoVideos to download slidedecks only

2.15
Added timestamping of downloaded pptx files
minor output changes

2.16
More illegal character fixups

2.18
Added ScheduleURL to download sessions listed in a schedule shared on MyIgnite.microsoft.com
added lookup of video YouTube URL from MyIgnite.microsoft.com if not found in TechCommunity
added check to make sure conversation titles begin with session code
added check to make sure we skip conversations we've already checked since some RSS IDs are duplicates.

2.19 Added trimming of filenames.

2.20
Incorporated Tim Pringle's code to use JSON to acess MyIgnite catalog
Added option to select speaker
Added caching of session information (expires in 1 day, or remove .cache file)
Removed Start parameter (we're now pre-reading the catalog)

2.21
Added proxy support, using system configured setting
Fixed downloading of slidedecks

2.22
Added URL parameter
Renamed script to IgniteDownloader.ps1

2.5
Added InfoOnly switch
Added Product parameter
Renamed script to Get-IgniteSession.ps1

2.6
Fixed slide deck downloading
Added Overwrite switch

2.61
Added placeholder slide deck removal

2.62
Fixed Overwrite logic bug
Renamed to singular Get-IgniteSession to keep in line with PoSH standards

2.63
Fixed bug reporting failed pptx download
Added reporting of placeholder decks and videos

2.64
Added processing of direct download links for videos

2.65
Added option to specify multiple sessionCode codes
Added note in source that format only works for YouTube video downloads.
Added youtube-dl returncode check in case it won't run (e.g. missing VC library).

EXAMPLES

Download all available contents of sessions containing the word 'Exchange' in the title to D:\Ignite:
.\Get-IgniteSession.ps1 -DownloadFolder D:\Ignite -Format 18 -Keyword 'Exchange'

Get information of all sessions, and output only location and time information for sessions (co-)presented by Tony Redmond:
.\Get-IgniteSession.ps1 -InfoOnly | Where {$_.Speakers -contains 'Tony Redmond'} | Select Title, location, startDateTime

Download all available contents of sessions BRK3248 and BRK3186 to D:\Ignite
.\Get-IgniteSession.ps1 -DownloadFolder D:\Ignite -ScheduleCode BRK3248,BRK3186