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

Event Shellduler

 

410
Евгений @Drakkar
Запускаю с помощью шелдуллера по расписанию Пал-скрипт в ночное время... В нём ночная отбивка. Но вот как его потом с энкодерса убрать или хотябы нажать стоп... в 6 утра, чтоб больше не играл? Ничо не понимаю.
Добавлено спустя 59 секунд:
Шелдуллер запускает скрипт, но не останавливает его чтоль?

Отредактировано Drakkar - 30.11.2011
1572
KyPIIaToB @KyPIIaToB
Он просто запускает скрипт в заданное время
Значит в скрипте у тебя стоит многократное выполнение PAL.Loop := True;

Отредактировано KyPIIaToB - 30.11.2011
888
Falcon @Falcon
**********

Тут хороший пример

410
Евгений @Drakkar
Иными словами если мне нужно, чтоб скрипт трудился ежедневно только в период с 23-30 до 07-30, то я делаю его таким:
PAL.Loop := True;
var mytime : DateTime = now;
var I : Integer;
var start_time, end_time : DateTime;
start_time := date + EncodeTime(23,30,00,0);
end_time := date + EncodeTime(07,30,00,0);
if DayOfWeek(Now) = Wednessday then
begin
if( mytime >= start_time) and (mytime <= end_time) Then
begin
WriteLn('Canvas Prog Hour!');
Queue.AddFile('C:\CLOCK\non_slip.mp3',ipTop);
cat['Station IDs (All)'].QueueTop(smRandom,NoRules);
PAL.WaitForTime(T['+00:01:00']);
end;
end;

Соответственно сама ночная отбивка в формате non_slip.mp3 должна находится в категории Station IDs (All)
И В принципе мне уже не нужен Event Shellduler.

Только каким образом в этом скрипте будет задаваться частота проигрывания джингла с 23-30 до 07-30 ? :)

Отредактировано Drakkar - 01.12.2011
888
Falcon @Falcon
PAL.WaitForTime(T['+00:01:00']);
Тут стоит задержка на 1 минуту. Увеличь задержку и все

1572
KyPIIaToB @KyPIIaToB
Коряво слепил скрипт ))) Лишь бы ка кто работало )))

410
Евгений @Drakkar
Вот ты такой умный, ни разу не любитель постебаться))) Я как смог, так слепил. У меня знания в этой области ограничены. Вот взял бы и помог...

Falcon Спасибо !

Отредактировано Drakkar - 03.12.2011
410
Евгений @Drakkar
Протестировал скрипт
PAL.Loop := True;
var mytime : DateTime = now;
var I : Integer;
var start_time, end_time : DateTime;
start_time := date + EncodeTime(23,30,00,0);
end_time := date + EncodeTime(07,30,00,0);
if DayOfWeek(Now) = Wednessday then
begin
if( mytime >= start_time) and (mytime <= end_time) Then
begin
WriteLn('Canvas Prog Hour!');
Queue.AddFile('C:\CLOCK\non_slip.mp3',ipTop);
cat['Station IDs (All)'].QueueTop(smRandom,NoRules);
PAL.WaitForTime(T['+00:01:00']);
end;
end;

показывает ошибку компиляции на строке start_time := date + EncodeTime(23,30,00,0);
я уже переделывал эту строку на start_time := date + EncodeTime['23,30,00'];
но ничего не помогло. чувствую, что делаю что то не то. помогите. Он мне нужен для запуска джингла с 23.30 до 07.30 утра

1572
KyPIIaToB @KyPIIaToB
Вообще скрипт настроен на среду у тебя.. Ты его только в среду гоняешь? )

Я так понимаю вот такой вариант тебе нужен

PAL.Loop := True;
var mytime : DateTime = now;
var I : Integer;
var start_time, end_time : DateTime;
start_time := date + EncodeTime(23,30,00,0);
end_time := date + EncodeTime(07,30,00,0);
if( mytime >= start_time) and (mytime <= end_time) Then
begin
Queue.AddFile('C:\CLOCK\non_slip.mp3',ipTop);
cat['Station IDs (All)'].QueueTop(smRandom,NoRules);
PAL.WaitForTime(T['+00:01:00']);
end;

Тебе вообще что нужно? просто ночью через определенное время джингл чтоб играл?
Если просто тупо джингл то пробуй проще так)

PAL.Loop := True;
if (now >= T['23:30:00']) and (now <= T['7:30:00']) Then
begin
Queue.AddFile('C:\CLOCK\non_slip.mp3',ipTop);
PAL.WaitForTime(T['+00:20:00']);
end;

Отпишешься помогло или нет.
PAL.WaitForTime(T['+00:20:00']); Тут пауза, нужное сам поставишь.
Queue.AddFile('C:\CLOCK\non_slip.mp3',ipTop); а это путь к твоему джинглу

Отредактировано KyPIIaToB - 06.12.2011
410
Евгений @Drakkar
KyPIIaToB: Да, мне нужно, чтоб ночью через определённое время играл джингл.
Я протестировал твой скрипт:
PAL.Loop := True;
if (now >= T['23:30:00']) and (now <= T['7:30:00']) Then
begin
Queue.AddFile('C:\CLOCK\non_slip.mp3',ipTop);
PAL.WaitForTime(T['+00:20:00']);
end;

Не работает :(
Он у меня должен начать играть ежедневно с 23-30 до 07-30 утра раз в 20 минут например (как указано в скрипте).
Запустил его, но он не сработал в 23-30. В строке скриптов он показывает running, хотя остальные другие скрипты пишут Waiting fo time (Это я про окошко Pal scripts)
А если в этом окошке два раза кликнуть по скрипту, то в открывшемся окошке Pal Scripting IDE выделяется сначала первая, затем вторая строчка.... затем по новой. И ничего не происходит.
Ведь скрипт должен проигрываться поверх песен?

Отредактировано Drakkar - 07.12.2011
6245
Тарас @tarasian666
Drakkar пишет:

выделяется сначала первая, затем вторая строчка.... затем по новой.

значит now не равно или больше чем T['23:30:00']) и не равно или меьше чем T['7:30:00']

410
Евгений @Drakkar
tarasian666 пишет:

Drakkar пишет:

выделяется сначала первая, затем вторая строчка.... затем по новой.

значит now не равно или больше чем T['23:30:00']) и не равно или меьше чем T['7:30:00']

Брр, 5 раз перечитал, повис вконец )))) Вобщем не понял, что делать нуна.

1572
KyPIIaToB @KyPIIaToB
Drakkar Ты чего тупишь то так жестоко? Ты мыслить вообще не умеешь, полный 0.. Во мля как так людям что можно объяснить не понимаю!

if (now >= T['23:30:00']) and (now <= T['7:30:00']) Then - это правило обычное, если время больше или равно (>=) заданного времени (23:30:00) и меньше или равно (<=) заданного времени (7:30:00) то!
Выполняем дальше скрипт begin , добавляем данный файл в топ Queue Queue.AddFile('C:\CLOCK\non_slip.mp3',ipTop); ждем PAL.WaitForTime(T['+00:20:00']); 20 минут и по кругу..
Если по правилу не проходит, то скрипт перекидывает в конец end;

Ну после такого разжёвывания для децкого ума должен даже самый тупой понять.

888
Falcon @Falcon
Ребята, у него же не описана переменная now
PAL.Loop := True;
var now : DateTime;
if (now >= T['23:30:00']) and (now <= T['7:30:00']) Then
begin
Queue.AddFile('C:\CLOCK\non_slip.mp3',ipTop);
PAL.WaitForTime(T['+00:20:00']);
end;

Вот так должно по идее сработать

1572
KyPIIaToB @KyPIIaToB
Не, на самом деле ошибка в and была

PAL.Loop := True;
var now : DateTime;
if (now >= T['23:30:00']) or (now <= T['7:30:00']) Then
begin
Queue.AddFile('C:\CLOCK\non_slip.mp3',ipTop);
PAL.WaitForTime(T['+00:20:00']);
end;

Вот так должно робить

Отредактировано KyPIIaToB - 07.12.2011
888
Falcon @Falcon
KyPIIaToB пишет:

Не, на самом деле ошибка в and была

PAL.Loop := True;
var now : DateTime;
if (now >= T['23:30:00']) or (now <= T['7:30:00']) Then
begin
Queue.AddFile('C:\CLOCK\non_slip.mp3',ipTop);
PAL.WaitForTime(T['+00:20:00']);
end;

Вот так должно робить

Эмм..как бы нет. Там надо именно AND, чтобы выполнялись оба условия. OR не подходит

1572
KyPIIaToB @KyPIIaToB
Как не странно, оба условия работаю, проверил сам.

PAL.Loop := False;
if (now >= T['23:10:00']) or (now <= T['10:30:00']) Then
begin
Queue.AddFile('D:\1.mp3',ipTop);
PAL.WaitForTime(T['+00:20:00']);
end;

6245
Тарас @tarasian666
если or то условие будет выполняться всегда, в любое время

1572
KyPIIaToB @KyPIIaToB
tarasian666 пишет:

если or то условие будет выполняться всегда, в любое время

Я вроде как написал, что лично проверил путем подстановки времени. Как раз таки с or оба правила работаю как нужно.

6245
Тарас @tarasian666
ну впринципе если оно 22.00 прошлого дня не считает меньше чем 10.30 нынешнего - тогда понятно )
(ну или 22.00 сечас не считает меньше чем 10.30 завтра )