-
-
Notifications
You must be signed in to change notification settings - Fork 231
feat(legacy): trim overbooked shows after autoloading a playlist #2897
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
What do you think about doing this 24h after the show has aired? I think having the overbooked items in the schedule can be useful when removing a track/reordering the track list, e.g. removing a track doesn't end up with a silence at the end because we didn't fully fill the schedule. So making it a background task sound like a better idea, and maybe also using django/celery ? |
My main gripe with the current system is, if you have a fixed schedule and ingest podcast episodes, filling the empty space behind the podcast with a smart block results in massively overbooked shows, if you also want to make sure the random routine doesnt pick a song twice. We don't really interact in this case, merely monitor the playout. When manually editing the autoloaded show the person doing it is responsible for making sure the airtime is fully used and theres no silence. So i took the obvious approach and added it to the autoloader in legacy. Your suggestion of doing it 24h after the show aired is more a point of database hygene, not UI hygene. I would rather opt for making my patch configurable/switchable. Adding database cleanup via celery 24h after airtime can be done as well. But again those are 2 different stories :-) |
I like this change, but agree maybe it should be behind a configuration toggle? Then people who wish to keep things overbooked can |
Setting added. Defaults to old behaviour. If i don't have any spelling errors inside ;-) |
e3f10bb
to
88ad33c
Compare
…99/libretime into autoload-trim-overbooked
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great, I will test and do another review once the few comments are addressed.
…ways the same for a show.
for more information, see https://pre-commit.ci
…99/libretime into autoload-trim-overbooked
…99/libretime into autoload-trim-overbooked
We don't have tests, debugging simply mean copying the sql query in an sql client and trying it out.
Next step would be to be able to run this trim on all show instance older than 1 week! Thanks for the contribution! |
Sheesh, that's for not paying attention when doing last minute copy/past echanges. Thanks for the fixes! |
…retime#2897) ### Description Some combination of preload/postload and autoloding playlists with smartblocks generate massively overbooked shows that clutter up the interface. This addition performs a 'trim overbooked' after filling up the autoload list, and does the same as pushing the 'trim overbooked' button in the UI. ### Testing Notes Define an autoloading playlist of 2 hours and schedule it for a one hour show. Without patch, you'll get entries for 2 hours, with the patch, you only get one hour and a 'overboarding' orange entry at most. --------- Co-authored-by: Kyle Robbertze <paddatrapper@users.noreply.github.com> Co-authored-by: Thomas Göttgens <tgoettgens@mail.com> Co-authored-by: jo <ljonas@riseup.net>
🤖 I have created a release *beep* *boop* --- ## [4.1.0](4.0.0...4.1.0) (2024-05-05) ### Features * **api:** implement file deletion ([#2960](#2960)) ([9757b1b](9757b1b)) * build schedule events exclusively in playout ([#2946](#2946)) ([40b4fc7](40b4fc7)) * **legacy:** add aac/opus support to dashboard player ([#2881](#2881)) ([95283ef](95283ef)) * **legacy:** disable public radio page and redirect to login ([#2903](#2903)) ([170d095](170d095)) * **legacy:** trim overbooked shows after autoloading a playlist ([#2897](#2897)) ([a95ce3d](a95ce3d)) * **legacy:** visual cue point editor ([#2947](#2947)) ([da02e74](da02e74)) * start celery worker programmatically ([#2988](#2988)) ([9c548b3](9c548b3)) ### Bug Fixes * **analyzer:** backslash non utf-8 data when probing replaygain ([#2931](#2931)) ([29f73e0](29f73e0)), closes [#2910](#2910) * apply replay gain preferences on scheduled files ([#2945](#2945)) ([35d0dec](35d0dec)) * **deps:** update dependency friendsofphp/php-cs-fixer to <3.49.1 ([#2899](#2899)) ([3e05748](3e05748)) * **deps:** update dependency friendsofphp/php-cs-fixer to <3.51.1 ([#2963](#2963)) ([22c303c](22c303c)) * **deps:** update dependency friendsofphp/php-cs-fixer to <3.53.1 ([#2972](#2972)) ([9192aaa](9192aaa)) * **deps:** update dependency gunicorn to v22 (security) ([#2993](#2993)) ([a2cf769](a2cf769)) * incorrect docker compose version ([#2975](#2975)) ([634e6e2](634e6e2)) * **installer:** setup the worker entrypoint ([#2996](#2996)) ([71b20ae](71b20ae)) * **legacy:** allow deleting file with api token ([#2995](#2995)) ([86da46e](86da46e)) * **legacy:** allow updating track types code ([#2955](#2955)) ([270aa08](270aa08)) * **legacy:** avoid crash when lot of streams in configuration ([#2915](#2915)) ([12dd477](12dd477)) * **legacy:** ensure validation is performed on the track type form ([#2985](#2985)) ([5ad69bf](5ad69bf)) * **legacy:** fix hidden fields in edit file form ([#2932](#2932)) ([f4b260f](f4b260f)) * **legacy:** replay_gain_modifier should be a system preference ([#2943](#2943)) ([37d1a76](37d1a76)) * remove obsolete docker compose version ([#2982](#2982)) ([fb0584b](fb0584b)) * trigger legacy tasks manager every 5m ([#2987](#2987)) ([7040d0e](7040d0e)) * **worker:** ensure celery beat is started ([#3007](#3007)) ([bfde17e](bfde17e)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: jo <ljonas@riseup.net>
🤖 I have created a release *beep* *boop* --- ## [4.1.0](libretime/libretime@4.0.0...4.1.0) (2024-05-05) ### Features * **api:** implement file deletion ([#2960](libretime/libretime#2960)) ([9757b1b](libretime/libretime@9757b1b)) * build schedule events exclusively in playout ([#2946](libretime/libretime#2946)) ([40b4fc7](libretime/libretime@40b4fc7)) * **legacy:** add aac/opus support to dashboard player ([#2881](libretime/libretime#2881)) ([95283ef](libretime/libretime@95283ef)) * **legacy:** disable public radio page and redirect to login ([#2903](libretime/libretime#2903)) ([170d095](libretime/libretime@170d095)) * **legacy:** trim overbooked shows after autoloading a playlist ([#2897](libretime/libretime#2897)) ([a95ce3d](libretime/libretime@a95ce3d)) * **legacy:** visual cue point editor ([#2947](libretime/libretime#2947)) ([da02e74](libretime/libretime@da02e74)) * start celery worker programmatically ([#2988](libretime/libretime#2988)) ([9c548b3](libretime/libretime@9c548b3)) ### Bug Fixes * **analyzer:** backslash non utf-8 data when probing replaygain ([#2931](libretime/libretime#2931)) ([29f73e0](libretime/libretime@29f73e0)), closes [#2910](libretime/libretime#2910) * apply replay gain preferences on scheduled files ([#2945](libretime/libretime#2945)) ([35d0dec](libretime/libretime@35d0dec)) * **deps:** update dependency friendsofphp/php-cs-fixer to <3.49.1 ([#2899](libretime/libretime#2899)) ([3e05748](libretime/libretime@3e05748)) * **deps:** update dependency friendsofphp/php-cs-fixer to <3.51.1 ([#2963](libretime/libretime#2963)) ([22c303c](libretime/libretime@22c303c)) * **deps:** update dependency friendsofphp/php-cs-fixer to <3.53.1 ([#2972](libretime/libretime#2972)) ([9192aaa](libretime/libretime@9192aaa)) * **deps:** update dependency gunicorn to v22 (security) ([#2993](libretime/libretime#2993)) ([a2cf769](libretime/libretime@a2cf769)) * incorrect docker compose version ([#2975](libretime/libretime#2975)) ([634e6e2](libretime/libretime@634e6e2)) * **installer:** setup the worker entrypoint ([#2996](libretime/libretime#2996)) ([71b20ae](libretime/libretime@71b20ae)) * **legacy:** allow deleting file with api token ([#2995](libretime/libretime#2995)) ([86da46e](libretime/libretime@86da46e)) * **legacy:** allow updating track types code ([#2955](libretime/libretime#2955)) ([270aa08](libretime/libretime@270aa08)) * **legacy:** avoid crash when lot of streams in configuration ([#2915](libretime/libretime#2915)) ([12dd477](libretime/libretime@12dd477)) * **legacy:** ensure validation is performed on the track type form ([#2985](libretime/libretime#2985)) ([5ad69bf](libretime/libretime@5ad69bf)) * **legacy:** fix hidden fields in edit file form ([#2932](libretime/libretime#2932)) ([f4b260f](libretime/libretime@f4b260f)) * **legacy:** replay_gain_modifier should be a system preference ([#2943](libretime/libretime#2943)) ([37d1a76](libretime/libretime@37d1a76)) * remove obsolete docker compose version ([#2982](libretime/libretime#2982)) ([fb0584b](libretime/libretime@fb0584b)) * trigger legacy tasks manager every 5m ([#2987](libretime/libretime#2987)) ([7040d0e](libretime/libretime@7040d0e)) * **worker:** ensure celery beat is started ([#3007](libretime/libretime#3007)) ([bfde17e](libretime/libretime@bfde17e)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: jo <ljonas@riseup.net> libretime/libretime@1a985a4
🤖 I have created a release *beep* *boop* --- ## [4.1.0](libretime/libretime@4.0.0...4.1.0) (2024-05-05) ### Features * **api:** implement file deletion ([#2960](libretime/libretime#2960)) ([9757b1b](libretime/libretime@9757b1b)) * build schedule events exclusively in playout ([#2946](libretime/libretime#2946)) ([40b4fc7](libretime/libretime@40b4fc7)) * **legacy:** add aac/opus support to dashboard player ([#2881](libretime/libretime#2881)) ([95283ef](libretime/libretime@95283ef)) * **legacy:** disable public radio page and redirect to login ([#2903](libretime/libretime#2903)) ([170d095](libretime/libretime@170d095)) * **legacy:** trim overbooked shows after autoloading a playlist ([#2897](libretime/libretime#2897)) ([a95ce3d](libretime/libretime@a95ce3d)) * **legacy:** visual cue point editor ([#2947](libretime/libretime#2947)) ([da02e74](libretime/libretime@da02e74)) * start celery worker programmatically ([#2988](libretime/libretime#2988)) ([9c548b3](libretime/libretime@9c548b3)) ### Bug Fixes * **analyzer:** backslash non utf-8 data when probing replaygain ([#2931](libretime/libretime#2931)) ([29f73e0](libretime/libretime@29f73e0)), closes [#2910](libretime/libretime#2910) * apply replay gain preferences on scheduled files ([#2945](libretime/libretime#2945)) ([35d0dec](libretime/libretime@35d0dec)) * **deps:** update dependency friendsofphp/php-cs-fixer to <3.49.1 ([#2899](libretime/libretime#2899)) ([3e05748](libretime/libretime@3e05748)) * **deps:** update dependency friendsofphp/php-cs-fixer to <3.51.1 ([#2963](libretime/libretime#2963)) ([22c303c](libretime/libretime@22c303c)) * **deps:** update dependency friendsofphp/php-cs-fixer to <3.53.1 ([#2972](libretime/libretime#2972)) ([9192aaa](libretime/libretime@9192aaa)) * **deps:** update dependency gunicorn to v22 (security) ([#2993](libretime/libretime#2993)) ([a2cf769](libretime/libretime@a2cf769)) * incorrect docker compose version ([#2975](libretime/libretime#2975)) ([634e6e2](libretime/libretime@634e6e2)) * **installer:** setup the worker entrypoint ([#2996](libretime/libretime#2996)) ([71b20ae](libretime/libretime@71b20ae)) * **legacy:** allow deleting file with api token ([#2995](libretime/libretime#2995)) ([86da46e](libretime/libretime@86da46e)) * **legacy:** allow updating track types code ([#2955](libretime/libretime#2955)) ([270aa08](libretime/libretime@270aa08)) * **legacy:** avoid crash when lot of streams in configuration ([#2915](libretime/libretime#2915)) ([12dd477](libretime/libretime@12dd477)) * **legacy:** ensure validation is performed on the track type form ([#2985](libretime/libretime#2985)) ([5ad69bf](libretime/libretime@5ad69bf)) * **legacy:** fix hidden fields in edit file form ([#2932](libretime/libretime#2932)) ([f4b260f](libretime/libretime@f4b260f)) * **legacy:** replay_gain_modifier should be a system preference ([#2943](libretime/libretime#2943)) ([37d1a76](libretime/libretime@37d1a76)) * remove obsolete docker compose version ([#2982](libretime/libretime#2982)) ([fb0584b](libretime/libretime@fb0584b)) * trigger legacy tasks manager every 5m ([#2987](libretime/libretime#2987)) ([7040d0e](libretime/libretime@7040d0e)) * **worker:** ensure celery beat is started ([#3007](libretime/libretime#3007)) ([bfde17e](libretime/libretime@bfde17e)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: jo <ljonas@riseup.net> libretime/libretime@1a985a4
Description
Some combination of preload/postload and autoloding playlists with smartblocks generate massively overbooked shows that clutter up the interface. This addition performs a 'trim overbooked' after filling up the autoload list, and does the same as pushing the 'trim overbooked' button in the UI.
This is a new feature:
New feature that helps with keeping the interface tidy.
I have updated the documentation to reflect these changes:
If a documentation update to reflect this change is deemed neccessary i will provide one.
Testing Notes
What I did:
Define an autoloading playlist of 2 hours and schedule it for a one hour show. Without patch, you'll get entries for 2 hours, with the patch, you only get one hour and a 'overboarding' orange entry at most.
How you can replicate my testing:
see above. UI Button press has identical behaviour.