1

YouTube API を使用してエントリを更新しようとしています。ここに私が苦労している私のエラーがあります:

トレースバック (最新の呼び出しは最後): ファイル ""、1 行目、updated_entry = gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id) の TypeError: バインドされていないメソッド UpdateVideoEntry() は、YouTubeService インスタンスを最初の引数として呼び出す必要があります (取得した代わりに NoneType インスタンス)

これが私のコードです:

    import gdata.youtube
    import gdata.youtube.service
    import gdata.youtube.data
client = gdata.youtube.service.YouTubeService()    
...
videos_feed = client.GetYouTubeVideoFeed(uri)
    for entry in videos_feed.entry:
    print entry.title.text
        YTentry = entry._GDataEntry__GetId
        YTVentry = gdata.youtube.YouTubeVideoEntry(YTentry)
        YTVentry.media.title = '09.11.2012 Hold me close'
        YTVentry.media.description = '09.11.2012 : Hold me close section'
        updated_entry = gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id)

google gdata youtube docs によると:

動画のメタデータを更新するには、YouTubeVideoEntry オブジェクトを更新してから、YouTubeService オブジェクトの UpdateVideoEntry メソッドを使用します。このメソッドは、更新されたメタデータを含む YouTubeVideoEntry をパラメーターとして受け取ります。

前もって感謝します。

4

2 に答える 2

1
    updated_entry = gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id)

する必要があります

    updated_entry = client.UpdateVideoEntry(YTVentry.id)

gdata.youtube.service.YouTubeService.UpdateVideoEntry(YTVentry.id) TypeError: バインドされていないメソッド UpdateVideoEntry() は、YouTubeService インスタンスを最初の引数として呼び出す必要があります (代わりに NoneType インスタンスを取得します)

作成したクライアント オブジェクトではなく、クラスから UpdateVideoEntry を呼び出そうとしているため、エラーが発生しています。YouTubeService オブジェクトを作成しましたclient。クラスのメソッドを直接呼び出すのではなく、それを使用する必要があります。

于 2012-09-24T15:41:59.197 に答える
1

YouTubeServiceそのクラスのインスタンスではなく、クラスでメソッドを呼び出しています。つまり、API への他の呼び出しとは異なり、呼び出す必要がありますclient.UpdateVideoEntry(...)YouTubeService.UpdateVideoEntry(...)

YouTubeServiceドキュメントには、クラスではなくオブジェクトでメソッドを呼び出す必要があるとさえ書かれています。

エラー メッセージは、クラス メソッドを直接呼び出すことができるが、クラスのインスタンスを最初のパラメーターとして渡す必要があることを示しています。これは、インスタンスでメソッドを呼び出すときに暗黙的に行われますが、クラスでメソッドを呼び出すときは明示的に行う必要があります。そうしないと、Python はメソッドがどのインスタンスを操作する必要があるか (つまり、何が何でselfあるか) を認識できません。

于 2012-09-24T15:42:19.883 に答える