Steven Irby

I use Pandora pretty much all day while I work. I’m currently traveling abroad which means, it’s blocked. Typically what I would do is, log into my VPN. Go to Pandora. Start listening. There are a few problems with this. For starters, I’ve been using a very popular VPN. This mean, some services and sites are blocked. Or I have to constantly fill out a captcha.

I recently started using the amazing command line tool pianobar. Which lets you control and play Pandora in your terminal. Pianobar lets you use a http proxy, but I don’t trust shady public proxies, even for just pandora. Plus, it’s a pain to constantly find a new one, when it stops working. I’m SICK and tired of turning on my VPN on and off all the time. I just want it to alway work.

I also wanted to just simply ssh into my server and use that, instead of some random proxy. Or more complicated setup.

Here’s how I got everything working in one command.

Install pianobar:

brew install pianobar

Set up the config (on mac: .config/pianobar/config):

user = example@example.com
proxy = https://localhost:9090

I’m using a nifty go script to locally proxy the SOCK proxy to http. This is so pianobar can use an http proxy.

(Need to be setup to run a go script)

go get github.com/stevenirby/pianobarproxy
go/bin/pianobarproxy -socks5 :9080

ssh into my server:

ssh -D localhost:9080 -C -N root@XX.XX.XXX.XXX

I’m not typing three commands, so let’s create a script:

pandora.sh

#!/bin/bash

function main() {
    trap 'jobs -p | xargs kill' EXIT

    echo "Starting pianobarproxy..."
    ~/go/bin/pianobarproxy -socks5 :9080 > /dev/null 2>&1 &
    sleep 3

    echo "Starting ssh proxy..."
    ssh -D localhost:9080 -C -N root@XX.XX.XXX.XXX &
    sleep 6

    pianobar
}

main

Symlink so I can run this one command and listen to music with one command.

ln -n pandora.sh /usr/local/bin/pandora

Now you just run the command:

pandora

Now it just works ™.