Thanks. Downloading it first would add quite a bit of delay for my intended use-case (the "button" that triggers the code is a "Play" button so the user will expect something in good time). As these are links to podcast audio files they can be comparatively big. I actually provide a separate download option too.
I didn't find much re. 403 error with ffpyplayer but there's quite a few hits on this for ffmpeg, which I imagine are caused by similar things? The link that causes the problem for me does a redirect and the actual mp3 filename is quite different from what it is in the original URL. I guess Buzzsprout does this to counter scraping?
Here's what you get when using that snippet of code for ffpyplayer directly in python terminal: