ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
6   •   Посмотреть все темы

Скрипты PAL для Sam Broadcaster

 

53
wisher @wisher
Настойка скрипта ретрансляции новостей...
version.hour.jingle.improved.1.5
1). в начале добейтесь срабатывания увеличения уровня громкости (подгоняем секунды опытным путём)
PAL.WaitForTime('+00:00:24'); // 24 сек. ожидания..... не активного плеера...

2). затем регулируем Точное время запуска
PAL.WaitForTime('XX:59:46'); // Точное время запуска (подгоняем секунды опытным путём)

3). длину времени вещания можете увеличить до желаемого
PAL.WaitForTime('+00:03:18'); // время ожидания до завершения вещания новостей

наверное у вас возникает вопрос, для чего PAL скрипт, запускать через планировщик?
ответ уж совсем простой, возможно вам нет надобности в начале каждого часа вещать новости
вот для этого, запуск через планировщик даёт вам преимущество для включения двух скриптов
1. вашего стандартного скрипта отбивки новостей
2. и дополнительного с ретрансляцией новостей
тем самым вы сможете управлять, вещать новости в определённые дни или часы

и в заключении:
если будет времечко постараюсь усовершенствовать сие творение....

Отредактировано wisher - 28.06.2023
85
YNC @pluta
Wisher , скрипт играет только один раз и останавливатеся . Как его на каждый час настроить?

53
wisher @wisher
pluta пишет:

Wisher , скрипт играет только один раз и останавливатеся . Как его на каждый час настроить?


почему он останавливается?
так это для того чтобы запускать через планировщик с включением и отключением скрипта...

если вы планируете использовать без планировщика то только изменить эту строчку
PAL.Loop := False; // Одноразовый цикл работы скрипта

на эту
PAL.Loop := True; // Скрипт будет выполнятся постоянно


в таком варианте имейте ввиду, что ретрансляция новостей будет круглосуточной и ежечасной, что напрягает слушателя
всё же, я думаю через планировщик будет удобнее там можно настроить два скрипта стандартный и дополнительный и выводить
уже новости в определённые часы или даже дни, допустим в 10:00 утра затем в 15:00 и так далее ... или только по будням ...
в любом случае выбор за вами, удачи!

Отредактировано wisher - 11.01.2015
53
wisher @wisher
To Be Continued ... версия 2.5 in the process of developing

53
wisher @wisher
В продолжение темы: cкрипт ретрансляции выпуска новостей с эффектами
Тестируем! Свеженькая версия с дополнением
version.hour.jingle.improved.2.5

{Запуск скрипта через планировщик установить за 10 секунд до начала точного времени запуска}
var P : TPlayer;
var Song : TSongInfo;
var strFile, strPath, strJingle : String;

strPath := 'C:\CLOCK\'; // Путь к папке, где лежат отбивки часов
strJingle := 'C:\CLOCK\start_hour.mp3'; // Путь и название джингла после отбивки часов

PAL.Loop := False; // Одноразовый цикл работы скрипта

PAL.WaitForTime('XX:59:46'); // Точное время запуска (подгоняем секунды опытным путём)

strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3'; // Определяем название файла с нужными часиками. Формат имени файла XX-XX.mp3

P := Aux1;
if P <> nil then
begin
Queue.AddURL('http://icecast.vgtrk.cdnvideo.ru/vestifm_mp3_192kbps',ipTop); // Путь URL внешнего источника новостей
Queue.AddFile(strJingle, ipTop);
Queue.AddFile(strFile, ipTop);

P := ActivePlayer;
if P <> nil then P.FadeToNext;
end;

{Здесь очень важно настроить секунды в зависимости от длины ваших файлов отбивки часов и джингла время ожидания PAL.WaitForTime('+00:00:24');
необходимо изменить и добиться срабатывания IdlePlayer.Volume := 633; на увеличение громкости иначе не будет срабатывания увеличения громкости}
PAL.WaitForTime('+00:00:24'); // 24 сек. ожидания к принудительному увеличению уровня громкости не активного плеера (подгоняем секунды опытным путём)

IdlePlayer.Volume := 731; // увеличение положения громкости не активного плеера выше стандартного

PAL.WaitForTime('+00:03:18'); // время ожидания до завершения вещания новостей (Длину вещания новостей по желанию можно увеличить)

P := Aux2; // через что играть
if P <> nil then
begin
Song := Cat['end-news'].ChooseSong(1,NoRules); // короткий фоновый джингл завершения новостей (от 12 до 14 секунд)
if Song <> nil then
begin
Aux2.QueueSong(Song);
Aux2.Play
End;
End;

ActivePlayer.Volume := 474; // начало уменьшения горомкости новостей
ActivePlayer.Volume := 411;
ActivePlayer.Volume := 348;
ActivePlayer.Volume := 285;
ActivePlayer.Volume := 222;
ActivePlayer.Volume := 159;
ActivePlayer.Volume := 96;

ActivePlayer.FadeToNext; // плавный переход заврешения новостей и начало воспроизведения текущего трека в ожидании

PAL.WaitForTime('+00:00:04'); // 4 сек. ожидания (не изменять)

DeckA.Volume := 255; // возврат положения громкости DeckA в нормальное состояние
DeckB.Volume := 255; // возврат положения громкости DeckB в нормальное состояние

{Дополнительная функция: по желанию вы можете удалить все нижние строчки сценария}

{накладка на текущий трек голоса ведущего}
PAL.WaitForTime('+00:00:04'); // 4 сек. ожидания (не изменять)

P := Aux1; // через что играть
if P <> nil then
begin
Song := Cat['music-good'].ChooseSong(1,NoRules); // Голос ведущего о продолжении эфира и так далее ... (ваш джингл без фона)
if Song <> nil then
begin
Aux1.QueueSong(Song);
Aux1.Play
End;
End;
{После завершения сценария скрипт завершает свою работу}


Настройка скрипта аналогично первой версии 1.5

В этой версии небольшое дополнение но слушается более эффектно!
необходимо подготовить два джингла, один фоновый и второй с голосом ведущего (ваш текст)
для удобства готовые джинглы можете вложить в туже папку где лежат файлы отбивки часов C:\CLOCK\
название файлов могут быть любые, это роли не играет ... например: end-sound.mp3 и next-sound.mp3
после этого необходимо создать две категории ( 'end-news' и 'music-good' например в разделе Other (другое)
**********
вложить ваши файлики по одному в соответствующую категорию из C:\CLOCK\.......mp3 (ваши имена файлов)

всё на этом настройка закончена. Желаю удачи!

Отредактировано wisher - 15.01.2015
4
Dim @Dim
Владимирович пишет:

скрипт ретрансляции ни у кого не завалялся?
хотелось бы сделать чтоб допустим с с 0:00 до 8:00 играло интернет радио, после 8:00 брал треки из библиотеки.
как так сделать и возможно ли?буду благодарен :)

Меня такое тоже интересует.

53
wisher @wisher
Dim пишет:

Владимирович пишет:

скрипт ретрансляции ни у кого не завалялся?
хотелось бы сделать чтоб допустим с с 0:00 до 8:00 играло интернет радио, после 8:00 брал треки из библиотеки.
как так сделать и возможно ли?буду благодарен :)

Меня такое тоже интересует.


Dim, если ты уже знаком более или менее пользованием SAM Broadcaster... так вот, в программе есть встроенный "планировщик"
допустим (кнопка Avto DJ включена) ты вешаешь свои треки с правилами ротации в обычном режиме и чтоб приостановить их работу на определённое время достаточно зайти в планировщик создать сценарий: выбрать путь к URL радиостанции указать время запуска и дни недели в ручную прописать после URL такую строчку ActivePlayer.FadeToNext;

приблизительно будет выглядеть так:
Queue.AddURL('http://36.90.122.89:8000', ipTop);
ActivePlayer.FadeToNext;


так идём далее, точнее чтобы остановить вещание с переходом в обычный режим создаём ещё один сценарий, тоже как и первый выбираем нужное время и так дал... в пустом окне пишем в ручную ActivePlayer.FadeToNext;
и всё, конечно можно и по другому поступить просто подсунуть Планировщику готовый текст .......Pal
если это для тебя не понятно и тяжело, тогда постараюсь чё нить сматерить более готовое, Хорошо!

Отредактировано wisher - 20.04.2015
53
wisher @wisher
Вот, вроде всё получилось! ( Ретрансляция внешнего URL потока с 0:00 ночи до 8:00 утра)


PAL.Loop := True; // Скрипт будет выполнятся постоянно
// -----------------------------------------------------------------------------
// Не изменяйте код ниже этой линии, если вы не уверены, в том, что вы делаете!
// -----------------------------------------------------------------------------
var WeekDayW1 : Boolean; // W1 = Working1 (1 сценарий)
var WeekDayW2 : Boolean; // W2 = Working2 (2 сценарий)
///////////////////////////// 1 сценарий ///////////////////////////////////////
var Working1Start : string = '23:58:00'; // Старт (Время не изменять)
var Working1End : string = '23:59:59'; // Стоп (Время не изменять)
// -----------------------------------------------------------------------------
///////////////////////////// 2 сценарий ///////////////////////////////////////
var Working2Start : string = '00:00:01'; // Старт (Время не изменять)
var Working2End : string = '23:58:00'; // Стоп (Время не изменять)
////////////////////////////////////////////////////////////////////////////////
// -------------------------- начало 1 сценария --------------------------------
// Старт (Working1) Работа во все дни недели по Будням и Выходным
WeekDayW1 := ((DayOfWeek(Now) = Monday) or // понедельник
(DayOfWeek(Now) = Tuesday) or // вторник
(DayOfWeek(Now) = Wednesday) or // среда
(DayOfWeek(Now) = Thursday) or // четверг
(DayOfWeek(Now) = Friday) or // пятница
(DayOfWeek(Now) = Saturday) or // суббота
(DayOfWeek(Now) = Sunday)); // воскресенье
while (WeekDayW1) and (now >= T[Working1Start]) and (now <= T[Working1End])
do
begin
{-----}PAL.WaitForTime('23:59:46'); // Время точного запуска сценария
{ Можно изменить только секунды. Пример: 23:59:06, 23:59:16, ... до 23:59:56 }
//------------------------------------------------------------------------------
{ Путь URL внешнего источника стрима }
{ Добавляем в начало очереди другой поток если основной не доступен}
{--------------}Queue.AddURL('http://xx.xx.xx.xx:8000/stream2',ipTop); // 2 поток (дополнительный)
{ Путь где лежит Джингл-Заставка о начале внщания стрима}
{--------------}Queue.AddFile('C:\show\start-00-00.mp3',ipTop);
{ Перевод в режим плавного переключения }
{--------------}ActivePlayer.FadeToNext;
{ Добавляем в начало очереди основной поток}
{--------------}Queue.AddURL('http://36.90.122.89:8000',ipTop); // 1 поток (основной)
//------------------------------------------------------------------------------
{-----}PAL.WaitForTime(Working1End); {Ожидание завершения сценария}
//------------------------------------------------------------------------------
WeekDayW1 := False; {Одноразовый цикл работы}
end; // Стоп (Working1)
// ---------------------------- конец 1 сценария -------------------------------
////////////////////////////////////////////////////////////////////////////////
// ---------------------------- начало 2 сценария ------------------------------
// Старт (Working2) Работа во все дни недели по Будням и Выходным
WeekDayW2 := ((DayOfWeek(Now) = Monday) or // понедельник
(DayOfWeek(Now) = Tuesday) or // вторник
(DayOfWeek(Now) = Wednesday) or // среда
(DayOfWeek(Now) = Thursday) or // четверг
(DayOfWeek(Now) = Friday) or // пятница
(DayOfWeek(Now) = Saturday) or // суббота
(DayOfWeek(Now) = Sunday)); // воскресенье
while (WeekDayW2) and (now >= T[Working2Start]) and (now <= T[Working2End])
do
begin
{-----}PAL.WaitForTime('07:59:46'); // Время точного запуска сценария
{ Можно изменить только секунды. Пример: 07:59:06, 07:59:16, ... до 07:59:56 }
//------------------------------------------------------------------------------
{ начало обычного вещания }
{--------------}Queue.Clear; { Очищаем плейлист }
{ Ставим 2 трека в начало очереди из категории The-Best-Songs }
{--------------}Cat['The-Best-Songs'].QueueTop(smMRPA, EnforceRules);
{--------------}Cat['The-Best-Songs'].QueueTop(smMRP, EnforceRules);
{ Путь где лежит Джингл-Заставка о начале обычного вещания}
{--------------}Queue.AddFile('C:\show\start-08-00.mp3',ipTop);
{ Перевод в режим плавного переключения }
{--------------}ActivePlayer.FadeToNext;
//------------------------------------------------------------------------------
{-----}PAL.WaitForTime(Working2End); {Ожидание завершения сценария}
//------------------------------------------------------------------------------
WeekDayW2 := False; {Одноразовый цикл работы}
end; // Стоп (Working2)
// ---------------------------- конец 2 сценария -------------------------------
////////////////////////////////////////////////////////////////////////////////
/////// По окончании всей работы происходит повтор выполнения скрипта //////////


Какие либо изменения в скрипте, производить очень внимательно!

Queue.AddURL('http://36.90.122.89:8000',ipTop); путь к внешнему источнику изменить на свой

Две строки об указании пути к Джинглам-Заставки если кому это не нужно, можно просто удалить из скрипта
Имя категории где лежат треки, меняем на ваши названия категорий. Желаю Удачи!

Отредактировано wisher - 03.06.2015
15
Till @Till
Всем привет. Для вставки джингла использую простой скриптик.

PAL.Loop := True;
PAL.WaitForPlayCount(3);
CAT['Station IDs (All)'].QueueTop(smRandom, NoRules);

Но на пои IDшки не работает fade in и fade out. Т.е. начинаются и обрываются резко. В настройках каждого трека настройки затухания выставлены общие, но, почему-то не работают. Подскажите, в чём может быть проблема? Заранее спасибо

53
wisher @wisher
Till пишет:

Всем привет. Для вставки джингла использую простой скриптик.

PAL.Loop := True;
PAL.WaitForPlayCount(3);
CAT['Station IDs (All)'].QueueTop(smRandom, NoRules);

Но на пои IDшки не работает fade in и fade out. Т.е. начинаются и обрываются резко. В настройках каждого трека настройки затухания выставлены общие, но, почему-то не работают. Подскажите, в чём может быть проблема? Заранее спасибо


Возможно у тебя джинглы очень короткие по длине, у меня тоже была такая подобная проблема к примеру джингл около 8-10 сек. конечно же этого мало для фейдинга, так что я увеличил их в аудио-редакторе добавил около 3-4 сек в начале и в конце лёгкий тональный фон уменьшив громкость (опытным путём), так чтобы при вещании этот фон не было сильно заметно, и всё стало хорошо работать, таким образом я все свои джинглы- заставки обработал в аудио-редакторе! Теперь всё чётко работает! Удачи!

Отредактировано wisher - 25.05.2015
1
milkyway @milkyway
Добрый день, есть ли скрипт который запускает в определенное время определенный звуковой файл(принудительно),и чтоб такое повторялось в разные промежутки всего дня, например в 9:45 в 10:00 в 10:35 и 12 30.
Есть ли возможность с паузы запустить так называему вставочку(которую я выше описал) и остановить воспроизведение, а потом снова в например в 12 часов дня снова запустить из паузы и снова остановить воспроизведение.

Отредактировано milkyway - 29.05.2015
53
wisher @wisher
milkyway пишет:

Добрый день, есть ли скрипт который запускает в определенное время определенный звуковой файл(принудительно),и чтоб такое повторялось в разные промежутки всего дня, например в 9:45 в 10:00 в 10:35 и 12 30.
Есть ли возможность с паузы запустить так называему вставочку(которую я выше описал) и остановить воспроизведение, а потом снова в например в 12 часов дня снова запустить из паузы и снова остановить воспроизведение.


Привет milkyway! по идее всё можно реализовать, не совсем понятно что нужно, если можно поточнее опиши ...
допустим у тебя что-то играет в деках и что необходимо? остановить всё, или наложить поверх играющего трека какую-то заставку
вообщем опиши весь сценарий который тебе нужен и всё что происходит у тебя при работающем SAM Broadcaster.
конечно-же если бы ты привёл какой-то готовый пример уже из существующих скриптов, чтоб осталось только изменить под тебя.
есть ещё и другой вариант, просмотреть все странички этой темы возможно что-то похожее уже есть на форуме.

6
Ares @Ares
Доброго времени суток)
Вопрос такой, как можно отключить выполнение скрипта в определенное время, чтобы он постоянно в цикле не крутился. Запуск его будет по шедуллеру. Спасибо)

53
wisher @wisher
Ares пишет:

Доброго времени суток)
Вопрос такой, как можно отключить выполнение скрипта в определенное время, чтобы он постоянно в цикле не крутился. Запуск его будет по шедуллеру. Спасибо)


Ares! основным правилом любого скрипта отвечает эта строчка

PAL.Loop := True; // Постоянный цикл работы скрипта
меняем на эту
PAL.Loop := False; // Одноразовый цикл работы скрипта


и теперь остаётся только установить какие-то параметры на отключение
существует несколько видов то ли указать время действия к примеру так
if (now >= T['09:59:00']) and (now <= T['10:59:00']) then
begin
..............
end;


или выставить задержку на отключение через
какой-то промежуток времени к примеру так
PAL.WaitForTime(T['+00:30:00']); // 30 минут

приблизительно так....
Ares, похожих скриптов для тебя в этой теме есть, посмотри к примеру на 16 странице... удачи!

85
YNC @pluta
Ruskat пишет:

Всем привет! Нужен был скриптик для рекламы. Получилось вот так в тесте:
var P : TPlayer;
var Song : TSongInfo;
var strRekB, strRekE : String;

//скрипт будет выполнятся постоянно(многократно)
PAL.Loop := True;
//ставим задержку на 30 минут
PAL.WaitForTime('+00:00:10');
strRekB := 'L:\Ruskat\Моя музыка\ZED-fm\часы\start_hour.mp3'; //Путь к началу рекламы
//выбираем трек наугад
Song := CAT['Фильмы-мульты'].ChooseSong(smRandom,NoRules);
//добавляем его в начало очереди
strRekE := 'L:\Ruskat\Моя музыка\ZED-fm\часы\start_hour.mp3'; //Путь к концу рекламы
//Задаём последовательность и место вставки в Queue.
Queue.AddFile(strRekB, ipBottom); // Начало. Интро. Реклама на таком-то радио...
Queue.Add(Song, ipBottom); // сама реклама (вывод 1 трека)
Queue.AddFile(strRekE, ipBottom); // Конец рекламы. Это была реклама на таком-то радио...
if P <> nil then
begin
Queue.AddFile(strRekB, ipTop);
Queue.AddFile(strRekE, ipTop);
P := ActivePlayer;
if P <> nil then P.FadeToNext;
end;

=======
Как в параметре Queue.Add(Song, ipBottom); // сама реклама мне указать, сколько треков нужно случайным образом брать из категории? Берёт один.


wisher, ты можешь этот скрипт доделать? нужно что-бы две и больше рекламных вставки вставлялось

53
wisher @wisher
приветик pluta!
как добавить один, два трека или три и какой параметр я не в курсе, для меня вот эти теги Queue.Add или Song := CAT не сосем понятны и сложны. я по проще всё использую у себя... более стандартно и полегче вот к примеру я бы добаваил после строчки Queue.Add(Song, ipBottom);


.........................................................
Queue.AddFile(strRekB, ipBottom); // Начало. Интро. Реклама на таком-то радио...
Queue.Add(Song, ipBottom); // сама реклама (вывод 1 трека)

простой путь к категории без тегов
CAT[Фильмы-мульты].QueueBottom(smLemmingLogic,NoRules); // 2 трек
CAT[Фильмы-мульты].QueueBottom(smRandom,NoRules); // 3 трек
и так далее...

Queue.AddFile(strRekE, ipBottom); // Конец рекламы. Это была реклама на таком-то радио...
.........................................................


возможно это то, что тебе нужно!

53
wisher @wisher
приветик pluta!
как там у тебя успехи? подходит тебе такой вариант?

85
YNC @pluta
привет, да подходит , все замечательно работает

53
wisher @wisher
pluta пишет:

привет, да подходит , все замечательно работает


вот и отлично! успехов тебе!

53
wisher @wisher
Предлагаю всем желающим, на мой взгляд, интересный скрипт, на целый год! с запуском готовых предварительно составленных ваших плейлистов, время работы скрипта ежечасно в течении суток и всего года. конечно-же его можно использовать для чего угодно и не только ежечасно, если изменив параметры работы и время запуска, и запускать через планировщик в любое нужное вам время, дни недели и так далее ...

PAL.Loop := True; // Скрипт будет выполнятся постоянно
//------------------------------------------------------------------------------
{--}PAL.WaitForTime('XX:58:26'); // предварительный запуск сценария
//------------------------------------------------------------------------------
const PlaylistPath = 'C:\Playlist-Radio\'; // путь где находятся плейлисты
const Fileextension = '.m3u' ; // файлы должны иметь цифровое имя xxxx-xx.m3u
//------------------------------------------------------------------------------
var Present: DateTime;
var Year, Month, Day, Hour, Min, Sec, MSec, DayLength, MonthLength, HourLength : Integer;
var HoldDay, TheDay, TheMonth, TheHour, Playlist :String;
var LessThan : Boolean;
//------------------------------------------------------------------------------
{генерирация времени текущего часа}
{--}Present:= Now;
DecodeTime(Present, Hour, Min, Sec, MSec);
Hour := Hour + 1;
if (Hour = 24) then
{--}Hour := 0;
if (Hour = 0) Then
{--}Present:= Now + 1;
{--}writeln ('Получаем плейлист ...');
{--}WriteLn ('');
{генерирация текущей даты и времени в цифровое имя}
DecodeDate(Present, Year, Month, Day);
{--}HoldDay := IntToStr(Day);
{--}TheDay := Copy(HoldDay,1,1);
{--}TheMonth := IntToStr(Month);
{--}TheHour := IntToStr(Hour);
{--}DayLength := length(TheDay);
{--}MonthLength := length(TheMonth);
{--}HourLength := length(TheHour);
// день
LessThan := DayLength < 2;
if (LessThan) Then
{--}TheDay := '0'+ TheDay;
// месяц
LessThan := MonthLength < 2;
if (LessThan) Then
{--}TheMonth := '0'+ TheMonth;
// час
LessThan := HourLength < 2;
if (LessThan) Then
{--}TheHour := '0'+ TheHour;
{завершение генерации имени файла и последующее отображение в дисплее}
Playlist := PlayListPath + TheDay+TheMonth+ '-' + TheHour + Fileextension;
{--}writeln ('Путь где лежит плейлист'); // вывод инфо. на дисплей
{--}writeln (Playlist); // вывод инфо. на дисплей какой плейлист будет сейчас запущен
//------------------------------------------------------------------------------
{--}PAL.WaitForTime('XX:59:26'); // точный запуск сценария
//------------------------------------------------------------------------------
if(FileExists(Playlist))then
begin
{--}Queue.Clear; // очищаем очередь от треков
{--}Queue.AddList(Playlist,ipBottom); // ставим текущий плейлист в очередь
{--}ActivePlayer.FadeToNext; // плавный переход заврешения играющего трека и начало воспроизведения
{--}WriteLn('Воспроизведение: ' +TheDay+TheMonth+ '-' + TheHour + Fileextension); // вывод инфо. на дисплей
end
else {если плейлист на текущюю дату не доступен запускаем резервный плейлист}
begin
{--}WriteLn ('');
{--}WriteLn ('Плейлист на текущую дату'); // вывод инфо. на дисплей
{--}WriteLn ('под номером ' +TheDay+TheMonth+ '-' + TheHour + Fileextension); // вывод инфо. на дисплей
{--}WriteLn ('Не Доступен!'); // вывод инфо. на дисплей
//------------------------------------------------------------------------------
{--}WriteLn ('');
{--}WriteLn ('Запускаем резервный плейлист'); // вывод инфо. на дисплей
{--}Queue.Clear; // очищаем очередь от треков
{--}Queue.AddList('C:\Playlist-Radio\z-playlist.m3u',ipBottom); // ставим резервный плейлист в очередь
{--}Queue.Shuffle; // перемешать плейлист
{--}ActivePlayer.FadeToNext; // плавный переход заврешения играющего трека и начало воспроизведения
{--}WriteLn ('Воспроизведение: z-playlist.m3u'); // вывод инфо. на дисплей
end;
//------------------------------------------------------------------------------
{--}PAL.WaitForTime('+00:01:00'); // 1 мин. ожидания до очистки дисплея от информации


для наглядности работы всего сценария, чтоб лучше изучить его работу в скрипте есть строчки
{--}writeln ........

выводящие информацию на дисплей при редактировании PAL скрипта
после полного изучения и настройки, все строчки {--}writeln ........ вы можете просто удалить

расшифровка цифрового имени плейлиста - ваши фалы должны иметь такой вид: 0806-15.m3u
первые 2 цифры (день), 3 и 4 цифры (месяц) затем символ (минус) и последние 2 цифры (час)
в итоге получаем (день+месяц)-(час).m3u
всё..... удачки всем!

Отредактировано wisher - 28.06.2023