How do I run a script on a schedule?Or in an interval of 10 minutes?

ronilio wrote on 7/3/2017, 10:03 AM

Sorry for my English.
Vegas PRO 8.0. There is a script on Jscript that generates an audiofile. It's not like I can not run it on a schedule. Tried through the timer, but as soon as it comes to working with Vegas for example (Vegas.Transport.CursorPosition = new Timecode (0);) everything stops. Here's the code:

import System;
import System.Timers;
import System.Windows.Forms;
import System.IO;
import System.Drawing;
import Sony.Vegas;

var year,month,day,hours,min,sec,dayOfMonth,dayOfWeek;//Переменные для хранения текущего времянм
var tdnem1,tektemp1,xarpog1,nvetra1,svetra1,davl1;//переменные для хранения погоды
var inputDirectory = "C:\\Users\\Alex\\Documents\\погода\\";
var mediaName = "boney.wav";
var outputDirectory = "C:\\Радио\\погода\\текущая погода";
var outputFile = "текущая погода.wav";
var FadeIn = 500;
var FadeOut = 2000;
var foreStart = 2000;
var backLevel = 0.5;

var t1,t2;//Запуск 2 раза в час. t1,t2 -во сколько минут запускать. t1<t2
t1=13;
t2=48;
var t_son; //Время сна
t_son=6000;

var dt = new Date();
year = dt.getFullYear();    
month = dt.getMonth()+1;
day = dt.getDate();
hours= dt.getHours();
min= dt.getMinutes();
sec= dt.getSeconds();
var arMonth : Array = ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"];
dayOfMonth = arMonth[month - 1];
var arDays : Array = ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"];
var dayNum : Number = dt.getDay();
dayOfWeek = arDays[dayNum];

function prothitat (){
if (File.Exists(inputDirectory + "text.txt"))//Если существует файл text.txt
{
var s3 = File.OpenText(inputDirectory + "text.txt");//Открывает его
var s4 = s3.ReadToEnd();                            //Считывает
var s5 = s4.split(",");                             //Записывает значения в массив,разделителем считает запятую
s3.Close();                                         //Закрывает

if (s5.length == 7)
{
   tdnem1 = s5[0].toString();        //Температура, днем
   tektemp1 = s5[1].toString();       //Текущая Температура
   xarpog1 = s5[2].toString();   //Характер погоды
   nvetra1 = s5[3].toString();   //Направление ветра
   svetra1 = s5[4].toString();        //Скорость ветра
   davl1 = s5[5].toString();//Атмосферное давление
}
}
}


//public
 class B  {//extends Vegas {
    var rendererRegexp;
    var templateRegexp;
    
  function test() {
        var timer : System.Timers.Timer = new System.Timers.Timer();
        timer.Interval = t_son;
        timer.AutoReset = true;
        timer.add_Elapsed(elapsed)
        timer.Enabled = true;

      //  var form : Form = new Form();
      //  Application.Run(form);
    }
//  static
function elapsed(source:Object,e:ElapsedEventArgs) {
     prothitat ();
     sformirovat();
    
      var dt = new Date() //Скрипт проснулся,смотрит сколько время    
      min= dt.getMinutes()
      sec= dt.getSeconds()
      MessageBox.Show(year+"."+month+"."+day+"  "+hours+":"+min+":"+sec+" "+tdnem1+" "+xarpog1)
    }
    
    function sformirovat(){
    
    MessageBox.Show("Зашел в процедуру сформировать");
    var track;                                           //Переменная для track для создания звукового файла погоды
    MessageBox.Show("Переменная track");
    Vegas.Transport.CursorPosition = new Timecode(0);    //В Вегасе создаёт тайм код с позицией курсроа на 0-ой секунде
    MessageBox.Show("Новый таймкод");
    var cursor = Vegas.Transport.CursorPosition;         //Переменная cursor для определения положения курсора на таймкоде.
    MessageBox.Show("Курсор");
    track = new AudioTrack();                            
    Vegas.Project.Tracks.Add(track);                     //Добавляет в проект аудио трек
    Vegas.Transport.CursorPosition += Timecode.FromMilliseconds(foreStart); //Смещает позицию таймкода на 2 секунды в право
    Vegas.OpenFile(inputDirectory + "obshie_frasi\\погода в славгороде на сегодня.wav");//Открывает звуковой файл Погода в славгороде сегодня
    Vegas.Transport.CursorPosition--;                                                   //Смещает позицию на 1 влево
    Vegas.OpenFile(inputDirectory + "date\\" + day + "." + month + ".wav");//Открывает зву файл даты
    Vegas.Transport.CursorPosition--;
    Vegas.OpenFile(inputDirectory + "obshie_frasi\\" + dayOfWeek + ".wav");       //Открывает зву файл дня недели(среда), и так далее ... днем...ветер ..темперетура...давление...
    Vegas.Transport.CursorPosition--;
    Vegas.OpenFile(inputDirectory + "obshie_frasi\\днем.wav");
    Vegas.Transport.CursorPosition--;
    Vegas.OpenFile(inputDirectory + "harakter\\" + xarpog1 + ".wav");//
    Vegas.Transport.CursorPosition--;
    Vegas.OpenFile(inputDirectory + "temps\\" + tdnem1 + ".wav");//Температура днем
    Vegas.Transport.CursorPosition--;
    Vegas.OpenFile(inputDirectory + "veter\\" + nvetra1 + ".wav");//Направление ветра
    Vegas.Transport.CursorPosition--;
    if (svetra1 > 0 && nvetra1 != "штиль")
    {
        Vegas.OpenFile(inputDirectory + "skorost_vetra\\" + svetra1 + ".wav");//Скорость ветра
        Vegas.Transport.CursorPosition--;
    }
    Vegas.OpenFile(inputDirectory + "temps vdm\\" + tektemp1 + ".wav");//Текущая Температура
    Vegas.Transport.CursorPosition--;
    Vegas.OpenFile(inputDirectory + "davlenie\\" + davl1 + ".wav");//Атмосферное Давление
    
    var cursor2 = Vegas.Transport.CursorPosition;   //перемнная второг курсора

    var track2 = new AudioTrack();                  //Второй трек
    Vegas.Project.Tracks.Add(track2);               //Добавляет второй трек
    track.Selected = 0;                             //Деактивирует выбор первого трека
    track2.Selected = 1;
    
    
    Vegas.Transport.CursorPosition = cursor;       //Устанавливает курсор второго трека на уровне конца первого

    var media = new Media(inputDirectory + mediaName); //Файл звуковой подложки
    var audioStream = media.Streams.GetItemByMediaType(MediaType.Audio, 0);
            if (null != audioStream) {
                var audioLength = audioStream.Length;
                var audioEvent = new AudioEvent(new Timecode(), audioLength);
                track2.Events.Add(audioEvent);
                var audioTake = new Take(audioStream);
                audioEvent.Takes.Add(audioTake);
            }//Если аудиопоток не пустой обрезает под длину голоса
Vegas.WaitForIdle();

var env = new Envelope(EnvelopeType.Volume);
track2.Envelopes.Add(env);
var env_p1 = new EnvelopePoint(cursor + Timecode.FromMilliseconds(FadeIn), backLevel);//Дальше звуковые эффекты заглушение в конце и начале
var env_p2 = new EnvelopePoint(cursor2, backLevel);
var cursor3 = cursor2 + Timecode.FromMilliseconds(FadeOut);
var env_p3 = new EnvelopePoint(cursor3, 0);
env.Points[0].Y = 0;
env.Points.Add(env_p1);
env.Points.Add(env_p2);
env.Points.Add(env_p3);

    var renderer = FindRenderer(rendererRegexp);
    if (null == renderer) {
        throw "Failed to find renderer";
    }

    var renderTemplate = FindRenderTemplate(renderer, templateRegexp);
    if (null == renderTemplate) {
        throw "Failed to find render template";
    }

var newExtension = renderer.FileExtension.substring(1);
var outputFileName = Path.GetFileNameWithoutExtension(outputFile) + newExtension;
var outputPath = Path.Combine(outputDirectory, outputFileName);

var status = Vegas.Render(outputPath, renderTemplate, cursor, cursor3);//Далее создаётся звуковой файл

        if (status == RenderStatus.Canceled) {
        } else if (status != RenderStatus.Complete) {
            throw "Failed on input file: " + outputFile;
        }
    
    MessageBox.Show("Вышел из процедуры сформировать");
}
    
    function FindRenderer(rendererRegExp : RegExp) : Renderer {
    var rendererEnum : Enumerator = new Enumerator(Vegas.Renderers);
    while (!rendererEnum.atEnd()) {
        var renderer : Renderer = Renderer(rendererEnum.item());
        if (null != renderer.FileTypeName.match(rendererRegExp)) {
            return renderer;
        }
        rendererEnum.moveNext();
    }
    return null;
}

function FindRenderTemplate(renderer : Renderer, templateRegExp : RegExp) : RenderTemplate {
    var templateEnum : Enumerator = new Enumerator(renderer.Templates);
    while (!templateEnum.atEnd()) {
        var renderTemplate : RenderTemplate = RenderTemplate(templateEnum.item());
        if (null != renderTemplate.Name.match(templateRegExp)) {
            return renderTemplate;
        }
        templateEnum.moveNext();
    }
    return null;
}
    
}

var b : B = new B();
b.test();

 

 

Comments

No comments yet - be the first to write a comment...