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

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

 

27
mihtel @mihtel
ребята
нужен скрипт,который определённый m3u файл будет выводить каждый час в начале часа,
но на определённое время,которое можно будет регулировать.
например хочу я по транслировать программу с другого радио,а она начинается в 18:00
я забиваю в определённую папку плей лист,он начинает играть в 18:00 через 10 минут отрубается и играют уже песни,которые у меня забиты в семе.
если кто может написать такой скрипт,могу заплатить.
так как я в пале не шарю совсем.
зарание спасибо

243
Владислав @VladokZzz
mihtel пишет:

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


Задача реализуема в простом Шедулере

27
mihtel @mihtel
VladokZzz пишет:

mihtel пишет:

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


Задача реализуема в простом Шедулере

а можно подробнее?
я даже не знаю,о чём Вы

243
Владислав @VladokZzz
Открываешь Event Sheduler
Добавляешь новый ивент
Выбираешь Add files to Queue и там есть URL или Playlist

27
mihtel @mihtel
VladokZzz пишет:

Открываешь Event Sheduler
Добавляешь новый ивент
Выбираешь Add files to Queue и там есть URL или Playlist

влад а ты мог бы помочь?
хотябы за вознаграждение?
я просто совсем без зрения,я даже не знаю,где взять то,о чём ты пишешь.

19
vitmain @vitmain
mihtel






27
mihtel @mihtel
vitmain пишет:

mihtel






ребята,ну не вижу я совсем!
если кто может помочь ну киньте как и что делать,а
главное,где взять то,о чём тут так октивно пишут последние несколько сообщений?
изображения конечно хорошо,но мне их извените за прямоту смотреть нечим.

27
mihtel @mihtel
ребята держите,кому нужно
// Планировщик запуска файлов v 1.1 :
// Справка по настройке скрипта находится в подвале кода

var Time, str, PlayerMode, scheduler, FName: string;
var P: TPlayer;
var Song: TSongInfo;
var s, q, w: integer;

PAL.Loop := True;

PAL.WaitForTime('XX:XX:40'); // запускаемся в конце каждой минуты

Time:= FormatDateTime('hh:nn', now+1/1440);
FName:= '';
scheduler:= '';
q:= 0;

repeat
q:= q+1;
Case Time of
// планировщик запуска файлов:
//'XX:15': scheduler:= 'Q/D:\Radio\Jingles\соц. реклама\соц. реклама 1.wav';
//'XX:45': scheduler:= 'Q/D:\Radio\Jingles\соц. реклама\соц. реклама2.mp3';
//'XX:00': scheduler:= 'Q/D:\Radio\Jingles\для рекламы программы.wav';
'XX:28': scheduler:= 'Q/D:\Radio\Jingles\music life - музыка которую слушают.mp3';
'15:58': scheduler:= 'FTN/D:\Radio\Jingles\помните на тлене растут деревья.mp3';
'15:59': scheduler:= 'fts';
'XX:20': scheduler:= 'mf/D:\Radio\Jingles\вы устали от цивильной жизни (голос RMS -6db) v1.wav';
'XX:40': scheduler:= 'mf/D:\Radio\Jingles\вы устали от цивильной жизни (голос RMS -6db) v1.wav';
'XX:00': scheduler:= 'q/D:\Radio\Jingles\вы устали от цивильной жизни v1.wav';

end; // case
if q= 1 then
for s:= 1 to 2 do Time[s]:= 'X';
until (scheduler<>'') or (q=2);

if scheduler<> '' then begin
scheduler:= AnsiLowerCase(scheduler);
// парсим параметры
str:= '';
w:= 0;
PlayerMode:= '';

scheduler:= scheduler+ '/';
For q:= 1 to length(scheduler) do begin
if scheduler[q]<> '/' then str:= str+scheduler[q]
Else begin
Case w of
0: PlayerMode:= str;
1: FName:= str;
end; // case
str:= '';
w:= w+1;
end; // else
end; // For q

// режимы проигрывания
Case PlayerMode of
'q': Queue.AddFile(FName, ipTop); // ставим в очередь

'ftn': begin
P := Aux1;
if P <> nil then
begin
Queue.AddFile(FName, ipTop);

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

end;
end; // проигрываем через Fade To Next

'm': begin
P := SoundFX;

if P <> nil then
begin
Song := CAT['Sound FX (All)'].ChooseSong(smRandom, NoRules);
if Song <> nil then
begin
P.QueueSong(Song);

P.Play;
end;
end;

end; // миксуем трек

'ftp': begin
P:= DeckA;
P.FadeToPlay; end;

'fts': ActivePlayer.FadeToStop;

'mf': begin
P := SoundFX;
if P <> nil then begin
Queue.AddFile(FName, ipTop);
Song:= Queue.NextInQueue;
if Song <> nil then begin
P.QueueSong(Song);
P.Play;
end;
end;
//rewrited by beqa
end; // mf. миксуем файл на играющий трек

end; // case
end; // scheduler<>''


{ инструкция по использованию планировщика запуска файлов:

подключите к SamBroadcaster файл скрипта - scheduler.pal .
можете сразу отметить его авто запуск, поставив флажок на:
"Automatically start script".
впишите в редактор полный путь к скрипту. например:
Script source file
C:\Program Files\SpacialAudio\SAMBC\PAL\scheduler.pal
перейдите на jaws курсор и нажмите кнопку - OK.
после этого скрипт будет подключен, а также запускаться автоматически при запуске Сэма.
далее настраиваем планировщик.
описание:
планировщик может запускать медиа файлы непосредственно с диска.
умеет стартовать плеер (чтобы это сработало нужно после запуска сэма запустить по F1 проигрывание , и сразу остановить его - F3.
видимо чтобы это работало нужен запуск энкодера. после этого скрипт уже может стартовать воспроизведение в указаное в нем времени).
может останавливать плеер.
может ставить в очередь файл с диска.
может миксовать в случайном порядке файлы из папки "Sound FX (All)".
также может миксовать файл с диска, на играющий трек.
понимает как абсолютное , так и относительное время.

не рекомендуется изменять код скрипта, во избежание глюков в работе оного.
скрипт распространяется совершенно бесплатно.
и предлагается - как есть..

настройка планировщика:

открываем в обычном блокноте файл скрипта - scheduler.pal
находим строку:
---
Case Time of
// планировщик запуска файлов:
--
после коментария - "планировщик запуска файлов", пишем программу запуска..
не выходя за операторную скобку - "end; // case"
иными словами - ваш код находится внутри этой скобки.
синтаксис ваших команд следующий:

['HH:MM': scheduler:= 'PlayerMode/FileNamePath';]
левую и правую квадратные скобки не вписываем..
в левой части командной строки вписывается время срабатывания в минутах и часах, в правой действие проигрывателя.
часы и минуты обязательно указываются двусимвольными.
например - "02:05".
HH - означают часы.
MM - означают минуты.
если например нужно, чтобы файл проигрывался каждый час в двадцать пять минут,
тогда вместо абсолютных часов вписываем - "XX" , только большими буквами.
тоесть полная запись будет такая - "'XX:25':" , без кавычек разумеется.
все знаки апострофа обязательны (литерал).

"scheduler:=" - зарезервированное слово - переменная: string;
ей присваивается выражение - "PlayerMode/FileNamePath"

PlayerMode - режим проигрывания плеера.
FileNamePath - полный путь к медиа-файлу

PlayerMode может иметь следующие параметры:
"q" - поставить файл в очередь за играющим в данный момент треком.
"ftn" - остановить играющий трек и проиграть указанный файл (FadeToNext (фейд уменьшения на фейд увеличения))
"m" - миксовать случайно выбранный трек из "Sound FX (All)" на играющий трек
"mf" - миксовать файл на играющий трек
"ftp" - включить воспроизведение трека вверху очереди в списке Queue
"fts" - остановить играющий трек.

FileNamePath имеет только один параметр - полное указание пути к медиа-файлу (относительный путь не прокатит).
если в параметре PlayerMode вы указываете - "m", "ftp", "fts", то вписывать параметр "FileNamePath" не нужно..

полный пример написания:

'XX:25': scheduler:= 'q/c:\music\mihtelradio.mp3';
это значит, что файл - mihtelradio.mp3 будет ставится в очередь за играющим в данный момент треком, каждый час в двадцать пять минут.

'19:00': scheduler:= 'ftn/c:\music\news.mp3';
это значит, что файл - news.mp3 прервет в 19:00 играющий в данный момент трек, после сам проиграется и после окончания запустит первый в очереди плей-листа Сэма файл на проигрывание.

'XX:30': scheduler:= 'm';
это значит, что случайно выбранный трек из папки - Sound FX (All), будет микшироваться с играющим треком в 30 минут каждого часа.

'XX:00': scheduler:= 'mf/c:\music\time.mp3';
Это значит, что файл "time.mp3" будет микшироваться с играющим треком каждый час.

'07:00': scheduler:= 'ftp';
это значит, что в 7:00 утра включится плеер и начнет играть первый в очереди списка воспроизведения файл.

'23:59': scheduler:= 'fts';
это значит, что в 23:59 плеер остановит воспроизведение.

обратите внимание, что параметры PlayerMode и FileNamePath разделены знаком - "/".
который является разделителем.
знаки "//" - закомментированная строка.

если допустим у вас введено абсолютное время такое же, как и относительное (это когда минуты равны),
то приоритет срабатывания программы отдается абсолютному времени.

когда плеер остановлен, то скорее всего энкодер не отключается и канал будет занят вашим Сэмом.
поэтому имейте это ввиду! }

27
mihtel @mihtel
// Запуск файла каждый час (отбивка времени)
// а также счетчик дней и часов до нового года.

var P: TPlayer;
var Song: TSongInfo;
var D: DateTime;
var ClockFile, ClockPath, DayFile, UDayPath, DayPath, UHourPath, UHourFile: String;

// прописываем пути к джинглам
ClockPath:= 'd:\Radio\DateTime\CLOCK\'; // Путь к папке, где лежат отбивки часов
UDayPath:= 'd:\Radio\DateTime\days_before_new_year\'; // путь к папке, где лежат дни до нового года
DayPath:= 'd:\Radio\DateTime\days_new_year\'; // путь к папке, где лежат дни нового года
UHourPath:= 'd:\Radio\DateTime\hours_before_new_year\'; // путь к папке, где лежат часы до нового года

PAL.Loop := True;

PAL.WaitForTime('XX:00:00');

P:= Aux1;
if P <> nil then
begin

D:= Now+ 0/24; // системное время плюс смещение
DayFile:= '';
UHourFile:= '';

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

Case FormatDateTime('m', D) of
'1': DayFile:= DayPath + FormatDateTime('d', D) + '.mp3';
'12': begin
DayFile:= UDayPath + IntToStr(31- StrToInt(FormatDateTime('d', D))) + '.mp3';
if FormatDateTime('d', D)= '31' then
UHourFile:= UHourPath + IntToStr(24- StrToInt(FormatDateTime('h', D))) + '.mp3';
end; // 12
end; // case

if UHourFile<> '' then Queue.AddFile(UHourFile, ipTop);
if DayFile<> '' then Queue.AddFile(DayFile, ipTop);
Queue.AddFile(ClockFile, ipTop);
Queue.AddFile(ClockPath+'start_hour.mp3', ipTop);

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

end;

27
mihtel @mihtel
скрипт на лайнер:

var Song : TSongInfo;
var P : TPlayer;

PAL.Loop := False;
PAL.WaitForTime('+00:00:00:00');
P := SoundFX;

if P <> nil then
begin
Song := CAT['Sound FX (All)'].ChooseSong(smRandom, NoRules);
if Song <> nil then
begin
P.QueueSong(Song);
//P.Play;
P.FadeToPlay;

PAL.WaitForPlayCount(1);
DeckA.Play;
end;
end;

27
mihtel @mihtel
а таким скриптом я вывожу рекламу в эфир:
PAL.Loop := True;
PAL.WaitForPlayCount(10);
CAT['Promos (All)'].QueueTop(smRandom, NoRules);

19
vitmain @vitmain
mihtel, PAL.WaitForPlayCount(10);
Это значит, что после каждой 10-ой песни запускается файл из категории 'Promos'?

Я правильно понял?

2
ansaval @ansaval
Вот, кому нужно, после долгих мучений(слабо разбираюсь в программировании), допилил скрипт отбивки времени ( часа ) кто как называет...

var P : TPlayer;
var Song : TSongInfo;
var strFile, strPath, strJingle : String;

PAL.Loop := True; // Закольцуем срабатывание скрипта

P := SoundFX; // Проигрывание файлов **-00.mp3 через SoundFX, а не через деки.

strPath := 'D:\TIME\'; // Папка где должны находиться файлы MP3 в формате "XX-00.mp3" (XX - это от 00 до 23 - 24 файла для каждого часа отдельно в папке D:\TIME\ )
PAL.WaitForTime('XX:59:24'); // Скрипт сработает на 59 минуте 24 секунде текущего часа
strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3'; // Собственно строка которая угадывает какой файл нужно выбирать в конце часа
Queue.AddFile(strFile, ipTop); // Добавка файла временной отбивки в очередь
Song := Queue.NextInQueue; // трудно объяснимое =)
P.QueueSong(Song); // трудно объяснимое =)

ActivePlayer.FadeToPause; // А вот самое интересное... То что сейчас проигрывается ставится с фейдингом на паузу
P.Play; // Начинает проигрываться наш файл XX-00.mp3
PAL.WaitForTime('+00:00:30'); // Фай у меня на 30 сек. , так что подгоняйте под своё время =)
QueuedPlayer.FadeToPlay; // Снимается с паузы дека A или B - не важно, и трек проигрывается дальше...

Если кому подойдет, был рад помочь добрым людям =)

6245
Тарас @tarasian666

Queue.AddFile(strFile, ipTop); // Добавка файла временной отбивки в очередь
Song := Queue.NextInQueue; // трудно объяснимое =)
P.QueueSong(Song); // трудно объяснимое =)

трудно обьяснимое и ненужное ) зачем добавлять в очередь если можно сразу всунуть в soundfx ?

2
ansaval @ansaval
tarasian666 пишет:


Queue.AddFile(strFile, ipTop); // Добавка файла временной отбивки в очередь
Song := Queue.NextInQueue; // трудно объяснимое =)
P.QueueSong(Song); // трудно объяснимое =)

трудно обьяснимое и ненужное ) зачем добавлять в очередь если можно сразу всунуть в soundfx ?

А можно поподробнее... чет пока в голову не приходит, как же именно сразу всунуть в soundfx ?
По сей идее эта отбивка и так работает, но все же хочется доработать до идеала... что можете посоветовать?
Дайте пожалуйста маленькую наводку... Где рыть?! =)

Отредактировано ansaval - 01.08.2013
2
saxell @saxell
Приветствую всех!

Долго читаю этот форум и вот назрела необходимость обратиться с вопросом за помощью.
Друзья, есть вот такой скрипт:


var P : TPlayer;
var Song : TSongInfo;
var strFile, strPath, strJingle : String;

strPath := 'C:\Users\saxell\Desktop\Jingles\'; // Ïóòü ê ïàïêå, ãäå ëåæàò îòáèâêè ÷àñîâ
strJingle := 'C:\Users\saxell\Desktop\Jingles\EuropeRussia-reklama.mp3'; //Ïóòü è íàçâàíèå äæèíãëà ïîñëå îòáèâêè ÷àñîâ

PAL.Loop := True;

PAL.WaitForTime('XX:59:45'); //çàïóñêàåìñÿ â êîíöå êàæäîãî ÷àñà. 45 ñåê - âðåìÿ áóôåðåçàöèè, ïîäáèðàåì ïî ñâîì ïàðàìåòðàì, âêóñàì

strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3'; //îïðåäåëÿåì íàçâàíèå ôàéëà ñ íóæíûìè ÷àñèêàìè. Ôîðìàò èìåíè ôàéëà XX-XX.mp3

P := Aux1;
if P <> nil then
begin
Queue.AddURL('mms://live.rfn.ru/vesti_fm',ipTop);
PAL.WaitForTime(T['+00:00:15']); //Wait 15 secs
Queue.AddFile(strJingle, ipTop);
Queue.AddFile(strFile, ipTop);

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

end;


Здесь часовая отбивка, далее промо радио, далее новости с внешнего источника. Все работает прекрасно, но вот как сделать, чтобы этот внешний источник играл определенное время? Например 5 минут, а дальше штатный плейлист??

Прошу помощи!!

И вдогонку вопрос. Умеет ли SAM работать по DTMF или по какой-либо другой метке?

Отредактировано saxell - 17.08.2013
163
denis_eskobar @denis_eskobar
А как этот скрипт проигрывания в каждом часе на определенной минуте, привести к тому, чтобы он выбирал любой трек из нужной мне папки и ставил во время, просто сейчас вручную забит файл например REKLAMA20-3 и он ставит только его, а мне нужно, чтобы он гонял Рекламные блоки 1,2,4 и т.д
var P : TPlayer;
var Song : TSongInfo;
var strFile, strPath, strJingle : String;
strPath := 'D:\Jn\2013\';
strJingle := 'D:\Jn\2013\REKLAMA20-3.mp3';
PAL.Loop := True;
PAL.WaitForTime('XX:19:48');
P := Aux1;
if P <> nil then
begin
Queue.AddFile(strJingle, ipTop);

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

end;

31
Wit @Wit
Всем привет, просьба помочь, в запаре опять.

Есть скрипт, который выводит джингл через определенное время
var Song : TSongInfo;

//скрипт будет выполнятся постоянно(многократно)
PAL.Loop := True;
//ставим задержку на 15 минут
PAL.WaitForTime('+00:15:00');
//выбираем трек наугад из "Station IDs" и ставим его вверх очереди
Song := CAT['Jingles_on_air'].ChooseSong(smRandom,NoRules);
//добавляем его в начало очереди
Queue.Add(song,ipTop);

Задача, добавить после джингла трек из категории Hit (CAT['Hit'].ChooseSong(smRandom,NoRules)), пробовал по разному, не идет чтото, выдает ошибку компиляции. Помогите пожалуйста :)

6245
Тарас @tarasian666
как-то так

var Song : TSongInfo;

//скрипт будет выполнятся постоянно(многократно)
PAL.Loop := True;
//ставим задержку на 15 минут
PAL.WaitForTime('+00:15:00');

Song := CAT['Hit'].ChooseSong(smRandom,NoRules);
Queue.Add(Song,ipTop);


//выбираем трек наугад из "Station IDs" и ставим его вверх очереди
Song := CAT['Jingles_on_air'].ChooseSong(smRandom,NoRules);
//добавляем его в начало очереди
Queue.Add(Song,ipTop);


31
Wit @Wit
tarasian666, большое вам спасибо.