Installation method
Docker
Describe the bug
When I select the "Once per hour at specified time" method in a playlist and I have enabled the "Interrupt Others Songs" option, at the requested minute, the jingles follow each other for about 1 minute while the sequential mode is selected and I only want one jingle to be played. Is it a bug or is it the "Interrupt Other Songs" that is like that?
To Reproduce
Steps to reproduce the behavior:
@Ficreet I didn't try to reproduce this yet but this seems like a bug to me.
Did you select "Only Loop Playlist Once"?
I think slvreagle mixed up "once" and "playlist.once".
once
Creates a source that plays only one track of the input source.
playlist.once
Custom playlist source written using the script language. It will read directory or playlist, play all files and stop.
You can find descriptions here https://github.com/savonet/liquidsoap/blob/master/scripts/utils.liq
There is also "playlist.merge"
Play the whole playlist as one track.
Examples
playlist_jingles = audio_to_stereo(playlist(id="playlist_jingles",reload_mode="watch",mode="randomize","/var/azuracast/stations/eisradio/playlists/playlist_jingles.m3u"))
Normal playlist
playlist_jingles = audio_to_stereo(once(id="playlist_jingles",reload_mode="watch",mode="randomize","/var/azuracast/stations/eisradio/playlists/playlist_jingles.m3u"))
Plays only ONE track from playlist
playlist_jingles = audio_to_stereo(playlist.once(id="playlist_jingles",reload_mode="watch",mode="randomize","/var/azuracast/stations/eisradio/playlists/playlist_jingles.m3u"))
Plays ALL tracks from playlist
playlist_jingles = audio_to_stereo(playlist.merge(id="playlist_jingles",reload_mode="watch",mode="randomize","/var/azuracast/stations/eisradio/playlists/playlist_jingles.m3u"))
Merges all tracks and plays whole playlist as ONE track
Thank you for the informations @LordHelmchen666, I'll try to check this box and let you know if it works or not
Hello, despite your recommendations, the problem still persists under the same conditions as mentioned above
@Ficreet So @LordHelmchen666 has a valid point, but the setting "Loop playlist once" is actually intended to be playlist.once as it currently is. The setting's original purpose was in case you had a scheduled block of time with a playlist that was likely shorter than the scheduled block, and didn't want it to repeat and play again within the same block. playlist.once disables this looping.
The setting you're looking for is actually something new that didn't exist in AzuraCast until about 5 minutes ago. You're looking for a way to play a single track out of a given playlist with multiple tracks. That is indeed the once function, and I think it's also potentially very valuable for station operators to have.
I've added a new setting on playlists called "Only Play One Track at Scheduled Time" that corresponds to the once function under the hood and should produce the results you're expecting.
Thanks for the clarification!
You are absolutely right SlvrEagle23. I think playlist.once is very good for playing news or ads at a specific time every hour. So we can have a playlist like "StationID - News-Intro - News - Weather - News-Outro" or "Ads-Intro - Ad1 - Ad2 - Ad3 - Ads-Outro"
Hi,
Thank you @SlvrEagle23 for making this addition so quickly but I think I found a bug in it. When I select the "Once per hour at specified time" mode with the options selected "Interrupt Other Songs" and "Only Play One Track at Scheduled Time", it causes a music from the playlist to be played once per minute requested, but the hours after the playlist will not be played.
(Example: 14h16 --> Playlist played | 15h16 --> Playlist not played | 16h16 --> Playlist not played | etc...)
I tried disabling "Interrupt Other Songs" but it gives me the same result
@Ficreet I've reworked how the Liquidsoap file generation works, which should help with this.
Okay, thank you for the support ! How do I know this bug will be fixed ?
@Ficreet If you notice on this GitHub issue, there is a commit listed directly above my response indicating that it should be fixed; that's the actual code update where I published the fix to the AzuraCast code. This means it's immediately available for you to update and try out locally.
Let me know if the changes help resolve your issue.
Oh well, I misunderstood that. I apologize for that.
Following this, I updated and tested to see if the problem still persisted and unfortunately yes. It is as if the option "Once per hour at specified time" made this error appear.
@Ficreet Can you explain the current problem you're having with it? I did a fair amount of work with Liquidsoap, and it should be fixed.
Make sure you're not updating with the --release flag, etc. and using the latest rolling-release update.
I own the latest version of AzuraCast (0.9.4.2) and I don't think I used the "--release" or have the latest version of rolling-release
I created a playlist and configured it so that every hour at 00 minutes it plays 1 jingle (About 10 seconds). For that I put its priority at 10, put the order of passage in sequential order, activated the options "Once per hour", "Interrupt Other Songs", "Only Play One Track at Scheduled Time", and I obviously set the "Minute of Hour to Play" to 0.
I also checked that music was assigned to the playlist.
Once configured and the station restarted, when it is first activated (e. g. at 6pm) everything goes as planned, but for all the following hours (7pm, 8pm, 9pm) nothing will happen and that indefinitely.
I hope I have been clear, do not hesitate to ask me to reformulate in case of misunderstanding, and I also looked in the logs but nothing about these events is displayed.
Thank you for helping me
@Ficreet Try turning off the "only play one track at scheduled time" setting. I think it may not be doing what it's supposed to be doing.
With the "play once per hour" setting, this should still only play a single song each time it's supposed to play.
I tried, under your guidance, to disable the "only play one track at scheduled time" option but this is causing me a problem. I explain, as I said above, I use this feature to play jingles (About 10 seconds) every hour. But without this activation option, it happens that for 1 minute full of jingles are played in a row before the music resumes.
I always hope I've been clear. Then it is possible that what I ask to do is not possible. In this case tell me there's no problem!
@Ficreet When you re-enable the only play one track at scheduled time option and restart your station, can you post the liquidsoap config? Maybe there is a bug in the generation of the config file.
That's it! That's it!
(Note: I replaced my webradio name with "--", hoping you won't mind)
playlist_m = audio_to_stereo(playlist(id="playlist_m",reload_mode="watch",mode="randomize","/var/azuracast/stations/--/playlists/playlist_m.m3u"))
playlist_m = cue_cut(id="--_playlist_m_cue", playlist_m)
playlist_t = audio_to_stereo(playlist(id="playlist_t",reload_mode="watch",mode="normal","/var/azuracast/stations/--/playlists/playlist_t.m3u"))
playlist_t = cue_cut(id="--_playlist_t_cue", playlist_t)
playlist_c = audio_to_stereo(playlist(id="playlist_c",reload_mode="watch",mode="normal","/var/azuracast/stations/--/playlists/playlist_c.m3u"))
playlist_c = cue_cut(id="--_playlist_c_cue", playlist_c)
playlist_j = audio_to_stereo(playlist(id="playlist_j",reload_mode="watch",mode="randomize","/var/azuracast/stations/--/playlists/playlist_j.m3u"))
playlist_j = cue_cut(id="--_playlist_j_cue", playlist_j)
playlist_j = drop_metadata(playlist_j)
# Standard Playlists
radio = random(weights=[3], [playlist_m])
dynamic = audio_to_stereo(request.dynamic(id="--_next_song", timeout=20., azuracast_next_song))
dynamic = cue_cut(id="--_cue_cut", dynamic)
error_song = sequence([blank(duration=5.), single("/usr/local/share/icecast/web/error.mp3")])
requests = audio_to_stereo(request.queue(id="--_requests"))
radio = fallback(id="--_autodj_fallback", track_sensitive = true, [requests, dynamic, radio, error_song])
# Interrupting Schedule Switches
radio = switch(track_sensitive=false, [ ({ 0m }, once(playlist_t)), ({true}, radio) ])
# Once per x Songs Playlists
radio = rotate(weights=[1,30], [playlist_c, radio])
radio = rotate(weights=[1,3], [playlist_j, radio])
@Ficreet Did restarting fix it, or is it still happening?
Sorry I'm delayed. I always encounter the problem, then maybe I try to do an action that is not compatible with the various options selected. They may not have been made for that, and that would be understandable.
Most helpful comment
Did you select "Only Loop Playlist Once"?
I think slvreagle mixed up "once" and "playlist.once".
once
playlist.once
You can find descriptions here https://github.com/savonet/liquidsoap/blob/master/scripts/utils.liq
There is also "playlist.merge"
Examples
playlist_jingles = audio_to_stereo(playlist(id="playlist_jingles",reload_mode="watch",mode="randomize","/var/azuracast/stations/eisradio/playlists/playlist_jingles.m3u"))Normal playlist
playlist_jingles = audio_to_stereo(once(id="playlist_jingles",reload_mode="watch",mode="randomize","/var/azuracast/stations/eisradio/playlists/playlist_jingles.m3u"))Plays only ONE track from playlist
playlist_jingles = audio_to_stereo(playlist.once(id="playlist_jingles",reload_mode="watch",mode="randomize","/var/azuracast/stations/eisradio/playlists/playlist_jingles.m3u"))Plays ALL tracks from playlist
playlist_jingles = audio_to_stereo(playlist.merge(id="playlist_jingles",reload_mode="watch",mode="randomize","/var/azuracast/stations/eisradio/playlists/playlist_jingles.m3u"))Merges all tracks and plays whole playlist as ONE track