映画をダウンロードするために、
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で受信したパスに追加され、パスは親ディレクトリへのリンクを配置するためのコンポーネントに分割され、現在のパスの内容が
ナビゲーションテンプレートに転送されます。 ポストコールが検出されると、記録が開始されます。現在のバージョンではプロセス表示は実装されていないため、記録の進行中にページが読み込まれ、記録の最後に
結果テンプレートが表示されます。
私が改善したいこと:
- 必要に応じてDVD9を2枚の単層DVDに書き込む
記録プロセスをパーセントで表示し、growisofsの出力とajaxを使用して出力を解析することで情報を取得できます
スクリプトソースコード