The real error was PypoMessageHandler wasn't consuming messages from RabbitMQ, thus schedules were only updated on PypoFetch time out.
Proably queue is in a stale state because it didn't recover from a broken connection.
The issue is a SimpleQueue was being used, which's 'python-like' *get* method apparently doesn't handle recovery.
Consumers are the way to go instead.
this is apparently the reason why schedules don't get pushed after a silence
producing desynchronization between the mvc and liquidsoap and cannot catch up until pypofetch times out.
(ON AIR turns off and there's a mess until the schedule is fetched. sometimes it even continues playing the wrong tune)
((logging inside the while True loop produces no output, probably it is locked on the queue?))
When Libretime streams a webstream, the ID3 data is put into a single title field, leaving the artist field blank. When processing the ID3 data, Libretime concatenates the blank 'artist' field with the title, leaving '- title'. ShoutCAST rejects title updates that begin with punctuation for stylistic reasons (thanks guys) and so effectively ignores all ID3 data coming with the stream, falling back to the 'Station off-air' message. This PR uses the title field alone if the artist field is blank, but both when the artist data is available e.g. when streaming an MP3.
Config file getting is allowed to fail. I didn't realize that it
would not just use the default instead of excepting and getting
caught. Sorry for that.
1st- Changes the file permissions of cache files from 444 to 644
2nd- Put the host variables into a single array, this way we can pass the full variable to the report_file_size_and_md5_to_airtime function.
This adds TLS support to pypo when downloading files from the REST
API. I previously fixed some similar issues in the api_client and
wasn't aware that pypo isn't using it for every URL..