DjangoでDVDを焼く

映画をダウンロードするために、 Azureus Web UIを備えたサーバーを最近インストールしました。 しかし、1つの問題がありました-ホームシアターで視聴するためにDVDを書き込むことです。 少し検索しても、ディスクを書き込むためのWebアプリケーションは見つかりませんでした。まあ、自分で書きましょう。







スクリプトの主な目的は、ユーザーがサーバー上のディレクトリまたはファイルを選択し、dvd + rw-toolsパッケージから書き込みコマンドを実行できるようにすることです。

growisofs -dvd-compat -Z <デバイス> -R -J -pad "<記録するディレクトリへのパス>"
VIDEO_TSなしでレイアウトされた映画に追加する必要があります。

growisofs -dvd-compat -Z <デバイス> -R -J -pad -graftpoints "/ VIDEO_TS = <記録用ディレクトリへのパス>"








Djangoの使用機能:



Djangoのモジュールアーキテクチャのおかげで、未使用の機能はまったく干渉しません。







growisofs のラッパーライブラリから始めましょう。 コンストラクター内のBurnerオブジェクトはレコーダーの名前を取得し、growisofsのバージョンを判別しようとし、例外が発生しない場合は非常に簡単です。 オブジェクトでは、subprocess.Popenを使用してpathパラメーターを指定したburndvdメソッドがディスクのスライスを試みます。 エラーはstderrを読み取ることで決定され、いくつかの例外の呼び出しに反映されます。







アプリケーションの最も興味深い部分は、ユーザーインターフェイスです。



URLを生成するためのルール:

 urlpatterns =パターン( ''、
	 (r '^ / dvdburn $'、 'default.dvdburn.views.index'、{'dirname': ''})、
	 (r '^ / dvdburn /(?P <dirname> [^?] +)/ $'、 'default.dvdburn.views.index')、
 )


/ dvdburnで始まるものはすべてindexメソッドに入り、残りのurlはdirnameパラメーターとして渡されます。







ビューインデックスメソッドには、スクリプトロジックの大部分が含まれています。

このメソッドでは、ムービーストレージのルートへのパスがurlで受信したパスに追加され、パスは親ディレクトリへのリンクを配置するためのコンポーネントに分割され、現在のパスの内容がナビゲーションテンプレートに転送されます。 ポストコールが検出されると、記録が開始されます。現在のバージョンではプロセス表示は実装されていないため、記録の進行中にページが読み込まれ、記録の最後に結果テンプレートが表示されます。



私が改善したいこと:




All Articles