-1

https://developers.google.com/youtube/v3/docs/videos/insertHTTP 400経由で動画をアップロードしようとすると 、かなりの失敗が発生することに気付きました。

Google の Go SDK を使用しています: code.google.com/p/google-api-go-client

失敗したアップロードに共通することは、動画スニペット データ (タイトル/説明) のどこかに<, >. 競合する文字を削除すると、ビデオは正常にアップロードされます。

ドキュメントで見つけられないようですが、何らかのサニタイズを行う必要がありますか? HTMLエスケープ?それをすべて削除します^A-Za-z0-9か?の非 html 使用については<どう<3ですか? ユニコード文字はどうですか?よくわかりません。

編集: 私の質問に答えるために、Google が>,<文字を嫌う問題に対処するために私が書いた小さなハックを次に示します。似ている別の UNICODE 文字に置き換えるだけです。

// < and > need to be stripped out, or the upload will throw 400 error
// https://developers.google.com/youtube/2.0/reference#youtube_data_api_tag_media:description
sanitize := func(val string) string {
    replacements := map[string]string{
        "<": "≺",
        ">": "≻",
    }
    for k, v := range replacements {
        val = strings.Replace(val, k, v, -1)
    }
    return val
}
4

1 に答える 1

1

1 つの問題は次のとおりです。

これらは、利用可能な「新しいスタイル」の Google API の Google Discovery Service の JSON 記述ファイルから自動生成された Go ライブラリです。

お知らせメール: http://groups.google.com/group/golang-nuts/browse_thread/thread/6c7281450be9a21e

ステータス: 他の Google API クライアントと比較して、このライブラリにはアルファ ラベルが付けられています。一部の高度な機能が動作しない場合があります。問題が見つかった場合は、バグを報告してください。

これらは JSON サービス定義から自動生成されるため、適切な翻訳を見逃している可能性があります。API ドキュメントから、http プロトコルを使用していると仮定すると、ビデオ情報は JSON blob として送信されます。

Go が特殊文字を変換します。したがって、<> などは JSON の有効な Unicode エスケープ シーケンスになります。Google はエスケープ シーケンスを嫌う可能性があるため、リテラル文字を送信してみてください。しかし、私はそれが問題であることを本当に疑っています。

また、あなたが <> に言及しているため、YouTube では HTML を挿入できないため、それがあなたが行っていること、または html のようなものである場合、それが無効な文字エラーの原因である可能性があります。html のようなものはすべてサニタイズする必要があります。

この投稿を参照してください。

https://groups.google.com/forum/#!topic/youtube-api-gdata/EcYPPlHjllY

これは、golang が Unicode エスケープ シーケンスを生成することを示しています。

http://play.golang.org/p/hv2h7PA0tr

于 2014-06-09T20:51:44.897 に答える