Sep 192015
 
 September 19, 2015  Posted by at 1:41 pm PowerShell

I’m doing some Uni courses to get a BCS with an international profile and one of the tools we use for coordinating assignments, email, discussions and more is Fronter. I’m not a terrible big fan of the system, I used it for two years when I did my programming degree but I never got comfortable with it. The biggest problem is having one more place to log in (two actually, as we have a login one the uni site as well). There is an API, but admin level only. However, there is a RSS feed that supplies the information you request to be on the front page. Neat feature, and much appreciated.

I have been playing around with PowerShell to set up a custom RSS reader for all the news sites I follow,- and with some minor tweaks I can simply run a command to get the feed using my credentials.

posh and fronter

There are many ways to go about this, and I’m certain mine can be simplified but I’ll share this nonetheless.

#
# Fronter.ps1
#
 
$username = "-"
$password = "-" | ConvertTo-SecureString -asPlainText -Force
$url = "https://fronter.com/ltu/rss/get_today_rss.php?elements=default&LANG=en"
 
$credentials = New-Object System.Management.Automation.PSCredential($username,$password)
 
$result = Invoke-WebRequest $url -Credential $credentials
 
[xml]$feed = $result.Content
 
$feed.rss.channel.item | % {
 
    $author = if($_.author) { $_.author} else { "admin"}
 
    write-host ("{0} by {1}" -f$_.title,$author) -foreground "yellow"
 
    if($_.pubdate){
        write-host ("Published on {0} `n" -f$_.pubdate) -foreground "green"
    }
}

 

The economist likes to send markup as a part of the summary/content, and a cheeky regex sort of takes hand of that. Not liking that solution frankly. Notice also that I’m using the .Net assemblies making sure that I clean up my resources.

posh and the economist

#
# TheEconomistRss.ps1
#
 
Add-Type -AssemblyName System.ServiceModel
 
$result = Invoke-WebRequest "http://www.economist.com/sections/science-technology/rss.xml"
 
[xml]$xmlFeed = $result.Content
 
try {
    $stringReader = New-Object System.IO.Stringreader $result.Content
 
    $reader = [system.Xml.XmlReader]::Create($stringReader)
 
    $sFeed = [System.ServiceModel.Syndication.SyndicationFeed]::Load($reader)
 
    $sFeed.Items | % {
        Write-Host $_.Title.Text -foreground "yellow"
        Write-Host $_.PublishDate.DateTime.ToString() -foreground "green"
        Write-Host (($_.Summary.Text -replace '<.+?>','')+ "`n`n") -foreground "gray" 
    }
}
 
finally {
            $stringReader.Close()
            $reader.Close()
}

Sorry, the comment form is closed at this time.