fix(trainer): handle weirdly-formatted emails

This commit is contained in:
Anna 2021-09-19 17:56:21 -04:00
parent 2ed31d5c95
commit dd26a5738c
2 changed files with 10 additions and 4 deletions

View File

@ -11,7 +11,7 @@
<PackageReference Include="ConsoleTables" Version="2.4.2"/> <PackageReference Include="ConsoleTables" Version="2.4.2"/>
<PackageReference Include="CsvHelper" Version="27.1.1"/> <PackageReference Include="CsvHelper" Version="27.1.1"/>
<PackageReference Include="Microsoft.ML" Version="1.6.0"/> <PackageReference Include="Microsoft.ML" Version="1.6.0"/>
<PackageReference Include="MimeKitLite" Version="2.15.0"/> <PackageReference Include="MimeKitLite" Version="2.15.1"/>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -64,12 +64,18 @@ namespace NoSoliciting.Trainer {
}; };
foreach (var emlPath in Directory.GetFiles(path, "*.eml")) { foreach (var emlPath in Directory.GetFiles(path, "*.eml")) {
var message = MimeMessage.Load(opts, new FileStream(emlPath, FileMode.Open)); var message = MimeMessage.Load(opts, new FileStream(emlPath, FileMode.Open));
var json = message.TextBody.Split('\r', '\n').FirstOrDefault(line => line.StartsWith("JSON: ")); var lines = message.TextBody
if (json == null) { .Split('\r', '\n')
.SkipWhile(line => !line.StartsWith("JSON: "))
.Select(line => line.Replace("JSON: ", "").Replace(" ", "").Trim())
.ToArray();
if (lines.Length == 0) {
continue; continue;
} }
var jsonText = Encoding.UTF8.GetString(Convert.FromBase64String(json.Split(": ")[1])); var json = string.Join("", lines);
var jsonText = Encoding.UTF8.GetString(Convert.FromBase64String(json));
var report = JsonConvert.DeserializeObject<ReportInput>(jsonText); var report = JsonConvert.DeserializeObject<ReportInput>(jsonText);
var content = XivString.GetText(report.Content); var content = XivString.GetText(report.Content);
var data = new Data(report.Type, content) { var data = new Data(report.Type, content) {