Works pretty well although I've woken up to some pretty bizarre looking stuff every once in a while.
This is a mirror of what gets generated for it.
FYI, I got around the cable issue by aligning the TV directly above my piano which helps to hide it.
EDIT: Just a heads up, if the image s3 URL is identical (meaning you're upserting), you could make a HEAD request to determine if the image has changed versus the current one being shown. Alternatively, you could look into setting up an S3 trigger which triggers off new files being uploaded to it as well.
Personally, I'd recommend having two S3 folders, archived and new, then randomly assigning a GUID to the uploaded image. That way you support queueing if several people upload a few images, each one will get scheduled for display. S3 List the "new" files, display one of them, once time is up, raspberry PI moves it to the "archived" folder.