|
|
|
@ -193,43 +193,43 @@ namespace MediaBrowser.Providers.Subtitles
|
|
|
|
|
await stream.CopyToAsync(memoryStream).ConfigureAwait(false);
|
|
|
|
|
memoryStream.Position = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var savePaths = new List<string>();
|
|
|
|
|
var saveFileName = Path.GetFileNameWithoutExtension(video.Path) + "." + response.Language.ToLowerInvariant();
|
|
|
|
|
var savePaths = new List<string>();
|
|
|
|
|
var saveFileName = Path.GetFileNameWithoutExtension(video.Path) + "." + response.Language.ToLowerInvariant();
|
|
|
|
|
|
|
|
|
|
if (response.IsForced)
|
|
|
|
|
{
|
|
|
|
|
saveFileName += ".forced";
|
|
|
|
|
}
|
|
|
|
|
if (response.IsForced)
|
|
|
|
|
{
|
|
|
|
|
saveFileName += ".forced";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
saveFileName += "." + response.Format.ToLowerInvariant();
|
|
|
|
|
saveFileName += "." + response.Format.ToLowerInvariant();
|
|
|
|
|
|
|
|
|
|
if (saveInMediaFolder)
|
|
|
|
|
{
|
|
|
|
|
var mediaFolderPath = Path.GetFullPath(Path.Combine(video.ContainingFolderPath, saveFileName));
|
|
|
|
|
// TODO: Add some error handling to the API user: return BadRequest("Could not save subtitle, bad path.");
|
|
|
|
|
if (mediaFolderPath.StartsWith(video.ContainingFolderPath, StringComparison.Ordinal))
|
|
|
|
|
if (saveInMediaFolder)
|
|
|
|
|
{
|
|
|
|
|
savePaths.Add(mediaFolderPath);
|
|
|
|
|
var mediaFolderPath = Path.GetFullPath(Path.Combine(video.ContainingFolderPath, saveFileName));
|
|
|
|
|
// TODO: Add some error handling to the API user: return BadRequest("Could not save subtitle, bad path.");
|
|
|
|
|
if (mediaFolderPath.StartsWith(video.ContainingFolderPath, StringComparison.Ordinal))
|
|
|
|
|
{
|
|
|
|
|
savePaths.Add(mediaFolderPath);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var internalPath = Path.GetFullPath(Path.Combine(video.GetInternalMetadataPath(), saveFileName));
|
|
|
|
|
var internalPath = Path.GetFullPath(Path.Combine(video.GetInternalMetadataPath(), saveFileName));
|
|
|
|
|
|
|
|
|
|
// TODO: Add some error to the user: return BadRequest("Could not save subtitle, bad path.");
|
|
|
|
|
if (internalPath.StartsWith(video.GetInternalMetadataPath(), StringComparison.Ordinal))
|
|
|
|
|
{
|
|
|
|
|
savePaths.Add(internalPath);
|
|
|
|
|
}
|
|
|
|
|
// TODO: Add some error to the user: return BadRequest("Could not save subtitle, bad path.");
|
|
|
|
|
if (internalPath.StartsWith(video.GetInternalMetadataPath(), StringComparison.Ordinal))
|
|
|
|
|
{
|
|
|
|
|
savePaths.Add(internalPath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (savePaths.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
await TrySaveToFiles(memoryStream, savePaths).ConfigureAwait(false);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError("An uploaded subtitle could not be saved because the resulting paths were invalid.");
|
|
|
|
|
if (savePaths.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
await TrySaveToFiles(memoryStream, savePaths).ConfigureAwait(false);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError("An uploaded subtitle could not be saved because the resulting paths were invalid.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|