Skip to main content


My wife and have a hobby-level online radio station and we use Logitech Media Server as the backend. As part of what we use we're running a plug-in called Spicefly Sugarcube, which interacts with a "brain" called MusicIP. MusicIP allows music suggestions to be called using an API, which is basically what Sugarcube is doing, and it builds a URL with the very last element being "recipe," which is a filter built into MusicIP that helps shape the direction the songs go.

The issue is I'd like to replace the recipe section of this plug in with a fixed array that cycles through to emulate a radio format clock. I realize that by doing this under the hood I lose the functionality of changing the recipes on the fly, but that's okay.

The program is driven by the plugin.pm file located here:

https://bitbucket.org/spicefly/sugarcube/src/master/SugarCube/Plugin.pm

I know nothing about Perl so tried to have ChatGPT alter this to replace the recipe section with a fixed array, It returned the upper part of the file this way, with no other changes, and the plug in won't load like this:

#v6.01 - December 2023

#+===================+

#Licencing Requirements Removed

#Released as Open Source under the GNU General Public License v3.0

#

#In Short Summary

#Complete source code must be made available that includes all changes

#Copyright and license notices must be preserved.

#Contributors provide an express grant of patent rights.

package Plugins::SugarCube::Plugin;

# Define the recipe sequence array

my u/recipe_sequence = ('5s', '4s', '5s', '5s', '4s', '5s', '4s', '5s', '5s', '4s', '5s', '4s', '5s', '5s', '4s', '5s', '5s', '4s');

my $recipe_index = 0;

# Function to get the next recipe in sequence

sub get_next_recipe {

my $recipe = $recipe_sequence[$recipe_index];

$recipe_index = ($recipe_index + 1) % u/recipe_sequence; # Loop back to the start

return $recipe;

}

use base qw(Slim::Plugin::Base);

use strict;

use Slim::Utils::Misc;

use Slim::Utils::Prefs;

use Slim::Utils::Log;

my $log = Slim::Utils::Log->addLogCategory(

{

'category' => 'plugin.sugarcube',

# 'defaultLevel' => 'WARN',

'defaultLevel' => 'DEBUG',

'description' => getDisplayName(),

}

);

So my question is, is this possible, and is the kernel of how to make it work here, or is there a better way to do it? If you look at the original plugin.pm file you'll see how the URL is built, and I really just want the very end of the URL to be &recipe=5s or %recipe=4s depending on the sequence I enter. Any help it appreciated!

submitted by /u/typecrazy789
[link] [comments]