Цитата:
Сообщение от MATPOC
Navi-X не проверяет getmimetype всех пунктов при открытии плейлиста. Просто надо плейлист сделать. Я писал простенький скрипт, который m3u плейлист конвертирует в плейлист Navi-X, но что-то не могу найти. Впрочем, там совсем просто. Могу на выходных набросать снова.
|
Набросал скрипт. Скрипт очень простой - берёт плейлист в формате m3u со стандартного ввода (stdin) или указать имя файла в качестве агрумента. Плейлист в формате navi-x выводит на стандартный вывод (stdout). Позиции плейлиста m3u должны задаваться парами строк вида:
#EXTINF:что угодно
, Имя канала
proto://@233.32.240.236:1234
Где
proto ==
udp или
rtp, адрес обязательно из четырёх чисел, разделённых точками. То есть этот скрипт не подойдёт для конвертирования плейлистов http типа интернет радио или онлайн-видео.
Чтобы сохранить в файл нужно переназначить вывод:
Код:
./m3u2navi-x.pl iptv.m3u > iptv.plx
PHP код:
#!/usr/bin/perl -w
sub out_navix;
while (defined($line = <>) ) {
if ($line =~ /#EXTINF:.*,\s*(.*)(\s*)/) {
$channel_name = $1;
$channel_name =~ s/\r+//;
if (defined($line = <>)
and ($line =~ '(udp|rtp)://@?(\d+\.\d+\.\d+\.\d+):(\d+)')) {
$mproto = $1; $mgroup = $2; $mport = $3;
$murl = $line;
}
out_navix;
}
}
sub out_navix
{
print "type=video\n";
print "name=$channel_name\n";
print "URL=$murl";
print "#\n";
}
Сам код очень простой, но там есть все заготовки для вывода плейлиста в других форматах - в переменные
$mproto, $mgroup, $mport из строки URL вычленяются соответственно протокол, мультикаст группа и порт. Так как для вывода в формат navi-x эти переменные не используются, то perl выдаёт предупреждения, которые можно игнорировать:
Цитата:
Name "main::mproto" used only once: possible typo at ./m3u2navi-x.pl line 12.
Name "main::mport" used only once: possible typo at ./m3u2navi-x.pl line 12.
Name "main::mgroup" used only once: possible typo at ./m3u2navi-x.pl line 12.
|