ОсновноеRadiotalkПользовательское
Общие вопросы по интернет радио вещанию
6   •   Посмотреть все темы

Объединенные знания по PAL-Скриптам

 

410
Евгений @Drakkar
Всем доброго времени суток! Хотелось бы собрать все знания по скриптам в единый топик, чтоб народ не рыскал по сайту в поисках нужного скрипта. Если тема не приживется, то разрешаю модератору смело её бахать :)! Ну, раз я начал эту тему, то и мне начинать с примерами скриптов, которые я использую в Сэме в графе PAL Scripts. Итак:
1. TitleStreamBanners - выводит на плеера ту информацию, которую ты напишешь в файле txt.
{ CONFIGURATION }
{==================================================}
const bannertext_file = 'C:\Program Files\SpacialAudio\SAMBC\PAL\BannerText.txt';
const change_interval = '+00:10:00';
{==================================================}


{ IMPLEMENTATION }
{--------------------------------------------------}
var CurSong : TSongInfo;
var UpdSong : TSongInfo;
var Banners : TStringList;
var Toggle : Boolean = True;
var LinePos : Integer = 0;

{Set this script to restart itself}
PAL.Loop := True;

{ Create some objects that we will need}
UpdSong := TSongInfo.Create;
Banners := TStringList.Create;

{ Load banner lines into stringlist object }
if FileExists(bannertext_file) then
Banners.LoadFromFile(bannertext_file)
else
WriteLn('Banner source file does not exist!');

LinePos := 0;
while (LinePos<Banners.Count) do
begin
{Wait for specified time}
PAL.WaitForTime(change_interval);

{Retrieve the current banner line and assign it to song object}
UpdSong['title'] := Banners[LinePos];

{Tell encoders to update song information:
When Toggle is True, we use the normal song information from
the active player - otherwise we use our banner song object
}
Toggle := not Toggle;
if Toggle then
begin
CurSong := ActivePlayer.GetSongInfo;
Encoders.SongChange(CurSong);
CurSong.Free;
end
else
Encoders.SongChange(UpdSong);

{Move to the next line in the banner file before we continue}
LinePos := LinePos + 1;
end;

{Destroy objects once we no longer need them}
Banners.Free;
UpdSong.Free;
{--------------------------------------------------}

2. Ежечасовая отбивочка, любезно предоставленная форумчанином Курпатовым:
var P : TPlayer;
var Song : TSongInfo;
var strFile, strPath, strJingle : String;
var i : integer;

PAL.Loop := True;

i := ActivePlayer.GetVolume;

P := SoundFX;

strPath := 'C:\CLOCK\'; //путь к папке с отбивкой

PAL.WaitForTime('XX:59:45'); //запускаемся в конце каждого часа

strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3';
Queue.AddFile(strFile, ipTop);
Song := Queue.NextInQueue;
P.QueueSong(Song);

ActivePlayer.Volume := i - 40;
ActivePlayer.Volume := i - 80;
ActivePlayer.Volume := i - 120;
ActivePlayer.Volume := i - 160;

P.Play;
PAL.WaitForTime('+00:00:03');

ActivePlayer.Volume := i - 160;
ActivePlayer.Volume := i - 120;
ActivePlayer.Volume := i - 80;
ActivePlayer.Volume := i - 40;
ActivePlayer.Volume := i;

3. Вывод рекламы у Вас на радио:
var Song : TSongInfo;

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

4. Скрипт удаления битых путей файлов:
var D : TDataSet;
D := QUERY('SELECT * FROM songlist',[],True);
PAL.LockExecution;
D.First;
while not D.EOF do
begin
if not FileExists(D['filename']) then
begin
WriteLn('Removing '+D['filename']);
ExecSQL('DELETE FROM songlist WHERE ID = :ID',[D['ID']]);
ExecSQL('DELETE FROM categorylist WHERE songID = :ID',[D['ID']]);
end;
D.Next;
end;
PAL.UnLockExecution;

5. Скрипт, чтобы песни не заканчивались. Чтоб не было тишины в эфире. (Честно говоря я не совсем понимаю актуальность данного скрипта, когда можно радио в нонстопе поставить на AutoDJ).
var mySong : TSongInfo;
//создаем переменную для обращение к деке
PAL.Loop := True;
//зацикливаем скрипт

if (deckA.Status=1) and (deckB.Status=1) then
//проверяем играет ли что нибудь в деках
begin
mySong := Cat['Music New'].ChooseSong(smRandom, noRules);
//присваеваем случайный трек из категории mp3 в нашу переменную
deckA.QueueSong(mySong);
//запихиваем наш трек в деку
deckA.Play;
//запускаем деку
CAT['Music New'].QueueBottom(smLemmingLogic, NoRules);
//выбираем случайный трек из категории mp3 и кидаем в список следущих
end;

6. Поиск русскоязычных названий. (Не совсем понимаю, зачем он):
<form method="POST" action="playlist.php">
<p>Поиск по названию песни:<br>
<? InputText("search",$search,'',20); ?> <input type="submit" value=" Найти " name="B1"><br />
<?php
echo "Поиск по исполнителю:<br>";
for ($i=ord('0'); $i<=ord('Z'); $i++)
echo '<a href="search2.php?letter='.$i.'">'.chr($i).'</a>';
echo "<br />";
for ($i=ord('А'); $i<=ord('Я'); $i++)
echo '<a href="search2.php?letter='.$i.'">'.chr($i).'</a>';

?>
<br />Выводить по <? InputCombo("limit",$limit,25,'5,10,25,50,100'); ?> найденных результатов

</p>
</form>

7. Информация о том, кто заказал песню:
var D : TDataSet;
var P : TPlayer;
var Song : TSongInfo;
var S : TSongInfo;

PAL.Loop := true;

procedure pause();
begin
PAL.WaitForTime ('+00:00:07');
end;

S:=TSongInfo.Create;

P:= ActivePlayer;
Song := P.GetSongInfo;
S['artist'] := '';
S['duration'] := 0;
S['title'] := 'Трек: ' + Song['artist'] + ' - ' + Song['title'];
Encoders.SongChange(S);
PAL.WaitForTime ('+00:00:10');


if song['requestid'] > 0 then

D := Query('SELECT * FROM requestlist WHERE ID = :J AND SongID = :I',[Song['requestID'],Song['ID']],true);

if D['name'] <> '' then
begin
S['artist'] := '';
S['title'] := 'От кого: '+D['name'];
S['duration'] := 0;
Encoders.SongChange(S);
PAL.WaitForTime ('+00:00:20');
pause();
end;

if D['msg'] <> '' then
begin
S['artist'] := '';
S['title'] := 'Текст: '+D['msg'];
S['duration'] := 0;
Encoders.SongChange(S);
PAL.WaitForTime ('+00:00:20');
pause();
pause();
end;

D.Free;
P.Free;
Song.Free;

На этом моя база знаний по PAL-скриптам заканчивается. Кому пригодились эти скрипты, кто использует совершенно другие, кто нашёл в моих скриптах ошибку и т.д. и т.п. - ПИШИТЕ. Составим единую базу скриптов в одном топике.

Отредактировано Drakkar - 15.10.2011
1572
KyPIIaToB @KyPIIaToB
Для тех кто в танке **********

410
Евгений @Drakkar
Ну и что? Там тема разворачивается с 2007 года, а тут тупо готовые решения. Ну если не интересно...

1572
KyPIIaToB @KyPIIaToB
Drakkar пишет:

Ну и что? Там тема разворачивается с 2007 года, а тут тупо готовые решения. Ну если не интересно...

Давайте удалим все темы, создадим новые без обсуждения с готовыми вариантами. Дружище, это форум, тут темы для обсуждения. Кому нужно, тот прочитает тему. Таким образом человек сможет не только найти для себя вариант, но и вникнуть как работает скрипт. А вот такие глупые темы с тупо готовыми вариантами рождает 100500 тупых вопросов по работе этих готовых вариантах.
Чуешь разницу?

6245
Тарас @tarasian666
Drakkar пишет:

а тут тупо готовые решения

для этого есть вот
**********

1572
KyPIIaToB @KyPIIaToB
tarasian666 пишет:

для этого есть вот
********** … anguage%29

Да да, я не однократно давал эту ссылку.

410
Евгений @Drakkar
Понятно. Спасибо. Можно тему удалять ))

15
Горожанин @Горожанин
всем привет! помогите чайнику я так понимаю мне нуже pal script
ЕСТЬ БАЗА ФАЙЛОВ В МОЁМ КОМПЕ. МНЕ НУЖНО ЧТОБЫ КАЖДЫЕ ДВА ЧАСА ПРОГРАММА (SAM BROADCASTER) ВЫБИРАЛА ИЗ НИХ КАЖДЫЙ РАЗ РАЗНЫЙ ФАИЛ ДЛЯ ПРОИГРЫВАНИЯ В ЭФИРЕ В (8:30, 10:30, 12:30 И Т.Д.)

ФАЙЛЫ БУДУТ ДОБАВЛЯТЬСЯ СО ВРЕМЕНЕМ И НУЖНО ЧТОБЫ ПРОГРАММА ВЫБИРАЛА НОВИНКИ ПО МЕРЕ ИХ ПОСТУПЛЕНИЯ

ЗАРАНЕЕ СПАСИБО

15
Горожанин @Горожанин
ДЛЯ МЕНЯ ДЕЛАЮТ 7 ВЫПУСКОВ НОВОСТЕЙ - ПРИСЫЛАЮТ ПО EMAIL Я ИХ СТАВЛЮ В EVENT SCHEDULER КАЖДЫЙ ДЕНЬ.

ВОЗМОЖНО ЧТОБЫ ЧЕЛОВЕК КОТОРЫЙ ПРИСЫЛАЕТ ЭТИ 7 ФАЙЛОВ ГРУЗИЛ ИХ НАПРИМЕР НА FTP, А ПРОГРАММА SAM BROADCASTER ВЫДЁРГИВАЛА ИХ ОТ ТУДА И ПРОИГРЫВАЛА КАЖДЫЙ ВЫПУСК В НУЖНОЕ ВРЕМЯ?

410
Евгений @Drakkar
а можно капсом не писать?

398
ubuntu-studio @ubuntu-studio
Drakkar пишет:


3. Вывод рекламы у Вас на радио:

var Song : TSongInfo;
//скрипт будет выполнятся постоянно(многократно)
PAL.Loop := True;
//ставим задержку на 30 минут
PAL.WaitForTime('+02:44:00');
//выбираем трек наугад
Song := CAT['Promos (All)'].ChooseSong(smRandom,NoRules);
//добавляем его в начало очереди
Queue.Add(song,ipTop);



Извините, конечно.
Если дело дошло до рекламы, то отыгрывать её наугад - форменный идиотизм

Очень хочется посмотреть на рекламодателя ООО "Рога и Копыта" которому абсолютно фиолетово когда выходит его реклама без четкого оговаривания количества, времени и даты выхода.

Отредактировано ubuntu-studio - 05.11.2012