0

まず最初に言っておきますが、「以前にアップロードした動画のステータスを確認する方法」を尋ねているわけではありません。私の質問は、アップロードの応答からビデオのステータスを取得することです。dotnet クライアントを使用していますが、アップロードが完了した直後に応答がGoogle.Apis.Youtube.v3.Data.Videoオブジェクトになります。そのオブジェクトには、、 、Statusなどのフィールドを含むと呼ばれるプロパティがあります。問題は、PrivacyStatus と UploadStatus だけが値を持つことです。RejectionReason がヌルです。ジェフ・ポズニックはそれについて言及しました(ここでスレッド全体を参照してください)RejectionReasonPrivacyStatusUploadStatus

動画が重複しているかどうかをアップロード応答の一部として判断する方法はありません。YouTube は、動画を処理するまで動画が重複しているかどうかを認識せず、アップロードが完了した後に処理が行われるためです。

アップロードの直後に video.list を発行すると、API がアップロードされたビデオのステータスを返すため、これは少し奇妙です。そのため、ビデオが公開されておらず、YouTube がまだビデオのインデックス作成/処理を行っているように見える場合でも、「アップロードされたばかりのビデオ」のステータスは既に認識されています。では、なぜステータスを応答の一部として返せないのでしょうか?

レスポンスにステータスが含まれていることが重要です。ステータスが含まれていない場合、アップロードのたびにコードで 2 つの API 呼び出しを実行する必要があります。(1) insertmediaupload と (2) video.list. 特にすべてのアップロードが複製されるとは限らないため、非常にコストのかかる操作になります。

編集 質問の下の Jeff-Posnick のコメントへの応答として、「API は数秒間待機して、処理が完了したかどうかを確認し、ステータスを応答の一部として含めることができますか?」です。

私が見た動作のために、私はその質問を思いつきました: That's a bit strange because when I issue a video.list right after the upload the API returns a status for the uploaded video. しかし、私は API をいじっていて、一貫性のない結果を得ました。同じ動画を何度もアップロードしましたが、「重複」ステータスがある場合とない場合があります。上記の #1 と #2 の手順をメモしておいてください。これら 2 つの API 呼び出しの間に他のコードはありません。

4

1 に答える 1

0

ここで質問が何であるかわかりません。

アップロードが YouTube API で動作する方法の制限を理解しているようで、それらの制限は YouTube Data API の v3 でも適用されます。リクエストからレスポンスが返された時点でvideos.insert()は、ビデオはまだ処理されていないため、ステータスは不明です。実際の処理は、動画がアップロードされてから 1 ~ 2 秒後に行われる場合もあれば、特に大きな動画ファイルの場合、動画がアップロードされてから数分 (またはそれ以上) 後に行われる場合もあります。これはリアルタイムで行われるわけではありません。また、videos.insert() API 呼び出しがブロックされて処理が完了するのを待つのは合理的ではありません。

videos.list(id=...,part=status)を実行することは「非常にコストのかかる操作」であるというあなたの評価には同意しません。消費する帯域幅と YouTube API の割り当て量は、実際の動画のアップロードに比べて最小限です。なんらかのコールバックまたはプッシュ更新メカニズムを介して、呼び出しとは無関係に処理ステータスを返信する方法を提供できればよいのですが、videos.insert()現時点ではそのような方法はありません。ポーリングする必要がありますvideos.list(id=...,part=status)

于 2013-02-13T22:32:24.323 に答える