Skip to content
Snippets Groups Projects
in_queue.liq 3.19 KiB
Newer Older
  • Learn to ignore specific revisions
  • #
    # Aura Engine (https://gitlab.servus.at/aura/engine)
    #
    # Copyright (C) 2017-2020 - The Aura Engine Team.
    #
    # This program is free software: you can redistribute it and/or modify
    # it under the terms of the GNU Affero General Public License as published by
    # the Free Software Foundation, either version 3 of the License, or
    # (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU Affero General Public License for more details.
    #
    # You should have received a copy of the GNU Affero General Public License
    # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    
    
    
    
    #####################################
    #            FUNCTIONS              #
    #####################################
    
    # Clear all requests in the queue
    def clear_queue(s) =
        q = s.queue()
        s.set_queue([])
        s.skip()
        list.iter(request.destroy, q)
    end
    
    
    
    #####################################
    #           QUEUE SOURCES           #
    #####################################
    
    # Create Sources
    
    input_queue_raw_0 = request.queue(id="in_queue_0")
    input_queue_raw_1 = request.queue(id="in_queue_1")
    
    # Apply ReplayGain normalization, if metadata available
    
    input_queue_0 = amplify(id="in_queue_0", 1., override="replay_gain", input_queue_raw_0)
    input_queue_1 = amplify(id="in_queue_1", 1., override="replay_gain", input_queue_raw_1)
    
    # See https://github.com/savonet/liquidsoap/discussions/2537
    
    # input_queue_0 = replaygain(input_queue_0)
    # input_queue_1 = replaygain(input_queue_1)
    
    
    # Add Event Handlers
    
    input_queue_0.on_metadata(on_metadata_notification)
    input_queue_1.on_metadata(on_metadata_notification)
    
    
    #####################################
    #          SERVER FUNCTIONS         #
    #####################################
    
    # Clear Default Queue A
    
    server.register(namespace=source.id(input_queue_0),
    
            description="Skip & clear all items from queue A.",
    
            usage="clear",
            "clear",
    
    
                clear_queue(input_queue_raw_0)
    
            end
        )
    
    # Clear Default Queue B
    
    server.register(namespace=source.id(input_queue_1),
    
            description="Skip & clear all items from queue B.",
    
            usage="clear",
            "clear",
    
    
                clear_queue(input_queue_raw_1)
    
            end
        )
    
    # Seek Filesystem Queue A
    
    server.register(namespace = source.id(input_queue_0),
        description="FFWD given amount of seconds",
        usage = "roll <duration in seconds>",
        "roll",
    
                log("Rolling #{t} seconds")
    
                t = float_of_string(default=0.,t)
    
                ret = source.seek(input_queue_0, t)
                "OK"
    
            end
        )
    
    # Seek Filesystem Queue B
    
    server.register(namespace = source.id(input_queue_1),
        description="FFWD given amount of seconds",
        usage = "roll <duration in seconds>",
        "roll",
    
                log("Rolling #{t} seconds")
    
                t = float_of_string(default=0.,t)
    
                ret = source.seek(input_queue_1, t)
                "OK"