refine screenshots
This commit is contained in:
parent
1abf3f4aae
commit
3b606974f0
|
|
@ -27,53 +27,16 @@ public partial class LocalFileStorageService
|
|||
var file = Directory.GetFiles(subDir).FirstOrDefault();
|
||||
if (file == null) continue;
|
||||
|
||||
var contentType = FileUtility.GetFileContentType(file);
|
||||
var screenshotDir = Path.Combine(subDir, SCREENSHOT_FILE_FOLDER);
|
||||
var screenshots = await GetScreenshots(file, subDir, messageId, source);
|
||||
if (screenshots.IsNullOrEmpty()) continue;
|
||||
|
||||
if (ExistDirectory(screenshotDir) && !Directory.GetFiles(screenshotDir).IsNullOrEmpty())
|
||||
{
|
||||
foreach (var screenshot in Directory.GetFiles(screenshotDir))
|
||||
{
|
||||
var fileName = Path.GetFileNameWithoutExtension(screenshot);
|
||||
var fileExtension = Path.GetExtension(screenshot).Substring(1);
|
||||
var screenshotContentType = FileUtility.GetFileContentType(screenshot);
|
||||
var model = new MessageFileModel()
|
||||
{
|
||||
MessageId = messageId,
|
||||
FileName = fileName,
|
||||
FileExtension = fileExtension,
|
||||
FileStorageUrl = screenshot,
|
||||
ContentType = screenshotContentType,
|
||||
FileSource = source
|
||||
};
|
||||
files.Add(model);
|
||||
}
|
||||
}
|
||||
else if (contentType == MediaTypeNames.Application.Pdf)
|
||||
{
|
||||
var images = await ConvertPdfToImages(file, screenshotDir);
|
||||
foreach (var image in images)
|
||||
{
|
||||
var fileName = Path.GetFileNameWithoutExtension(image);
|
||||
var fileExtension = Path.GetExtension(image).Substring(1);
|
||||
var screenshotContentType = FileUtility.GetFileContentType(image);
|
||||
var model = new MessageFileModel()
|
||||
{
|
||||
MessageId = messageId,
|
||||
FileName = fileName,
|
||||
FileExtension = fileExtension,
|
||||
FileStorageUrl = image,
|
||||
ContentType = screenshotContentType,
|
||||
FileSource = source
|
||||
};
|
||||
files.Add(model);
|
||||
}
|
||||
}
|
||||
files.AddRange(screenshots);
|
||||
}
|
||||
}
|
||||
return files;
|
||||
}
|
||||
|
||||
|
||||
public IEnumerable<MessageFileModel> GetMessageFiles(string conversationId, IEnumerable<string> messageIds,
|
||||
string source, IEnumerable<string>? contentTypes = null)
|
||||
{
|
||||
|
|
@ -315,5 +278,62 @@ public partial class LocalFileStorageService
|
|||
var converters = _services.GetServices<IPdf2ImageConverter>();
|
||||
return converters.FirstOrDefault();
|
||||
}
|
||||
|
||||
private async Task<IEnumerable<MessageFileModel>> GetScreenshots(string file, string parentDir, string messageId, string source)
|
||||
{
|
||||
var files = new List<MessageFileModel>();
|
||||
|
||||
try
|
||||
{
|
||||
var contentType = FileUtility.GetFileContentType(file);
|
||||
var screenshotDir = Path.Combine(parentDir, SCREENSHOT_FILE_FOLDER);
|
||||
|
||||
if (ExistDirectory(screenshotDir) && !Directory.GetFiles(screenshotDir).IsNullOrEmpty())
|
||||
{
|
||||
foreach (var screenshot in Directory.GetFiles(screenshotDir))
|
||||
{
|
||||
var fileName = Path.GetFileNameWithoutExtension(screenshot);
|
||||
var fileExtension = Path.GetExtension(screenshot).Substring(1);
|
||||
var screenshotContentType = FileUtility.GetFileContentType(screenshot);
|
||||
var model = new MessageFileModel()
|
||||
{
|
||||
MessageId = messageId,
|
||||
FileName = fileName,
|
||||
FileExtension = fileExtension,
|
||||
FileStorageUrl = screenshot,
|
||||
ContentType = screenshotContentType,
|
||||
FileSource = source
|
||||
};
|
||||
files.Add(model);
|
||||
}
|
||||
}
|
||||
else if (contentType == MediaTypeNames.Application.Pdf)
|
||||
{
|
||||
var images = await ConvertPdfToImages(file, screenshotDir);
|
||||
foreach (var image in images)
|
||||
{
|
||||
var fileName = Path.GetFileNameWithoutExtension(image);
|
||||
var fileExtension = Path.GetExtension(image).Substring(1);
|
||||
var screenshotContentType = FileUtility.GetFileContentType(image);
|
||||
var model = new MessageFileModel()
|
||||
{
|
||||
MessageId = messageId,
|
||||
FileName = fileName,
|
||||
FileExtension = fileExtension,
|
||||
FileStorageUrl = image,
|
||||
ContentType = screenshotContentType,
|
||||
FileSource = source
|
||||
};
|
||||
files.Add(model);
|
||||
}
|
||||
}
|
||||
return files;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogWarning($"Error when getting message file screenshots {file} (messageId: {messageId}), Error: {ex.Message}\r\n{ex.InnerException}");
|
||||
return files;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,50 +26,10 @@ public partial class TencentCosService
|
|||
var file = _cosClient.BucketClient.GetDirFiles(subDir).FirstOrDefault();
|
||||
if (file == null) continue;
|
||||
|
||||
var contentType = FileUtility.GetFileContentType(file);
|
||||
var screenshotDir = $"{subDir}/{SCREENSHOT_FILE_FOLDER}/";
|
||||
var screenshots = _cosClient.BucketClient.GetDirFiles(screenshotDir);
|
||||
if (!screenshots.IsNullOrEmpty())
|
||||
{
|
||||
foreach (var screenshot in screenshots)
|
||||
{
|
||||
var screenshotContentType = FileUtility.GetFileContentType(screenshot);
|
||||
var fileName = Path.GetFileNameWithoutExtension(screenshot);
|
||||
var fileExtension = Path.GetExtension(screenshot).Substring(1);
|
||||
var model = new MessageFileModel
|
||||
{
|
||||
MessageId = messageId,
|
||||
FileName = fileName,
|
||||
FileExtension = fileExtension,
|
||||
FileUrl = BuilFileUrl(screenshot),
|
||||
FileStorageUrl = screenshot,
|
||||
ContentType = contentType,
|
||||
FileSource = source
|
||||
};
|
||||
files.Add(model);
|
||||
}
|
||||
}
|
||||
else if (contentType == MediaTypeNames.Application.Pdf)
|
||||
{
|
||||
var images = await ConvertPdfToImages(file, screenshotDir);
|
||||
foreach (var image in images)
|
||||
{
|
||||
var fileName = Path.GetFileNameWithoutExtension(image);
|
||||
var fileExtension = Path.GetExtension(image).Substring(1);
|
||||
var screenshotContentType = FileUtility.GetFileContentType(image);
|
||||
var model = new MessageFileModel
|
||||
{
|
||||
MessageId = messageId,
|
||||
FileName = fileName,
|
||||
FileExtension = fileExtension,
|
||||
FileUrl = BuilFileUrl(image),
|
||||
FileStorageUrl = image,
|
||||
ContentType = contentType,
|
||||
FileSource = source
|
||||
};
|
||||
files.Add(model);
|
||||
}
|
||||
}
|
||||
var screenshots = await GetScreenshots(file, subDir, messageId, source);
|
||||
if (screenshots.IsNullOrEmpty()) continue;
|
||||
|
||||
files.AddRange(screenshots);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -120,6 +80,8 @@ public partial class TencentCosService
|
|||
return files;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public string GetMessageFile(string conversationId, string messageId, string source, string index, string fileName)
|
||||
{
|
||||
var dir = $"{CONVERSATION_FOLDER}/{conversationId}/{FILE_FOLDER}/{source}/{index}/";
|
||||
|
|
@ -299,5 +261,64 @@ public partial class TencentCosService
|
|||
{
|
||||
return $"https://{_fullBuketName}.cos.{_settings.Region}.myqcloud.com/{file}";
|
||||
}
|
||||
|
||||
private async Task<IEnumerable<MessageFileModel>> GetScreenshots(string file, string parentDir, string messageId, string source)
|
||||
{
|
||||
var files = new List<MessageFileModel>();
|
||||
|
||||
try
|
||||
{
|
||||
var contentType = FileUtility.GetFileContentType(file);
|
||||
var screenshotDir = $"{parentDir}/{SCREENSHOT_FILE_FOLDER}/";
|
||||
var screenshots = _cosClient.BucketClient.GetDirFiles(screenshotDir);
|
||||
if (!screenshots.IsNullOrEmpty())
|
||||
{
|
||||
foreach (var screenshot in screenshots)
|
||||
{
|
||||
var screenshotContentType = FileUtility.GetFileContentType(screenshot);
|
||||
var fileName = Path.GetFileNameWithoutExtension(screenshot);
|
||||
var fileExtension = Path.GetExtension(screenshot).Substring(1);
|
||||
var model = new MessageFileModel
|
||||
{
|
||||
MessageId = messageId,
|
||||
FileName = fileName,
|
||||
FileExtension = fileExtension,
|
||||
FileUrl = BuilFileUrl(screenshot),
|
||||
FileStorageUrl = screenshot,
|
||||
ContentType = contentType,
|
||||
FileSource = source
|
||||
};
|
||||
files.Add(model);
|
||||
}
|
||||
}
|
||||
else if (contentType == MediaTypeNames.Application.Pdf)
|
||||
{
|
||||
var images = await ConvertPdfToImages(file, screenshotDir);
|
||||
foreach (var image in images)
|
||||
{
|
||||
var fileName = Path.GetFileNameWithoutExtension(image);
|
||||
var fileExtension = Path.GetExtension(image).Substring(1);
|
||||
var screenshotContentType = FileUtility.GetFileContentType(image);
|
||||
var model = new MessageFileModel
|
||||
{
|
||||
MessageId = messageId,
|
||||
FileName = fileName,
|
||||
FileExtension = fileExtension,
|
||||
FileUrl = BuilFileUrl(image),
|
||||
FileStorageUrl = image,
|
||||
ContentType = contentType,
|
||||
FileSource = source
|
||||
};
|
||||
files.Add(model);
|
||||
}
|
||||
}
|
||||
return files;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogWarning($"Error when getting message file screenshots {file} (messageId: {messageId}), Error: {ex.Message}\r\n{ex.InnerException}");
|
||||
return files;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue