ユーザーがYoutubeに動画をアップロードできるアプリケーションを作りたいです。これが私が試したコードです(http://code.google.com/p/gdata-python-client/source/browse/tests/gdata_tests/youtube/service_test.pyから採用):
my_media_group = gdata.media.Group(
title = gdata.media.Title(text=title),
description = gdata.media.Description(description_type='plain',
text=description),
keywords = gdata.media.Keywords(text= tags),
category = gdata.media.Category(
text='Autos',
scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
label='Autos'),
player=None
)
# Set Geo location to 37,-122 lat, long
where = gdata.geo.Where()
where.set_location((37.0,-122.0))
video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group, geo=where)
print "Creating a video entry: done."
print "Uploading video"
new_entry = self.client.InsertVideoEntry(video_entry, filepath)
print "Done uploading video."
それは常に最後から2番目の行でスタックします:
new_entry = self.client.InsertVideoEntry(video_entry, filepath)
では、何が問題なのですか?ファイルパスに関する要件はありますか(たとえば、パス'C:\ video.avi'は有効ですか?)
実際、アップロードする方法が必要なだけなので、考えられる解決策を提案してください。
編集:1。Youtube Uploadウィジェットを埋め込もうとしましたが、機能しないようです:( Webカメラからロードするオプションは1つしかなく、それも機能しません)。
<iframe id="widget" type="text/html" width="640" height="390"
src="https://www.youtube.com/upload_embed" frameborder="0"></iframe>
- QWebviewを使用してYoutubeのアップロードページをロードしましたが、Youtubeは常にエラーを返します。 QWebview:YouTubeにアップロードするとエラーが返されます
編集2:
コードを次のように変更しました。
def getYtSession(self, email = '', password =''):
# if we do not want to reuse our session.
if email != '' and password != '':
yt_service = gdata.youtube.service.YouTubeService()
yt_service.email = email
yt_service.password = password
#login.
try:
print yt_service.ProgrammaticLogin()
self.email = email
self.password = password
self.logged_in = True
self.emit(QtCore.SIGNAL('doneLogin(QString)'), QtCore.QString(email + " " + password))
return yt_service
except:
#Display a warning dialog.
self.logged_in = False
self.emit(QtCore.SIGNAL('failedLogin()'))
return None
elif self.yt_service: # we want to reuse the session.
return self.yt_service
else:
return gdata.youtube.service.YouTubeService()
およびアップロード機能:
self.yt_service = self.getYtSession(self.email, self.password)
try:
new_entry = self.yt_service.InsertVideoEntry(video_entry, filepath)
print "Done uploading video."
self.emit(QtCore.SIGNAL('doneUpload(QString)'), QtCore.QString('Title: ' + title + '\nPath: ' + filepath))
except:
print "Stack trace:"
traceback.print_stack()
それでも動作しません。そしてもう1つの問題:スタックトレースは何も役に立ちません:
Stack trace:Login successfully.
ファイル"D:\ workplace \ simple-media-player \ trunk \ MyPlayer \ src \ QtThread.py"、19行目、実行中self.function(* self.args、** self.kwargs)ファイル "D:\ workplace \ simple-media-player \ trunk \ MyPlayer \ src \ videoplayer.py "、行490、doRealUpload traceback.print_stack()
そのメッセージ(「ログインに成功しました。」)は、doneLogin(QString)シグナルが発行されたときに呼び出される関数によって出力されます。入れないと
new_entry = self.yt_service.InsertVideoEntry(video_entry, filepath)
print "Done uploading video."
self.emit(QtCore.SIGNAL('doneUpload(QString)'), QtCore.QString('Title: ' + title + '\nPath: ' + filepath))
try-exceptでは、何も出力されません。
詳細:ビデオ情報を次のように設定しました:パス:C:/Users/huynh/Desktop/REcord1.wmv名前:'テストビデオ'タグ:'テスト、youtube'説明:fafafa