Skip to content

Instantly share code, notes, and snippets.

@OneLogicalMyth
Last active July 10, 2018 11:18
Show Gist options
  • Save OneLogicalMyth/a41cb050a23b85948a6e3b598888eb13 to your computer and use it in GitHub Desktop.
Save OneLogicalMyth/a41cb050a23b85948a6e3b598888eb13 to your computer and use it in GitHub Desktop.
Add-Type -AssemblyName System.Web
function grabdate {
param($day,$time)
switch($day){
'Thursday' { Get-Date -Date "09/08/2018 $time" }
'Friday' { Get-Date -Date "10/08/2018 $time" }
'Saturday' { Get-Date -Date "11/08/2018 $time" }
'Sunday' { Get-Date -Date "12/08/2018 $time" }
}
}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$results = wget 'https://www.defcon.org/html/defcon-26/dc-26-speakers.html'
$TalksRaw = Select-String '(?smi)<h3 class="talkTitle">(.*?)</h3>.*?<p class="details">(.*?)</p>.*?<h4 class="speaker">(.*?)<span' -InputObject $results.Content -AllMatches | %{ $_.Matches }
$Talks = $TalksRaw | Select-Object @{n='Talk Title';e={[System.Web.HttpUtility]::HtmlDecode(($_.Groups[1].value.trim()))}},
@{n='Scheduled Day';e={($_.Groups[2].value -split '\sat\s')[0].trim()}},
@{n='Scheduled Time';e={($_.Groups[2].value -split '\sat\s')[1].split(' ')[0].trim()}},
@{n='Scheduled Date';e={grabdate -day ($_.Groups[2].value -split '\sat\s')[0].trim() -time ($_.Groups[2].value -split '\sat\s')[1].split(' ')[0].trim()}},
@{n='Track';e={($_.Groups[2].value -split 'in\s')[1].Split('<')[0].trim()}},
@{n='Duration';e={($_.Groups[2].value -replace "`r").Split('|')[0].Split('>')[1].trim()}},
@{n='Category';e={($_.Groups[2].value -replace "`n").Split('|')[1].Trim()}},
@{n='Speaker';e={($_.Groups[3].value).Trim()}}
$Talks | Export-Csv (Join-Path $env:USERPROFILE 'Defcon-26_Speakers.csv') -NoTypeInformation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment