私は、ubuntu 10.10でyoutubeにビデオをアップロードするpython gtkプログラムを作成しています。これはGoogleclパッケージを使用して動作します。あなたはそれ以上の情報をgoogleすることができます。私は以下の構文でプログラムを呼び出すことを実装しました。pythonで新しいサブプロセスを作成gtk
os.system('google youtube post --category %s --title \'%s\' --summary \'%s\' --tags %s %s' % ("Education",title,description,tags,filename))
これで正常に動画がYouTubeにアップロードされます。しかし、ビデオのサイズによっては、ネットワークの速度に応じてアップロードに多くの時間がかかります。それがアップロードされている間、私のpython gtkプログラムは灰色(凍結、ubuntuでは反応しません)に変わり、ビデオがアップロードされた後でのみ、ユーザはプログラムと再び対話できます。
アップロードプロセスをサブプロセスに分けて、別のバックグラウンドプロセスでビデオをアップロードしている間にユーザーがプログラムとやりとりできるようにする方法はありますか?私はプログラムがまだ実行中で、正しく動作していることをユーザーに示すプログレスバー・ウィンドウを表示するのが好きです。
これを行うには、progress_barウィンドウを作成し、次のコードを入力しました。私はプログラムを実行するとき
progress_bar.show()
os.system('google youtube post --category %s --title \'%s\' --summary \'%s\' --tags %s %s' % ("Education",title,description,tags,filename))
progressbar.set_fraction(0.5)
ただし、アップロードが完了するまで、私のプログラムが応答しなくなりますたプログレスバーウィンドウは表示されません。また、ビデオがアップロードされています。
更新:progress bar not updatingと同様の方法がありますか?この方法で私は自分のコードにわずかな変更を加えなければなりませんが、whileループの状態が何であるか分かりません。その方法ではwhile heavy_work_needed
と記載されています。
YouTubeのPython APIがあります。まだ別のスレッドでアップロードする必要がありますが、別のプログラムを呼び出すよりも強力です。 http://code.google.com/apis/youtube/1.0/developers_guide_python.html#UploadingVideos –