4
0
mirror of https://github.com/AzuraCast/AzuraCast.git synced 2024-06-14 13:16:37 +00:00
AzuraCast/src/Radio/PlaylistParser.php
2022-05-17 02:51:00 -05:00

45 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Radio;
class PlaylistParser
{
/**
* @return string[]
*/
public static function getSongs(string $playlistRaw): array
{
// Process as full PLS if the header is present.
if (str_starts_with($playlistRaw, '[playlist]')) {
$parsed_playlist = (array)parse_ini_string($playlistRaw, true, INI_SCANNER_RAW);
return array_filter(
$parsed_playlist['playlist'],
static function ($key) {
return str_starts_with(strtolower($key), 'file');
},
ARRAY_FILTER_USE_KEY
);
}
// Process as a simple list of files or M3U-style playlist.
$lines = preg_split(
"/[\r\n]+/", // regex supports Windows, Linux/Unix & Old Macs EOL's
$playlistRaw,
-1,
PREG_SPLIT_NO_EMPTY
);
if (false === $lines) {
return [];
}
return array_filter(
array_map('trim', $lines),
static function ($line) {
return $line[0] !== '#';
}
);
}
}