Как стать автором
Обновить

Запись DVD при помощи Django

Время на прочтение2 мин
Количество просмотров584
Недавно установил сервер с Azureus Web UI для скачивания фильмов. Но осталась одна проблема — запись DVD для просмотра на домашнем кинотеатре. Немного поискав так и не нашел веб-приложения для записи дисков, ну что ж, напишем сами.



Основная идея скрипта — позволить пользователю выбрать директорию или файл на сервере и выполнить команду записи из пакета dvd+rw-tools:
growisofs -dvd-compat -Z <устройство> -R -J -pad "<путь к директории для записи>"
к фильмам выложенным без VIDEO_TS необходимо его добавить:
growisofs -dvd-compat -Z <устройство> -R -J -pad -graftpoints "/VIDEO_TS=<путь к директории для записи>"




Используемые возможности Django:
  • Человеко-понятные урлы
  • Шаблонный движок
  • MVC

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



Начнем с библиотеки-обертки над growisofs. Она достаточно простая, объект Burner в конструкторе принимающий имя записывающего устройства, пытается определить версию growisofs и если ее нет вызывает исключение. В объекте метод burndvd с параметром path, используя subprocess.Popen пытается нарезать диск. Ошибки определяются чтением stderr и отражаются вызовом нескольких исключений.



Самая интересная часть приложения — пользовательский интерфейс.

Правило формирования url:
urlpatterns = patterns('',
	(r'^/dvdburn$', 'default.dvdburn.views.index', {'dirname':''}),
	(r'^/dvdburn/(?P<dirname>[^?]+)/$', 'default.dvdburn.views.index'),
)

все что начинается с /dvdburn попадает в метод index, оставшаяся часть url передается как параметр dirname.



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

Что хотелось бы улучшить:
  • Запись DVD9 на 2 однослойных DVD при необходимости
    Отображение процесса записи в процентах, получать информацию можно разбирая вывод growisofs а выводить используя ajax


    исходный код скрипта
Теги:
Хабы:
Всего голосов 1: ↑1 и ↓0+1
Комментарии4

Публикации

Истории

Ближайшие события