Hello, attached a simple Perl script, which plays your favoured Radio News Broadcast on a regular basis like every full hour. Your Music continues afterwards and plays like before. If you listen to a Internetstream already, the script will not interfere.
Main parts of the script are from the Webpage Domoticz https://www.domoticz.com/forum/viewtopic.php?t=15188: The Perl script must be started via cron Deamon or Task Scheduler on Windows: Code: -------------------- #!/usr/bin/perl -w # # radio.pl # # Guys: thanx for your work! use IO::Socket; use strict; use Switch; # --------- PLEASE SET YOUR PREFERENCES ---------# # LMS Settings my $serverAddress = '127.0.0.1'; my $serverPort = 9090; my $szLine1 = "Radio Nachrichten"; my $szLine2 = "SR Info"; my $szSound = "http://stream.srg-ssr.ch/drs4news/mp3_128.m3u"; my $iDuration = "20"; my $szSat = "0"; my $merker = "0"; my @iShuffle; my @iIndex; my @iPath; my @iTime; my @iTracks; my @ihttp; # Internal parameters my $debug = 0; # 0 = off, 1 = on my ($min, $hour) = (localtime(time))[1,2]; # print "MIN ,$min"; # print "Hour ,$hour"; switch($hour) { case 8 { $szSound = "http://192.168.178.4:8001/1:0:2:6F38:445:1:C00000:0:0:0:"; $szLine2 = "SWR Aktuell"; $iDuration = 300 } case 9 { $szSound = "http://str0.creacast.com/sudtirol1a"; $szLine2 = "Südtirol 1"; $iDuration = 240 } case 10 { $szSound = "http://opml.radiotime.com/Tune.ashx?id=s15051&partnerId=16&username=martwal"; $szLine2 = "BR 5"; $iDuration = 300 } case 11 { $szSound = "http://opml.radiotime.com/Tune.ashx?id=s42828&partnerId=16&username=martwal"; $szLine2 = "DLF Nachrichten"; $iDuration = 300 } case 12 { $szSound = "http://stream.srg-ssr.ch/drs4news/mp3_128.m3u"; $szLine2 = "SR Info"; $iDuration = 300 } case 13 { $szSound = "http://www.wdr.de/wdrlive/media/wdr5.m3u"; $szLine2 = "WDR 5"; $iDuration = 300 } case 14 { $szSound = "http://opml.radiotime.com/Tune.ashx?id=s176675&partnerId=16&username=martwal"; $szLine2 = "Hitradio Namibia"; $iDuration = 300 } case 15 { $szSound = "http://streaming.brf.be/brf1-high.mp3"; $szLine2 = "Belgien 1"; $iDuration = 300 } case 16 { $szSound = "http://opml.radiotime.com/Tune.ashx?id=s47781&partnerId=16&username=martwal"; $szLine2 = "News 89,4 Neuss"; $iDuration = 240 } case 17 { $szSound = "http://opml.radiotime.com/Tune.ashx?id=s24885&partnerId=16&username=martwal"; $szLine2 = "NDR Info"; $iDuration = 240 } case 18 { $szSound = "http://www.wdr.de/wdrlive/media/wdr5.m3u"; $szLine2 = "WDR 5"; $iDuration = 250 } case 19 { $szSound = "http://www.wdr.de/wdrlive/media/wdr5.m3u"; $szLine2 = "WDR 5"; $iDuration = 300 } else { $szSound = "http://stream.srg-ssr.ch/drs4news/mp3_128.m3u"; $szLine2 = "SR Info"; $iDuration = 300 } } $iDuration = "20" if ($debug eq 1) ; #-------- NO USER SERVICABLE PARTS BELOW -------# # Try to open a connection to the SLIMP3 CLI my $LMS = IO::Socket::INET->new (PeerAddr => $serverAddress, PeerPort => $serverPort, Proto => 'tcp', Timeout => 5, Type => SOCK_STREAM) or die 'Couldn\'t connect to server'; # Get the number of players my $playerCount = sendAndReceive('player count ?'); $debug && print "$playerCount players found\n"; for (my $i = 0; $i < $playerCount; $i++) { my $playerId = sendAndReceive("player id $i ?"); $ihttp[$i] = "0"; # Playermode my $playerMode = sendAndReceive("$playerId mode ?"); $debug && print "$playerId playerMode: $playerMode\n"; if ($playerMode eq "play" ) { #$debug && print "Mode\n"; # Get shuffle status (on, off) $iShuffle[$i] = sendAndReceive( "$playerId playlist shuffle ?"); $debug && print "$playerId iShuffle: $iShuffle[$i]\n"; # Get current song $iIndex[$i] = sendAndReceive( "$playerId playlist index ?"); $debug && print "iIndex: $iIndex[$i]\n"; # Get path and filename to current song $iPath[$i] = sendAndReceive( "$playerId playlist path $iIndex[$i] ?"); $debug && print "iPath: $iPath[$i]\n"; # Check if we are online (Radio Stream) $ihttp[$i] = "1" if( $iPath[$i] =~ /http/) || ( $iPath[$i] =~ /https/); $debug && print "ihttp: $ihttp[$i]\n"; if( $ihttp[$i] eq "0"){ # merken ob wir etwas zu tun haben $merker = "1"; # Turn shuffle off sendAndReceive( "$playerId playlist shuffle 0"); # Get the current position (in s) $iTime[$i] = sendAndReceive( "$playerId time ?"); $debug && print "iTime: $iTime[$i]\n"; # Stop the current song sendAndReceive( "$playerId stop"); # Add the Radio Stream at the end of the playlist sendAndReceive( "$playerId playlist append $szSound"); $debug && print "szSound: $szSound\n"; # Get the number of tracks in the playlist $iTracks[$i] = sendAndReceive( "$playerId playlist tracks ?"); $iTracks[$i] -= 1; $debug && print "iTracks: $iTracks[$i]\n"; # Is now -1 if playlist was empty $iTracks[$i] = 0 if( $iTracks[$i] < 0); # Play the Radio stream sendAndReceive( "$playerId playlist index $iTracks[$i]"); # Show the announcement message sendAndReceive( "$playerId display $szLine1 $szLine2 30"); } } } if( $merker eq "1"){ $debug && print "iDuration: $iDuration\n"; sleep( $iDuration); for (my $i = 0; $i < $playerCount; $i++) { my $playerId = sendAndReceive("player id $i ?"); # Player Mode my $playerMode = sendAndReceive("$playerId mode ?"); $debug && print "playerMode: $playerMode\n"; $debug && print "ihttp: $ihttp[$i]\n"; # Wiederherstellung des Startzustandes if ($playerMode eq "play" and $ihttp[$i] eq "0") { # Stop it sendAndReceive( "$playerId stop"); # Remove the radio stream from the playlist sendAndReceive( "$playerId playlist delete $iTracks[$i]"); $debug && print "$playerId playlist delete $iTracks[$i]\n"; # Reselect the old song sendAndReceive( "$playerId playlist index $iIndex[$i]"); $debug && print "$playerId playlist index $iIndex[$i]\n"; # Set the player in the old mode sendAndReceive( "$playerId play"); sendAndReceive( "$playerId time $iTime[$i]"); # Reinstate the shuffle mode sendAndReceive( "$playerId playlist shuffle $iShuffle[$i]"); } } } close ($LMS); $debug && print "LMS Verbindung abgebaut\n"; $debug && print "\n"; # Send given cmd to $LMS and return answer with original command removed from # front if present. Routine nicked from code by Felix Mueller. :-) sub sendAndReceive { my $cmd = shift; return if( $cmd eq ""); print $LMS "$cmd\n"; $debug > 1 && print "Sent $cmd to server\n"; my $answer = <$LMS>; $debug > 1 && print "Server replied: $answer\n"; $answer =~ s/$cmd //i; $answer =~ s/\n//; return $answer; } -------------------- Greetings *Hardware:* Touch,3 Radio,Boom,2 SB3, PiCorePlayer *Players Software:* squeezelite *Steuerung:*Squeeze Comander *Plugins:*"Lesezeichen, Custom Browse, TrackStat; Custom Scan; 'MusicInfoSCR' (http://www.herger.net/slim-plugins/detail.php@nr=446&kategorie=slim-plugins); 'LazySearch 2' (http://www.hickinbottom.com/lazysearch), JustCovers,PlayHLS;ENM for Dreambox, and more. LMS 7.9.4 WINDOWS 10 2004 64Bit &'MusicIP ' (http://www.spicefly.com/)Server ------------------------------------------------------------------------ squeezebox_Fan's Profile: http://forums.slimdevices.com/member.php?userid=63027 View this thread: http://forums.slimdevices.com/showthread.php?t=113599
_______________________________________________ plugins mailing list [email protected] http://lists.slimdevices.com/mailman/listinfo/plugins
