I think the important difference is that you're accessing the site from a free PythonAnywhere account -- paid accounts on our site (like your DigitalOcean VM, which is also a paid service) get unrestricted Internet access, and of course from your own machine you have a regular Internet connection, but we have to filter the Internet access for free accounts -- we were getting too many hackers signing up and using us as a cut-out to hack into other sites before we started doing that. For paid accounts, we have payment details on file so that if people do really bad stuff we at least know who they are.
(Of course, hackers could possibly sign up for paid accounts with stolen credit cards and do bad stuff even now, but it adds enough friction to the process that in general they don't bother -- or if they do, our card processor is pretty good at spotting card fraud and letting us know before they do too much damage. Basically we're in the same situation as other hosting providers, like Digital Ocean, when it comes to that.)
Of course, the problem is that when we added filtering, code needs to work well with the filtering, and it can only access sites that are on the whitelist. I've taken a closer look at the tswift library, and it looks like instead of going to the MetroLyrics API, they're scraping the regular website. I thought that was a bit weird -- I found what appeared to be solid docs for the API -- but then I actually went to api.metrolyrics.com in my browser, and got an internal server error, so I guess they've stopped supporting it.
Unfortunately we can only whitelist official public APIs, so I can't add the regular MetroLyrics site to the whitelist. So I think the only way this will work on PythonAnywhere is if you upgrade to a paid account.