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

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

Способ 2. Автоматический.

Сервер скачивает файлы по запросу пользователя, автоматически конвертирует их (при необходимости) и добавляет в библиотеку iTunes. Этот способ хорош тем, что практически не требует вмешательства пользователя – достаточно отправить ссылку на файл днем, и вечером фильм в медиатеке iTunes уже ждет, когда его посмотрят. Способ особенно актуален для владельцев Apple TV, так как эти медиа-плееры работают только с медиатекой iTunes, и не «понимают» фильмов разложенных по папкам.

Первая часть механизма аналогична описанному выше – это связка Mail & AppleScript & Speed Download. Поэтому мы сразу перейдем к части, отвечающей за конвертирование поступающего контента и добавление его в медиатеку iTunes. Реализовать это можно в двух вариантах:

Вариант 1. Программа iVI, которая представляет собой решение «все в одном», но имеет существенные недостатки;

Вариант 2. Связка AppleScript & программа iFlicks. Работает в целом лучше, но также имеет некоторые недостатки. Сложнее в реализации для новичков, так как требует привлечения AppleScript.

Начнем с iVI.

iVI – это программа, которая может следить не появились ли в заданной папке (в большинстве случаев – это папка куда скачиваются фильмы) видео-файлы, и в случае их появления, конвертировать их в множество разных форматов и добавлять в библиотеку iTunes. Имеет множество разнообразных настроек, большинство из которых просто лишние, но так как по умолчанию настроена «как попало», требует внимательного пересмотрения всех настроек и их переустановку. Существенным недостатком программы является то, что она просто игнорирует кириллические названия файлов. А так как она еще пытается по названию файла найти его реальное название в международной базе данных фильмов и также ищет обложку фильма, то в случае обработки русско-названных файлов на выходе получаем вообще непредсказуемый результат. Посмотрите внимательно на скриншот – здесь обведены названия файлов и названия, которые нашла для них программа. Также обратите внимание на обложки, которые нашлись для этих файлов:

iVI неправильно определяет информацию если файл назван кириллицей

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

Рассмотрим подробнее настройки iVI. Откройте окно настроек, щелкнув «Settings» в главном окне, или нажав [Cmd]+[,].

На первой вкладке «Devices» отметьте галочками в какой формат нужно конвертировать видео – или Apple TV 2 или Apple TV 3 – в зависимости от того на чем вы будете смотреть, или что-то другое:

iVI настройки

На второй вкладке «General» обязательно снимите галочку «Automatically lookup show information», чтобы программа не пыталась найти информацию о фильме в интернете (чтобы избежать неправильной именовки и случайных обложек), и проследите чтобы стояла галочка «Check iTunes for Duplicates»:

iVI настройки

На третей вкладке «Conversion» можно поиграться с качеством видео/адуио, там все понятно, поэтому скриншот приводить не будем.

На четвертой вкладке «Converted file» нужно выбрать куда помещать отконвертированные файлы, которые распознаны как «Домашнее видео», «Фильм», «Сериал», и «По умолчанию». Убедитесь, что Movies и TV Shows будут добавляться в iTunes. Но помните, что никто не застрахован, что программа может распознать какой-то фильм как «домашнее видео» и вместо того чтобы добавить его в iTunes, положит его на рабочий стол. Поэтому, для «Home movies» можете также указать назначение – iTunes.

iVI настройки

Пятая вкладка «Video Sources». Здесь нужно указать папку, в которой iVI будет периодически искать новые файлы и добавлять их в очередь на конвертацию. Отметьте галочку «Subdirectories», чтобы программа смотрела не только в указанной папке, но и во вложенных папках. Также укажите что делать с оригиналом – оставлять как есть, выбрасывать в корзину, или перемещать в другую папку. Обратите внимание, что если вы выберете «оставлять файл как есть», то программа будет находить его, при каждом просмотре снова и снова, конвертировать его, и добавлять в iTunes (не смотря на то, что мы оставили галочку «проверять на дубликат»). Ресурсы сервера уйдут впустую на бессмысленное конвертирование раз за разом, а место на диске уйдет под бессчисленное множество копий. Поэтому его нужно либо выбрасывать, либо (в случае если файл стоит на раздаче) – отдавать в iVI не оригинал, а копию файла, которую потом выбрасывать – для этого можно придумать несложный AppleScript. Для неподготовленного читателя простейшим способом будет выбрасывать оригинал.

iVI настройки

Шестая вкладка «Automation». Укажите время, через которое нужно просматривать папку загрузок (выбранную на предыдущем шаге), чтобы найти новые файлы, и что именно конвертировать – то что распознано как фильм или сериал, или все что будет найдено. Рекомендуем конвертировать все что найдено, так как иногда программа думает, что найденный фильм это «Домашнее видео», и его конвертировать не надо:

iVI настройки

На шестой вкладке «Rules» мы ничего не трогаем, хотя вы можете задать действия которые будут выполняться применительно к разным закачкам – но это очень индивидуально, в общем можете экспериментировать; на седьмой вкладке «Metadata» мы тоже ничего не трогаем, так как отключили поиск данных о фильме вообще ввиду некорректной отработки кириллицы.

На девятой вкладке «Hardware» тоже ничего не трогаем, но можете установить Turbo.264 Framework – возможно, это немного ускорит процесс кодирования, однако в данном случае непринципиально.

На последней, десятой вкладке «Advanced» можете поиграться с битрейтом, но это также непринципиально сейчас.

В результате правильно настроенной iVI, скачанные файлы будут автоматически конвертироваться и добавляться в iTunes. Вам останется только взять пульт Apple Remote, включить Apple TV и посмотреть кино. Правда, пожертвовав красивыми названиями и обложками. Фантастика? – как видите нет. Все очень реально, но при тщательной настройке.

Теперь рассмотрим 2-й вариант автоматической обработки закачек.

Вариант 2. Связка AppleScript & программа iFlicks.

iFlicks представляет собой очень простую и удобную программу для пакетного конвертирования файлов и добавления их в iTunes. Интегрирован с themoviedb.org и TheTVDB.com, что позволяет ему успешно находить информацию о фильмах и обложки. Корректно работает с кириллицей, в отличие от iVI, поэтому функция поиска информации и обложек оказывается очень кстати.

iFlicks хорошо находит информацию о фильме

Программа делает практически все что нужно, за исключением одного важного нюанса – она не умеет периодически просматривать заданную папку на наличие в ней новых файлов. Зато у iFlicks есть отличная поддержка AppleScript! Благодаря этому мы можем дописать необходимый функционал самостоятельно. Но как узнать какие команды поддерживаются у iFlicks на уровне AppleScript? Можно поискать (лучше с помощью Google) в базе знаний разработчиков программы. Здесь можно найти примеры скриптов, которыми делятся пользователи программы, и возможно, найти для себя что-то новое. Также нелишним будет заглянуть в AppleScript словарь программы iFlicks.

Словарь поддерживаемых команд – лучший способ узнать возможности программы

Например, давайте решим самую распространенную задачу – реализуем автодобавление файлов в очередь на конвертацию. За основу можно взять этот скрипт:

on adding folder items to thisFolder after receiving addedItems
repeat with movieFile in addedItems
try
if name extension of (info for movieFile) is "m4v" then
--display dialog "Passing Through import - m4v" buttons {"OK"} default button 1
tell application "iFlicks"
import movieFile as QuickTime movie with deleting without gui
end tell
else if name extension of (info for movieFile) is "mp4" then
--display dialog "Passing Through import - mp4" buttons {"OK"} default button 1
tell application "iFlicks"
import movieFile as QuickTime movie with deleting without gui
end tell
else if name extension of (info for movieFile) is "mkv" then
--display dialog "Passing Through import - mkv" buttons {"OK"} default button 1
tell application "iFlicks"
import movieFile as QuickTime movie with deleting without gui
end tell
else
--display dialog "Importing and recompressing - Other"
tell application "iFlicks"
import movieFile without gui
end tell
end if
end try
end repeat
end adding folder items to

Сохраните его как скрипт с помощью AppleScript Editor, и положите файл в папку ~/Library/Script/Folder Action Scripts. Если такой папки нет, создайте ее. Теперь найдите папку, в которой у вас будут появляться новые файлы. К ней мы сейчас прикрепим этот скрипт, чтобы он срабатывал при пополнении папки. Щелкните на папке правой кнопкой и выберите Folder Actions Setup:

Настройка действия папки

Найдите созданный вами скрипт (скорее всего у вас он там окажется один) и закрепите его за этой папкой:

Настройка действия папки

Теперь, стоит только бросить в эту папку видео-файл, он будет поставлен в очередь на конвертацию в iFLicks, а после конвертации добавлен в iTunes. Обратите внимание, что в скрипте для некоторых файлов указано импортировать с удалением оригинала (import movieFile as QuickTime movie with deleting without gui) – учитывайте это и сами решайте, нужно ли вам удалять оригинал или лучше оставлять. Также, не попадайтесь на ошибку новичков – если к папке прикреплен AppleScript, то файлы не должны скачиваться прямо в эту папку, вместо этого они должны там появляться мгновенно. Поскольку прикрепленный скрипт запустится, как только файл начнет скачиваться, и в результате мы получим ошибку, потому что была попытка обработать незакачанный полностью файл. Чтобы избежать этого, укажите в настройках программы отвечающей за закачки (в нашем случае это Speed Download), чтобы недокачанные файлы хранились в отдельной папке, а когда скачались, перемещались в папку к которой прикреплен скрипт.

Какой вариант автоматической обработки закачек выбрать? iVI или iFlicks & AppleScript? Это на ваше усмотрение. Если вас устраивает решение «все в одном» в виде программы iVI, с ее недостатками, но без ручного программирования – этот вариант для вас. Если же вас не пугает AppleScript, то помощью него и iFlicks можно более гибко сконфигурировать решение, наиболее точно отвечающее вашим потребностям.

Преимущества автоматического способа: Достаточно отправить ссылку, которую нужно скачать, и через некоторое время фильм уже ждет вас в iTunes.

Недостатки автоматического способа: Компьютер не умеет «оценивать» фильмы. Поэтому он не может разложить фильмы по категориям «Мультики», «Худ. Фильмы», «Документальные фильмы», «Сериалы». Максимум что он может это все фильмы сложить в папку Фильмы, а всю музыку в папку Музыка. Ну или добавить и то и другое в iTunes.

И несколько слов об аудио. Аудиофайлы очень просто добавляются в iTunes посредством несложного скрипта (его тоже нужно сохранить как действие папки):

on adding folder items to thisFolder after receiving addedItems
repeat with mediaFile in addedItems
try
if name extension of (info for mediaFile) is "mp3" then
tell application "iTunes"
add mediaFile
end tell
end if
end try
end repeat
end adding folder items to

Все указанные в статье скрипты приведены исключительно в качестве примера, и поэтому максимально упрощены. Пожалуйста, вчитывайтесь внимательно в те действия которые выполняет скрипт (язык AppleScript достаточно интуитивен), чтобы избежать непредсказуемых результатов.

Что мы обошли вниманием в этой статье? Наша статья – не исчерпывающий учебник по настройке медиасервера, и поэтому мы не можем рассмотреть абсолютно все нюансы работы медиасервера. Например, как поведет себя iVI, если скормить ему Blue-Ray диск? Как известно, в Blue-Ray структуре есть несколько файлов .m2ts, которые все обнаружатся как видеофайлы и поставятся (все) в очередь на конвертацию, что явно нежелательно. При чем с формальными названиями типа 00001.m2ts, 00002.m2ts и т.д. Мы решили эту проблему с помощью AppleScript. Равно как и проблему постоянно растущего объема папки загрузок – да, нужно периодически удалять просмотренное видео, при чем желательно автоматически.

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

В этом цикле статей: