getmusicbee.com

Support => Tips and Tricks => Topic started by: gordy on January 29, 2017, 10:11:00 PM

Title: Powershell script to import all stations from SomaFM and Digitally Imported
Post by: gordy on January 29, 2017, 10:11:00 PM
This generates an opml file you can import into MusicBee's radio library. If anyone knows other great sites that make their station lists relatively accessible, let me know and I'll add them. Or if you add it yourself post the patch to this gist (https://gist.github.com/gfody/3e869791c86e4f1e31bcd85eb9d2bab5).

Code
$doc = [xml]'<opml version="2.0"><body/></opml>'
$body = $doc.selectSingleNode('//body')

# somafm.com channels..
foreach($ch in (irm http://somafm.com/channels.xml).selectNodes('//channels/*')) {
    $x = $doc.createElement('outline')
    $x.setAttribute('text', "SomaFM - $($ch.title.innerText)")
    $x.setAttribute('description', $ch.description.innerText)
    $x.setAttribute('category', "$($ch.genre)/AAC/128k/")
    $x.setAttribute('type', 'link')
    $x.setAttribute('url', $ch.selectSingleNode('highestpls[@format="aac"]').innerText)
    $body.appendChild($x)
}

# di.fm channels..
$listenkey = "xxxxxxxxxxxxxxxxxxxxxxxx"
foreach($ch in (irm http://listen.di.fm/premium_high.json)) {
    $x = $doc.createElement('outline')
    $x.setAttribute('text', "Digitally Imported - $($ch.name)")
    $x.setAttribute('category', "$($ch.key)/AAC/128k/")
    $x.setAttribute('type', 'link')
    $x.setAttribute('url', "$($ch.playlist)?$($listenkey)")
    $body.appendChild($x)
}

$w = new-object xml.xmlTextWriter("stations.xml", $null)
$w.formatting = [xml.formatting]::indented
$w.indentChar = "`t"
$w.indentation = 1
$doc.writeTo($w)
$w.close()