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

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

 

410
Евгений @Drakkar
Всем доброго времени суток! Хотелось бы собрать все знания по скриптам в единый топик, чтоб народ не рыскал по сайту в поисках нужного скрипта. Если тема не приживется, то разрешаю модератору смело её бахать :)! Ну, раз я начал эту тему, то и мне начинать с примерами скриптов, которые я использую в Сэме в графе PAL Scripts. Итак:
1. TitleStreamBanners - выводит на плеера ту информацию, которую ты напишешь в файле txt.
  1. { CONFIGURATION }
  2. {==================================================}
  3. const bannertext_file = 'C:\Program Files\SpacialAudio\SAMBC\PAL\BannerText.txt';
  4. const change_interval = '+00:10:00';
  5. {==================================================}
  6. { IMPLEMENTATION }
  7. {--------------------------------------------------}
  8. var CurSong : TSongInfo;
  9. var UpdSong : TSongInfo;
  10. var Banners : TStringList;
  11. var Toggle : Boolean = True;
  12. var LinePos : Integer = 0;
  13. {Set this script to restart itself}
  14. PAL.Loop := True;
  15. { Create some objects that we will need}
  16. UpdSong := TSongInfo.Create;
  17. Banners := TStringList.Create;
  18. { Load banner lines into stringlist object }
  19. if FileExists(bannertext_file) then
  20. Banners.LoadFromFile(bannertext_file)
  21. else
  22. WriteLn('Banner source file does not exist!');
  23. LinePos := 0;
  24. while (LinePos<Banners.Count) do
  25. begin
  26. {Wait for specified time}
  27. PAL.WaitForTime(change_interval);
  28. {Retrieve the current banner line and assign it to song object}
  29. UpdSong['title'] := Banners[LinePos];
  30. {Tell encoders to update song information:
  31. When Toggle is True, we use the normal song information from
  32. the active player - otherwise we use our banner song object
  33. }
  34. Toggle := not Toggle;
  35. if Toggle then
  36. begin
  37. CurSong := ActivePlayer.GetSongInfo;
  38. Encoders.SongChange(CurSong);
  39. CurSong.Free;
  40. end
  41. else
  42. Encoders.SongChange(UpdSong);
  43. {Move to the next line in the banner file before we continue}
  44. LinePos := LinePos + 1;
  45. end;
  46. {Destroy objects once we no longer need them}
  47. Banners.Free;
  48. UpdSong.Free;
  49. {--------------------------------------------------}

2. Ежечасовая отбивочка, любезно предоставленная форумчанином Курпатовым:
  1. var P : TPlayer;
  2. var Song : TSongInfo;
  3. var strFile, strPath, strJingle : String;
  4. var i : integer;
  5. PAL.Loop := True;
  6. i := ActivePlayer.GetVolume;
  7. P := SoundFX;
  8. strPath := 'C:\CLOCK\'; //путь к папке с отбивкой
  9. PAL.WaitForTime('XX:59:45'); //запускаемся в конце каждого часа
  10. strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3';
  11. Queue.AddFile(strFile, ipTop);
  12. Song := Queue.NextInQueue;
  13. P.QueueSong(Song);
  14. ActivePlayer.Volume := i - 40;
  15. ActivePlayer.Volume := i - 80;
  16. ActivePlayer.Volume := i - 120;
  17. ActivePlayer.Volume := i - 160;
  18. P.Play;
  19. PAL.WaitForTime('+00:00:03');
  20. ActivePlayer.Volume := i - 160;
  21. ActivePlayer.Volume := i - 120;
  22. ActivePlayer.Volume := i - 80;
  23. ActivePlayer.Volume := i - 40;
  24. ActivePlayer.Volume := i;

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

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

5. Скрипт, чтобы песни не заканчивались. Чтоб не было тишины в эфире. (Честно говоря я не совсем понимаю актуальность данного скрипта, когда можно радио в нонстопе поставить на AutoDJ).
  1. var mySong : TSongInfo;
  2. //создаем переменную для обращение к деке
  3. PAL.Loop := True;
  4. //зацикливаем скрипт
  5. if (deckA.Status=1) and (deckB.Status=1) then
  6. //проверяем играет ли что нибудь в деках
  7. begin
  8. mySong := Cat['Music New'].ChooseSong(smRandom, noRules);
  9. //присваеваем случайный трек из категории mp3 в нашу переменную
  10. deckA.QueueSong(mySong);
  11. //запихиваем наш трек в деку
  12. deckA.Play;
  13. //запускаем деку
  14. CAT['Music New'].QueueBottom(smLemmingLogic, NoRules);
  15. //выбираем случайный трек из категории mp3 и кидаем в список следущих
  16. end;

6. Поиск русскоязычных названий. (Не совсем понимаю, зачем он):
  1. <form method="POST" action="playlist.php">
  2. <p>Поиск по названию песни:<br>
  3. <? InputText("search",$search,'',20); ?> <input type="submit" value=" Найти " name="B1"><br />
  4. <?php
  5. echo "Поиск по исполнителю:<br>";
  6. for ($i=ord('0'); $i<=ord('Z'); $i++)
  7. echo '<a href="search2.php?letter='.$i.'">'.chr($i).'</a>';
  8. echo "<br />";
  9. for ($i=ord('А'); $i<=ord('Я'); $i++)
  10. echo '<a href="search2.php?letter='.$i.'">'.chr($i).'</a>';
  11. ?>
  12. <br />Выводить по <? InputCombo("limit",$limit,25,'5,10,25,50,100'); ?> найденных результатов
  13. </p>
  14. </form>

7. Информация о том, кто заказал песню:
  1. var D : TDataSet;
  2. var P : TPlayer;
  3. var Song : TSongInfo;
  4. var S : TSongInfo;
  5. PAL.Loop := true;
  6. procedure pause();
  7. begin
  8. PAL.WaitForTime ('+00:00:07');
  9. end;
  10. S:=TSongInfo.Create;
  11. P:= ActivePlayer;
  12. Song := P.GetSongInfo;
  13. S['artist'] := '';
  14. S['duration'] := 0;
  15. S['title'] := 'Трек: ' + Song['artist'] + ' - ' + Song['title'];
  16. Encoders.SongChange(S);
  17. PAL.WaitForTime ('+00:00:10');
  18. if song['requestid'] > 0 then
  19. D := Query('SELECT * FROM requestlist WHERE ID = :J AND SongID = :I',[Song['requestID'],Song['ID']],true);
  20. if D['name'] <> '' then
  21. begin
  22. S['artist'] := '';
  23. S['title'] := 'От кого: '+D['name'];
  24. S['duration'] := 0;
  25. Encoders.SongChange(S);
  26. PAL.WaitForTime ('+00:00:20');
  27. pause();
  28. end;
  29. if D['msg'] <> '' then
  30. begin
  31. S['artist'] := '';
  32. S['title'] := 'Текст: '+D['msg'];
  33. S['duration'] := 0;
  34. Encoders.SongChange(S);
  35. PAL.WaitForTime ('+00:00:20');
  36. pause();
  37. pause();
  38. end;
  39. D.Free;
  40. P.Free;
  41. Song.Free;

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

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

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

0
1572
KyPIIaToB @KyPIIaToB
Drakkar пишет:

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

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

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

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

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

0
1572
KyPIIaToB @KyPIIaToB
tarasian666 пишет:

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

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

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

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

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

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

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

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

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

0
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
0





Согласие на обработку данных на нашем сайте

Продолжая просматривать страницу, вы соглашаетесь с использованием файлов «Cookie» и с Политикой конфиденциальности «Privacy».
Наверху или внизу страницы вы можете изменить валюту и язык по умолчанию. Английская версия сайта ещё находится в доработке и доступна не полностью.