RadioBOSS 7.0.1.5 beta (2/12/2024)

The problems occur because you have not tested this which
Can you please specify what the problem with this event is? It's really hard to follow all that's written in this thread, I'm sorry.

Historical playlists will not play as it is looking for music in playlist folder as \ not music folder. which was \ This creates the red line pissing file you observed https://i.gyazo.com/f60feec8a45ccb5c8877aaa36a2f10d0.png?
If paths in the playlists are invalid, they will not play. You need to redo such playlists, or fix the paths, e.g. using Replace feature in any text editor.

DimitrI also thought XML Report Save of \nowplaying.xml in reports UTF8BOM would save image graphics n XML file?
Artwork is saved in a separate file, by default it's "artwork.jpg", you can configure it in the settings.

Is there also a feature coming up to read the next three song artists and use them to locate the relevant artist into a playlist .
Following tracks are evaluated one by one, if you use Track List. If you need to select the tracks in advance, you should use the Playlist Generator.

Th changes I made to the Duration of 2 hours did not work with the 'Run Now' made the event length 27 minutes not 2 hours when we can have a fix for this, please?
You can only specify duration limit in the event options, but not set the duration of an event; that is, a short playlist will not be prolonged.

I am also not sure if the Run Now is running the Sweeper on the event. I have noticed this not coming out I checked the Repeat protection and disabled it. I will update on this.
Sweeper is not inserted in this case.

I tried searching by tags to Generate a Playlist I do not think the tag search finds genre with breaks ; as breaks or, in genre.
Genre field is used as a whole, it's not separated. You should use Tags for a more fine grained selection: https://manual.djsoft.net/radioboss/en/using-tags.htm
 
DimitrI also thought XML Report Save of \nowplaying.xml in reports UTF8BOM would save image graphics n XML file?
Artwork is saved in a separate file, by default it's "artwork.jpg", you can configure it in the settings.

The reason I want this it wastes recourse on the internet server reading both the XML and the image separate which increases server traffic substantially it could be saved in XML easily saving two requests on server reads to one 30 songs in 2 hours is. 60 reads or 30 in 12 hours this is 60x12 which is 720 reads in one day in a week this is 7 *720 = 5040 reads in a month this 7 *720*4 = 20160 breaking my website usage under processing time and taking it offline this could be halved.
 
Is there also a feature coming up to read the next three song artists and use them to locate the relevant artist into a playlist .
Following tracks are evaluated one by one, if you use Track List. If you need to select the tracks in advance, you should use the Playlist Generator.

This does not answer my point about detecting next three songs in playlist or shuffled playlist. So that an announcement could be made what is coming up next but bespoke to playlist

I tried searching by tags to Generate a Playlist I do not think the tag search finds genre with breaks ; as breaks or, in genre.
Genre field is used as a whole, it's not separated. You should use Tags for a more fine grained selection: https://manual.djsoft.net/radioboss/en/using-tags.htm

Thak you but does not answer my point. Some songs have more than one genre. Expressed in same field separated by comma or semicolon as is tag descriptions for mp3 files. Please check the relevant documentation. These MP3 come from Amazon like this, your search oy seems to detect one tag only not multiple in Genre.

I am also not sure if the Run Now is running the Sweeper on the event. I have noticed this not coming out I checked the Repeat protection and disabled it. I will update on this.
Sweeper is not inserted in this case.

Causes further manual intervention. not understood why it doesn't as you need break from playing music which sweeper usually inserts.

Th changes I made to the Duration of 2 hours did not work with the 'Run Now' made the event length 27 minutes not 2 hours when we can have a fix for this, please?
You can only specify duration limit in the event options, but not set the duration of an event; that is, a short playlist will not be prolonged.

Your suggestion is non helpful sadly 'RunNow' should set two hours countdown if it's assigned in schedule (See below) as I have it working every 2 hours. If you hit 'RunNow' you get a random timer not 2 hours countdown much less 17mins or random count down which means most of the playlist is not played. It does not take into account the pink area below when 'RunNow' is depressed. This is also not the duration time of the existing playlist but a random countdown applied to timer.

11d8efe20b85eddfb47bc609cf646508.png

Historical playlists will not play as it is looking for music in playlist folder as \ not music folder. which was \ This creates the red line pissing file you observed https://i.gyazo.com/f60feec8a45ccb5c8877aaa36a2f10d0.png?
If paths in the playlists are invalid, they will not play. You need to redo such playlists, or fix the paths, e.g. using Replace feature in any text editor.

Resolved itself thank you.

I would welcome you look at the points above as I am striving to make your software perfect.
 
Artwork is saved in a separate file, by default it's "artwork.jpg", you can configure it in the settings.

The reason I want this it wastes recourse on the internet server reading both the XML and the image separate which increases server traffic substantially it could be saved in XML easily saving two requests on server reads to one 30 songs in 2 hours is. 60 reads or 30 in 12 hours this is 60x12 which is 720 reads in one day in a week this is 7 *720 = 5040 reads in a month this 7 *720*4 = 20160 breaking my website usage under processing time and taking it offline this could be halved.
HI I am providing you with my code so you can see the overhead could be saved. Obviously, line 141 an opening of the image is a duplicate fopen( which if base464 code was in XML this step would not be required to read the artwork and the XML which is wasteful.

PHP CODE with var removed and other functions derived elsewhere.

PHP:
<?php
<?php
/*

// * Create SSQL Entry from FTP delivery
// *


/*
<?xml version="1.0" encoding="utf-8"?>
<PLAYER name="RadioBOSS" version="6.2.3.2">
<TRACK ARTIST="Morcheeba" TITLE="The Sea" ALBUM="Parts of the Process" YEAR="2003" GENRE="Lush;downbeat;" COMMENT="Ripped by Winamp" FILENAME="C:\Music &amp; Video\Morcheeba - Parts of the Process\01 - Morcheeba - The Sea.mp3" DURATION="05:49"  STARTED="2022-12-19 01:37:03" PLAYCOUNT="4" LASTPLAYED="2022-12-19 01:37:02" INTRO="0.00" OUTRO="0.00" LANGUAGE="" RATING="0" BPM="150" TAGS="" F1="" F2="" F3="" F4="" F5="" CASTTITLE="Morcheeba - The Sea" LISTENERS="0" />
<PREVTRACK><TRACK ARTIST="Metric" TITLE="Nobody Home" ALBUM="Fantasies" YEAR="2009" GENRE="Lush; Rock; Indie Rock; New Wave;" COMMENT="http://mp3caprice.com" FILENAME="C:\Music &amp; Video\Metric - Fantasies\14_nobody-home.mp3" DURATION="03:13"  STARTED="2022-12-19 01:37:03" PLAYCOUNT="13" LASTPLAYED="2022-12-19 01:34:14" INTRO="182.68" OUTRO="1.26" LANGUAGE=" English" RATING="6" BPM="166" TAGS="" F1="" F2="" F3="" F4="" F5="" CASTTITLE="Metric - Nobody Home" /></PREVTRACK>
</PLAYER>

*/
include "mp3/check_remote_server.php";
$remote_server = checkRemoteServerStatus(
    "http://hmmm.ds.blah.net:27274/",
    19200,
    0
);
function ReturnError($code, $text)
{
        $protocol = isset($_SERVER["SERVER_PROTOCOL"])
            ? $_SERVER["SERVER_PROTOCOL"]
            : "HTTP/1.0";
        //header($protocol . ' ' . $code . ' ' . $text);

        echo "<HTML>";
        echo "<img src ='images/favpng_construction-worker-architectural-engineering-cartoon-royalty-free.png' width='200' height='240'></img><br><br>";
        echo "SERVER_PROTOCOL ERROR<BR><BR>";
        echo "Add data to SQL -." . $text . "<br><br>";
        throw Error("EXIT CODE");
        exit();
}
if ($remote_server == true) {
    // Data Processing
    $r = fopen("images/nowplaying.xml", "r");
    if ($r !== false) {
        $length = filesize("images/nowplaying.xml");
        $textXML = fread($r, $length);
        fclose($r);
    } else {
        close($r);
        ReturnError(500, "Failed to read (".$length.") bytes of XML from file XML.");
    }
 
    if($textXML =="") {
    $artist = substr(
        $textXML,
        strpos($textXML, "ARTIST=") + 8,
        strpos($textXML, " TITLE=") - strpos($textXML, "ARTIST=") - 9
    );
    $title = substr(
        $textXML,
        strpos($textXML, " TITLE=") + 8,
        strpos($textXML, " ALBUM=") - strpos($textXML, " TITLE=") - 9
    );
    $album = substr(
        $textXML,
        strpos($textXML, " ALBUM=") + 8,
        strpos($textXML, " YEAR=") - strpos($textXML, " ALBUM=") - 9
    );
 
    $exit_old = false;
 
    // note there is now num_rows  in PDO so we have to calculate a new one to get record number.
 
    } else {
        ReturnError(500, "Failed to write /read from xml."   );
    }
    try {
        $n = 0;
        $conn = new PDO( "mysql:host=$servername;dbname=$dbname",  $username, $password  );
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql =  "SELECT * FROM `played_songs` ORDER BY `datetime` DESC LIMIT 1";
        $result = $conn->query($sql); // Use query as we are returning records.
   
        $row = $result->fetch();
        $conn = null;
        } catch (PDOException $e) {
            ReturnError(500, "Failed to write /read from SQL." . $e->getMessage() );
        }
 
        if (!($artist == $row["artist"]& $title == $row("title")) )
        {
           
            $exit_old = true;

            $genre = substr(
                $textXML,
                strpos($textXML, " GENRE=") + 8,
                strpos($textXML, " COMMENT=") - strpos($textXML, " GENRE=") - 9
            );
            $comment = substr(
                $textXML,
                strpos($textXML, " COMMENT=") + 10,
                strpos($textXML, "FILENAME=") - strpos($textXML, " COMMENT=") - 12
            );
            $length = substr(
                $textXML,
                strpos($textXML, " DURATION=") + 12,
                strpos($textXML, "  STARTED=") - strpos($textXML, " DURATION=") - 13
            );
            $rating = substr(
                $textXML,
                strpos($textXML, " RATING=") + 9,
                strpos($textXML, " BPM=") - strpos($textXML, " RATING=") - 10
            );
            $bpm = substr(
                $textXML,
                strpos($textXML, " BPM=") + 6,
                strpos($textXML, " TAGS=") - strpos($textXML, " BPM=") - 7
            );
            $listeners = substr(
                $textXML,
                strpos($textXML, " LISTENERS=") + 12,
                strpos($textXML, " />") - strpos($textXML, " LISTENERS=") - 13
            );
            $t = fopen("images/nowplaying_artwork_2.png", "r");
            if ($t !== false) {
                $artwork = fread($t, filesize("images/nowplaying_artwork_2.png"));
                fclose($t);
            } else {
                fclose($t);
                ReturnError(500, "Failed to write artwork to a file.");
            }
            $base64artwork = base64_encode($artwork);
            $sql3 = "INSERT INTO `played_songs` (`song`, `artist`, `album`, `length`, `bpm`,`genre`, `listeners`,`track_user_rating`,`track_user_num`,`comment`,`ImageBase64`) VALUES ('$title','$artist', '$album', '$length', '$bpm', '$genre','$listeners','0','0', '$comment','$base64artwork') ON DUPLICATE KEY UPDATE  `listeners`='$listeners'";
            $conn = new PDO( "mysql:host=$servername;dbname=$dbname",  $username, $password  );
            $sql = "INSERT INTO `played_songs` (`song`, `artist`, `album`, `length`, `bpm`,`genre`, `listeners`,`track_user_rating`,`track_user_num`,`comment`,`ImageBase64`) VALUES ('$title','$artist', '$album', '$length', '$bpm', '$genre','$listeners','0','0', '$comment','$base64artwork')";
       
            $conn->exec($sql3);
            $conn = null;
        }
            //echo "New record created successfully";
   
 
        // note there is now num_rows  in PDO so we have to calculate a new one to get record number.
       
 
 
    } else {
        //Server disconnected
    }

?>
 
Last edited:
Additionally, i am noting form here (https://stackoverflow.com/questions/29238153/how-to-detect-that-a-file-is-being-uploaded-over-ftp) that Some FTP servers allow you to configure a hook to be called, when an upload is finished. You can make use of that. For example, ProFTPD has a mod_exec module (see the ExecOnCommand directive). Would it be possible to add this to RB a hook somehow to run mode_exec when files are loaded by FTP? This would really simplify JavaScript website event loops which are really complicated.
 
I am also noticing another bug. If the scheduler brings in the playlist and you notice and make a change Save As does not Save to back to the same name, it loaded under nor does save. **BUG***
 
I am ls noticing files are not being found when they exist in the directory. This happens when the scheduler loads a playlist these --.-- files occur.

b63c78f7aa57363416b96ac5d9ae8ea0.png
 
Error saving playlist [EFCreateError] Cannot create file "\Playlists\Collections\All Rock Metal so far.m3u8". The system cannot find the path specified. Something removed a whole directory from playlist folder
 
The reason I want this it wastes recourse on the internet server reading both the XML and the image separate which increases server traffic substantially it could be saved in XML easily saving two requests on server reads to one 30 songs in 2 hours is. 60 reads or 30 in 12 hours this is 60x12 which is 720 reads in one day in a week this is 7 *720 = 5040 reads in a month this 7 *720*4 = 20160 breaking my website usage under processing time and taking it offline this could be halved.
I think you should change the web host, if it has such problems and funny limits. Also, saving artwork in an XML will make it 1.5-2 times larger, and you will also need to make effort of extracting it from there and decoding. It doesn't make any sense, easier to use a web hosting that does not limit basic things.

This does not answer my point about detecting next three songs in playlist or shuffled playlist. So that an announcement could be made what is coming up next but bespoke to playlist
RadioBOSS only evaluates the next song. If you need to show more upcoming tracks, you can probably use the API: https://manual.djsoft.net/radioboss/en/remote_controlapi.htm - e.g. get playlist contents, probably also scheduled events. But if you use Shuffle, it will be much harder. RadioBOSS only evaluates the next Shuffled number, not further.
Again, it's better to use the Playlist Generator in this case. This way you will know in advance what will play.

Thak you but does not answer my point. Some songs have more than one genre. Expressed in same field separated by comma or semicolon as is tag descriptions for mp3 files. Please check the relevant documentation. These MP3 come from Amazon like this, your search oy seems to detect one tag only not multiple in Genre.
In RadioBOSS it does not separate the Genre field, I'm sorry. Maybe in the future it will, but currently it's not.

Causes further manual intervention. not understood why it doesn't as you need break from playing music which sweeper usually inserts.
Sweepers are an automatic feature to make an event start at desired time. When you use Run Now it simply starts an event right away.
 
Your suggestion is non helpful sadly 'RunNow' should set two hours countdown if it's assigned in schedule (See below) as I have it working every 2 hours. If you hit 'RunNow' you get a random timer not 2 hours countdown much less 17mins or random count down which means most of the playlist is not played. It does not take into account the pink area below when 'RunNow' is depressed. This is also not the duration time of the existing playlist but a random countdown applied to timer.
Run Now merely starts an event, optionally it will skip the next scheduled run. The next run after that will happen on the scheduled time.

HI I am providing you with my code so you can see the overhead could be saved. Obviously, line 141 an opening of the image is a duplicate fopen( which if base464 code was in XML this step would not be required to read the artwork and the XML which is wasteful.
The point is to "save" one fopen call? I'm sorry but it doesn't make any sense.

Would it be possible to add this to RB a hook somehow to run mode_exec when files are loaded by FTP? This would really simplify JavaScript website event loops which are really complicated.
I don't think it's RadioBOSS that must do this, it uploads the file so FTP server already knows about this fact, it's odd to "notify" it separately about this upload.
 
I am also noticing another bug. If the scheduler brings in the playlist and you notice and make a change Save As does not Save to back to the same name, it loaded under nor does save. **BUG***
Can you please provide more information about this? It's not supposed to save to the same path as scheduled playlist.

I am ls noticing files are not being found when they exist in the directory. This happens when the scheduler loads a playlist these --.-- files occur.
It means the path is incorrect. RadioBOSS can't do anything in this case. The file is not there.

Error saving playlist [EFCreateError] Cannot create file "\Playlists\Collections\All Rock Metal so far.m3u8". The system cannot find the path specified. Something removed a whole directory from playlist folder
Something, but not RadioBOSS. Again, lots of odd things happen, only on your computer - the "bugs" you report simply do not reproduce, as well as any "magic" like disappearing directories or files.
 
Dimiri, greetings


I am ls noticing files are not being found when they exist in the directory. This happens when the scheduler loads a playlist these --.-- files occur.
It means the path is incorrect. RadioBOSS can't do anything in this case. The file is not there.

solved
This worked to remove the --.-- that the paylists was getting so the search system in windows 11 was affecting your app's ability to find files it some seem at the moment to have solved that I post it here in case anyone else has these --.-- The page suggests resetting to windows 10 search which took a day but is now looking better.:)

"I am looking at this to see if it will help:
https://www.winhelponline.com/blog/...ebuild Windows Search Index Without Resetting As I noticed oddly something like mp3 was missing from search criteria in the File type allowed to be searched. I will let you know if it solves this.
"


Error saving playlist [EFCreateError] Cannot create file "\Playlists\Collections\All Rock Metal so far.m3u8". The system cannot find the path specified. Something removed a whole directory from playlist folder
Something, but not RadioBOSS. Again, lots of odd things happen, only on your computer - the "bugs" you report simply do not reproduce, as well as any "magic" like disappearing directories or files.
Solved by index above.
These two above now are now working.



I am also noticing another bug. If the scheduler brings in the playlist and you notice and make a change Save As does not Save to back to the same name, it loaded under nor does save. **BUG***
Can you please provide more information about this? It's not supposed to save to the same path as scheduled playlist.

Currently the real file name is listed in log here.: Schedule: [Random Play list of 2 Hr] 2021-10-03-Lush .m3u8 (\My Music\Playlists\2021-10-03-Lush .m3u8) . If I click on this playlist and chose File >> save as the dialog opens trying to save this as 2020-02-16- Sofset which was the last saved playlist not the one on screen in playlist brough in by the schedule. This is confusing as it relates to the playlist inserted.

Your suggestion is non helpful sadly 'RunNow' should set two hours countdown if it's assigned in schedule (See below) as I have it working every 2 hours. If you hit 'RunNow' you get a random timer not 2 hours countdown much less 17mins or random count down which means most of the playlist is not played. It does not take into account the pink area below when 'RunNow' is depressed. This is also not the duration time of the existing playlist but a random countdown applied to timer.
Run Now merely starts an event, optionally it will skip the next scheduled run. The next run after that will happen on the scheduled time.

Sadly it is not doing the same thing as running the event as this gets it correct with the correct countdown timer suggesting by the fact you admitted this 'RunNow' has no facility to play sweeper, then it is not running the same piece of code but a wasteful other piece not acting ass the scheduler does to set timer correctly. Therefore 'RunNow' and Schedular bringing in the playlist are completely different coding!

HI I am providing you with my code so you can see the overhead could be saved. Obviously, line 141 an opening of the image is a duplicate fopen( which if base464 code was in XML this step would not be required to read the artwork and the XML which is wasteful.
The point is to "save" one fopen call? I'm sorry but it doesn't make any sense.
What I meant as gave you my code that the two 'open file' commands are used one for image and one for XML duplicate and really doubles the resources on the sever causing it in my case to bug out and collapse for 24 hours, which is really not helpful.


Would it be possible to add this to RB a hook somehow to run mode_exec when files are loaded by FTP? This would really simplify JavaScript website event loops which are really complicated.
I don't think it's RadioBOSS that must do this, it uploads the file so FTP server already knows about this fact, it's odd to "notify" it separately about this upload.

The reason I asked was that the same as above these websites have precious resources a simple check box could be added to the report to only conduct the report and run a PHP file when the files had been FTP up to the website. i.e. in the way a hook somehow to run mode_exec when files are loaded by FTP. Your report Notifications can nearly do this a POST a URL event, without variables which sadly won't go through the internet anymore on a URL passing through servers. However, as a hook it could be excellent especially if the XML could hold the playing song ART as Hex or something. This will then run the import to SQL when the FTP transfer has occurred. I hope this makes sense.
 
Unable to play! Error code 2 (unable to open the file/invalid server address). \My Music\_Station-break Station-ID recordings\SID Now Playing @HitMetalRockMusic.mp3
 
Currently the real file name is listed in log here.: Schedule: [Random Play list of 2 Hr] 2021-10-03-Lush .m3u8 (\My Music\Playlists\2021-10-03-Lush .m3u8) . If I click on this playlist and chose File >> save as the dialog opens trying to save this as 2020-02-16- Sofset which was the last saved playlist not the one on screen in playlist brough in by the schedule.
Starting a scheduled playlist does not change the file name for the playlist tab, this is by design.

Sadly it is not doing the same thing as running the event as this gets it correct with the correct countdown timer suggesting by the fact you admitted this 'RunNow' has no facility to play sweeper, then it is not running the same piece of code but a wasteful other piece not acting ass the scheduler does to set timer correctly. Therefore 'RunNow' and Schedular bringing in the playlist are completely different coding!
It generally does the same thing, really, there's only one part of the code that starts events. "Run Now" has some minor differences, that's all.

What I meant as gave you my code that the two 'open file' commands are used one for image and one for XML duplicate and really doubles the resources on the sever causing it in my case to bug out and collapse for 24 hours, which is really not helpful.
Looks like a problem with the server, if it can't handle two fopen() calls. Not our problem to solve, I'm sorry.

simple check box could be added to the report to only conduct the report and run a PHP file when the files had been FTP up to the website
It's not really simple, as this will require synchronizing those actions, and this makes things very complex. I'm not sure it's worth it.
 
this has not entirely solved this it's still occurring has Rb use of long file names changed?
No, there are no changes and no problem with paths handling. If there was, and given that RadioBOSS is used by thousands of people, we'd know of that immediately by seeing an avalanche of support tickets and forum posts.
 
Back
Top