PAL.WaitForTime('+00:00:24'); // 24 сек. ожидания..... не активного плеера...
PAL.WaitForTime('XX:59:46'); // Точное время запуска (подгоняем секунды опытным путём)
PAL.WaitForTime('+00:03:18'); // время ожидания до завершения вещания новостей
PAL.Loop := False; // Одноразовый цикл работы скрипта
PAL.Loop := True; // Скрипт будет выполнятся постоянно
{Запуск скрипта через планировщик установить за 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; {После завершения сценария скрипт завершает свою работу}
Queue.AddURL('http://36.90.122.89:8000', ipTop); ActivePlayer.FadeToNext;
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); путь к внешнему источнику изменить на свой
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 минут
......................................................... Queue.AddFile(strRekB, ipBottom); // Начало. Интро. Реклама на таком-то радио... Queue.Add(Song, ipBottom); // сама реклама (вывод 1 трека) простой путь к категории без тегов CAT[Фильмы-мульты].QueueBottom(smLemmingLogic,NoRules); // 2 трек CAT[Фильмы-мульты].QueueBottom(smRandom,NoRules); // 3 трек и так далее... Queue.AddFile(strRekE, ipBottom); // Конец рекламы. Это была реклама на таком-то радио... .........................................................
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 ........