YouTube API v3 ( https://developers.google.com/youtube/v3/docs/captions/download ) と公式の .NET SDK nuget パッケージ ( https://www.nuget. org/packages/Google.Apis.YouTube.v3/、バージョン 1.9.0.1360)。
返されるストリームには、次のテキストが含まれます。
「OAuth トークンがクエリ文字列で受信されました。この API は、JSON または XML 以外の応答形式ではこれを禁止しています。可能であれば、代わりに Authorization ヘッダーで OAuth トークンを送信してみてください。」
YouTube.com UI から手動でアップロードして検証した SRT プレーン テキスト コンテンツの代わりに。
エラーのタイプが見つかりました: lockedDomainCreationFailure
私のコード:
...
_service = new YTApi.YouTubeService(new BaseClientService.Initializer {
ApplicationName = config.AppName,
ApiKey = config.DeveloperKey
});
...
public Stream CaptionsDownload(
string accessToken,
string trackId
)
{
var request = _service.Captions.Download(trackId);
request.OauthToken = accessToken;
request.Tfmt = YTApi.CaptionsResource.DownloadRequest.TfmtEnum.Srt;
var trackStream = new MemoryStream();
request.Download(trackStream);
trackStream.Position = 0;
return trackStream;
}
_service.HttpClient にヘッダーを設定する方法が見つからないようです。手動で行うべきではないと思います。DownloadRequest (または YouTubeBaseServiceRequest) が
/// <summary>
/// OAuth 2.0 token for the current user.
/// </summary>
[RequestParameter("oauth_token", RequestParameterType.Query)]
public virtual string OauthToken { get; set; }
正しい承認ヘッダーに。これはバージョン 1.9.0.1360 では実装されていません。
多分私は何かを見落としていますか?どんな助けでも大歓迎です。
注: 私はこの SDK で他のキャプション関連のメソッドを使用していますが、「ダウンロード」だけが問題を抱えています。