Skip to content

Instantly share code, notes, and snippets.

@marckean
Created August 17, 2018 04:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marckean/5d205b38c53c85bb33c9dbe80648b279 to your computer and use it in GitHub Desktop.
Save marckean/5d205b38c53c85bb33c9dbe80648b279 to your computer and use it in GitHub Desktop.
#region variables
# Replace with your Workspace ID
$CustomerID = 'Your_Workspace_Key'
# Replace with your Primary Key
$SharedKey = 'Your_OMS_Key'
#Specify the name of the record type that we'll be creating.
$LogType = 'Your_Log_Name' # To be used to search for as a custom log e.g. Type=iTunesPopCharts2_CL
# Specify a time in the format YYYY-MM-DDThh:mm:ssZ to specify a created time for the records
$TimeStampField = ''
#endregion
#region functions
function iHeartRadioUS
{
$iwr1 = Invoke-WebRequest -UseBasicParsing -Uri $url
$null = $iwr1 -match 'http.*[\r|\n].*'; $url2 = $matches[0]
$iwr2 = Invoke-WebRequest -UseBasicParsing -Uri $url2
$null = $iwr2.RawContent -match 'EXTINF:10,title="(.*?)".*,artist="(.*?)".*"song_spot=\\"(.*?)\\"'
$title = $matches[1]
$artist = $matches[2]
$global:spot = $matches[3]
$RadioSong = "$artist - $title"
if((($RadioSong -notmatch $CallSign1) -and ($RadioSong -notmatch $CallSign2) -and ($RadioSong -notmatch $CallSign3)) `
-and ($RadioSong -match '..\s-\s..'))
{
#Write-Output "Passed the last check"
#Region Do stuff with the song
$Cleansong = $RadioSong -replace '\(.*\)', ' ' -replace('&', '&') -replace ' ', ' ' -replace ' feat. ', ' ' `
-replace ' ft. ', ' ' -replace ' ft ', ' ' `
-replace '[\xC0-\xC5]', 'A' -replace '[\xC8-\xCB]', 'E' -replace '[\xCC-\xCF]', 'I' `
-replace '[\xD2-\xD6]', 'O' -replace '[\xD9-\xDC]', 'U' -replace '[\xe8-\xEB]', 'e' `
-replace '[\xEC-\xEF]', 'i' -replace '[\xF2-\xF6]', 'o' -replace '[\xF9-\xFC]', 'u' `
-replace '[\xE0-\xE5]', 'o' -replace '[\xD1]', 'N' -replace '[\x91\x92\x60]', '\x27' `
-replace '[\x93\x94]', '\x22' -replace '[^\x30-\x39\x41-\x5A\x61-\x7A\x20\x2D\x26\x27\x22\x2E\x2C]+', ' ' `
-replace ' ', ' ' -replace 'The ', '' -replace '\s$' -replace '^\s'
$Cleansong
}
}
# Function to create the authorization signature.
Function New-Signature ($CustomerID, $SharedKey, $date, $contentLength, $method, $contentType, $resource)
{
$xHeaders = 'x-ms-date:' + $date
$stringToHash = $method + "`n" + $contentLength + "`n" + $contentType + "`n" + $xHeaders + "`n" + $resource
$bytesToHash = [Text.Encoding]::UTF8.GetBytes($stringToHash)
$keyBytes = [Convert]::FromBase64String($SharedKey)
$sha256 = New-Object -TypeName System.Security.Cryptography.HMACSHA256
$sha256.Key = $keyBytes
$calculatedHash = $sha256.ComputeHash($bytesToHash)
$encodedHash = [Convert]::ToBase64String($calculatedHash)
$authorization = 'SharedKey {0}:{1}' -f $CustomerID, $encodedHash
return $authorization
}
# Function to create and post the request
Function Send-OMSData($CustomerID, $SharedKey, $body, $LogType)
{
$method = 'POST'
$contentType = 'application/json'
$resource = '/api/logs'
$rfc1123date = [DateTime]::UtcNow.ToString('r')
$contentLength = $body.Length
$signature = New-Signature `
-customerId $CustomerID `
-sharedKey $SharedKey `
-date $rfc1123date `
-contentLength $contentLength `
-method $method `
-contentType $contentType `
-resource $resource
$omsuri = 'https://' + $CustomerID + '.ods.opinsights.azure.com' + $resource + '?api-version=2016-04-01'
$headers = @{
'Authorization' = $signature
'Log-Type' = $LogType
'x-ms-date' = $rfc1123date
'time-generated-field' = $TimeStampField
}
$response = Invoke-WebRequest -Uri $omsuri -Method $method -ContentType $contentType -Headers $headers -Body $body -UseBasicParsing
return $response.StatusCode
}
#endregion
# Flush the variables
Get-Variable *result | Remove-Variable
while($true)
{
$Results = @()
# 93.3 FLZ - Tampa Bay
$URL = 'https://c4.prod.playlists.ihrhls.com/681/playlist.m3u8'
$song = $null
$CallSign1 = "FLZ"
$CallSign2 = "Tampa Bay"
$CallSign3 = "text="
$song = iHeartRadioUS
if($song -and ($FLZTamparesult -ne $song) -and ($global:spot -eq 'M'))
{
$FLZTamparesult = $song
$x = New-Object -TypeName psObject | Select-Object -Property Station, Song
$x.Station = '93.3 FLZ - Tampa Bay'
$x.Song = $song
$Results += $x
Write-Host "$($x.Station): " -NoNewline -ForegroundColor Cyan;Write-Host $x.Song -NoNewline -ForegroundColor Yellow;Write-Host " $global:spot" -ForegroundColor Green
}
# 103.5 Kiss Fm - Chicago
$URL = 'http://c5icyelb.prod.playlists.ihrhls.com/849/playlist.m3u8'
$song = $null
$CallSign1 = "Kiss FM"
$CallSign2 = "Chicago"
$CallSign3 = "text="
$song = iHeartRadioUS
if($song -and ($KissChicagoresult -ne $song) -and ($global:spot -eq 'M'))
{
$KissChicagoresult = $song
$x = New-Object -TypeName psObject | Select-Object -Property Station, Song
$x.Station = '103.5 Kiss Fm - Chicago'
$x.Song = $song
$Results += $x
Write-Host "$($x.Station): " -NoNewline -ForegroundColor Cyan;Write-Host $x.Song -NoNewline -ForegroundColor Yellow;Write-Host " $global:spot" -ForegroundColor Green
}
# WILD 94.9 - San Francisco
$URL = 'http://c4icy.prod.playlists.ihrhls.com/305/playlist.m3u8'
$song = $null
$CallSign1 = "Wild 949"
$CallSign2 = "Bays Hit Music"
$CallSign3 = "text="
$song = iHeartRadioUS
if($song -and ($WILDresult -ne $song) -and ($global:spot -eq 'M'))
{
$WILDresult = $song
$x = New-Object -TypeName psObject | Select-Object -Property Station, Song
$x.Station = 'Wild 94.9 - San Francisco'
$x.Song = $song
$Results += $x
Write-Host "$($x.Station): " -NoNewline -ForegroundColor Cyan;Write-Host $x.Song -NoNewline -ForegroundColor Yellow;Write-Host " $global:spot" -ForegroundColor Green
}
# Z100 - New York
$URL = 'https://c5.prod.playlists.ihrhls.com/1469/playlist.m3u8'
$song = $null
$CallSign1 = "Z100"
$CallSign2 = "Hit Music Station"
$CallSign3 = "text="
$song = iHeartRadioUS
if($song -and ($Z100result -ne $song) -and ($global:spot -eq 'M'))
{
$Z100result = $song
$x = New-Object -TypeName psObject | Select-Object -Property Station, Song
$x.Station = 'Z100 - New York'
$x.Song = $song
$Results += $x
Write-Host "$($x.Station): " -NoNewline -ForegroundColor Cyan;Write-Host $x.Song -NoNewline -ForegroundColor Yellow;Write-Host " $global:spot" -ForegroundColor Green
}
# Kiis 102.7 - LA
$URL = 'https://c2.prod.playlists.ihrhls.com/185/playlist.m3u8'
$song = $null
$CallSign1 = "102.7 KIIS FM"
$CallSign2 = "KIIS FM"
$CallSign3 = "text="
$song = iHeartRadioUS
if($song -and ($KiisLAresult -ne $song) -and ($global:spot -eq 'M'))
{
$KiisLAresult = $song
$x = New-Object -TypeName psObject | Select-Object -Property Station, Song
$x.Station = 'Kiis 102.7 - LA'
$x.Song = $song
$Results += $x
Write-Host "$($x.Station): " -NoNewline -ForegroundColor Cyan;Write-Host $x.Song -NoNewline -ForegroundColor Yellow;Write-Host " $global:spot" -ForegroundColor Green
}
if($Results)
{
$json = $Results | ConvertTo-Json
Write-Output -InputObject $json
Send-OMSData -customerId $customerId -sharedKey $sharedKey -body $json -logType $logType
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment