PySubler

19 сентября 2012, 1:52

Так вышло, что для одного текущего проекта требуется конвертация фильмов mkv в mp4 и добавление в них различной мета-информации, такой как имя режиссёра, список актёров, обложка, рейтинг и т. д.

Для OS X есть замечательная программа — Subler, которая позволяет проводить махинации с тегами в mp4 видео-файлах. Ну и внезапно её разработчики оказались людьми добрыми, поэтому выкатили консольную версию SublerCLI, которая умеет делать достаточно интересные вещи.

Тут то мы и подходим к основной сути — каждый раз вызывать консольную утилиту неудобно, путаница в параметрах, особенно если заранее не знаешь, что вообще там будет. Да и код некрасив. Всё это баловство вылилось в библиотеку pySubler.

Допустим, у нас есть фильм mkv и нужно его подготовить для iTunes. Да нет проблем!

from pySubler import Subler

obj = Subler()
obj.Source("inception.mkv")
obj.Dest("inception.m4v")
obj.AddArtwork("~/Images/inception.jpg")
obj.Name = "Начало"
obj.Artist = "Кристофер Нолан"
obj.Save()

Проще некуда. Фильм перепакуется (без конвертации), сохранив все ништяки типа глав и субтитров, а также добавит пару тегов и обложку.

Список полей, которые можно поменять огромен: начиная от списка актёров, заканчивая телесетью, которая осуществляла вещание (если речь идёт об сериалах). Для удобства были добавлены классы-перечисления, чтобы выпадайки немного помогали.

Так как перепаковка больших файлов занимает некоторое время, то была добавлена возможность асинхронного запуска.

def Complete(data):
    print "Я всё!"

s = Subler()
s.onFinish += Complete
s.Save(acync=True)

В данном случае конвертация запустится асинхронно, код продолжит выполняться после s.Save(acync=True). Как только конвертация закончится, сработает событие onFinish и в функцию Complete придут stdout и stderr сублера. Такие дела.

Устанавливается это чудо просто:

git clone git://github.com/gleero/Subler.git
cd Subler
python setup.py install

Ну и код, конечно же, на гитхабе: https://github.com/gleero/pySubler

Артикли       Ctrl       Нафаршировал

1 комментарий

Петр

handbrake не?

Владимир Перекладов

Конвертация видео не нужна, только перепаковка контейнера с теговыми ништяками. Да и для задачи питон либа нужна.

Ваш комментарий

адрес не будет опубликован

ХТМЛ не работает


Ctrl + Enter