Рассказ о том как я оптимизировал «Погодный» проект

Здравствуйте.
Вот уже более 10 лет, как я работаю на телевидение. И все эти годы мне каждый день приходилось монтировать прогноз погоды, т.е. каждый день делать одно и то же. Про то, что можно все это оптимизировать, я слышал давно, но у меня даже в мыслях не было, что я могу это сделать сам. + я никогда до этого не использовал скрипты.


Главный «волшебный пендель» я получил в RealTime, на курсе по After Effect. Там просто показали, что скрипты сильно упрощают жизнь, и они совсем не страшны. Показали некоторые и даже написали свой по быстрому (простой скрипт по блокированию афтер эффекта (надо ввести пароль — иначе After просто закроется) — невинная шутка, которой мы потом разыгрывали друзей).

Затем показали, как запустить рендер из командной строки. Вот это и было отправной точкой для дальнейшей оптимизации.

Самая первая оптимизация,

Photoshop + сделать погоду.bat

Весь проект погоды был построен на небольшом фотошоповском файле, куда вносились все данные, а в After Effecte этот файлик был раздербанен на слои, масками порезан и вставлен в нужные места. Поэтому когда я вносил данные в фотошопе, они, при запуске проекта, автоматически появлялись в нем. А так как все пути уже были настроены, то надо было только запустить рендер. Т.е. After открывался только для того, чтобы нажать на рендер. Поэтому был написан коротенький bat файлик с названием «Сделать погоду«, который просто запускал рендер проекта без открытия After Effecta. Это была первая победа над оптимизацией.

Вот он

«путь к aerender.exe» -project «путь к проекту»
EXIT /B — просто закрывает окно после завершения рендера

Проект должен быть полностью настроен, т.е. в очереди просчета должны быть все композиции, готовые для рендера. Фактически тут происходит тоже самое как если бы вы сперва запустили бы After Effect и потом просто нажали на рендер.

Ура. Первая победа одержана.

Но хотелось большего.

Первый код. Жесткий, как удар по яйцам.

Хотелось вносить данные автоматически. И первое о чем подумал — скрипты. Но вместе с этой мыслью пришел и страх: «я же их совершенно не знаю», «даже представления не имею, с чего начинать…», ну и прочие негативные мысли. Но желание оптимизировать было сильнее и поэтому на ум уже начали приходить другие мысли: «где искать информацию?», «с чего начать?», «кто мне может помочь?»

И понеслось…
В RealTime нам дали несколько интересных ссылок на тему скриптов и экспрешенов в After Effect. Но там все на английском, а с этим у меня на тот момент было туго. Первая же ссылка в поисковике привела меня на aeclub.net — документация по скриптам. Прочитал все, от и до (и, честно, до сих пор туда заглядываю). Изучил всю ветку (и новую, и архивную), вытащил оттуда все, что можно было скачать (один проект и 2 скрипта по оптимизации).
Открыл скрипты и, естественно, ничего не понял. Но надо было с чего-то начинать. После консультации с Суворкиным, был получен скрипт rd_GimmePropsPath.jsx (нужнейшая вещь для скриптов, показывает полный путь/название к слою/эффекту/параметру) И вот началось. Для начала разобрал уже имеющиеся скрипты и выделил в них самое главное на тот момент:

как отключить/включить слой

item(5) — это наша искомая композиция (на тот момент я еще не знал про функции, поэтому просто использовал путь, который мне выдавал скрипт rd_GimmePropsPath)

Для считывания данных был выбран формат CSV, т.к. в него можно сохранять из Exel`я, есть разделители и можно редактировать в обычном блокноте

как считать данные из CSV файла

и как вставить полученные данные в нужное место (правда для этого мне пришлось замучить вопросами другого человека, в итоге получил следующее)

По большому счету, это было все, что мне было нужно на тот момент.

В первую очередь, я модернизировал проект, заменив фотошоповские данные на текстовые слои.
Во-вторых, создал шаблон для внесения данных. За основу взял экселевскую таблицу, закрасил все ненужные ячейки, прописал нужные подсказки, выделил ячейки, куда вписывать данные. Это выглядело примерно так:

Я ничего не знал ни о функциях, ни о циклах, поэтому скрипт получился «индийский», каждое действие я прописывал вручную:

сперва отключаем 6 слоев в композиции 1, потом то же самое в композиции 2 и т.д. Далее вписываем данные в нужное место и начинаем включать нужные слои со значками

В общем, в итоге скрипт получился в 800 с лишнем строк. Все жестко — «шаг влево, шаг вправо — расстрел«. Если что-то изменить, то скрипт переставал работать. Но т.к. от всего проекта требовалось только вставить текст и включить/выключить слой, этого было достаточно.
Все это заняло у меня примерно неделю, но зато какая гордость была за свое детище, пусть и уродливое. Радости было… чувство прям.. как будто гору свернул. Я победил! Ну и коллеги оценили. На самом деле ведь не так важно, как написан скрипт — главное, что он работает. И то, что теперь не надо минут по 20 вносить данные ручками.
Первая победа была одержана.

Оптимизация прошла успешно.

P.S. как всегда проект прилагается, правда не тот первый, а уже подредактированный чуток. Много чего там можно было и еще оптимизировать.. но мне было лень.. и так работает.. 🙂