var csv = path.Replace(".json", ".csv");\r
var encoding = Encoding.GetEncoding("Shift_JIS");\r
client.Send(encoding.GetBytes("{ \"data\": [\n"));\r
+ var battle = false;\r
+ var material = false;\r
try\r
{\r
- if (File.Exists(csv))\r
+ if (!File.Exists(csv))\r
+ return;\r
+ var records = 0;\r
+ if (path.EndsWith("遠征報告書.json"))\r
{\r
- var delimiter = "";\r
- var material = path.EndsWith("資材ログ.json"); // 末尾の空データを削除する必要がある\r
- var battle = path.EndsWith("海戦・ドロップ報告書.json"); // データを40個にそろえる必要がある\r
- foreach (var line in File.ReadLines(csv, encoding).Skip(1))\r
+ records = 10;\r
+ }\r
+ else if (path.EndsWith("改修報告書.json"))\r
+ {\r
+ records = 15;\r
+ }\r
+ else if (path.EndsWith("海戦・ドロップ報告書.json"))\r
+ {\r
+ records = 38;\r
+ battle = true;\r
+ }\r
+ else if (path.EndsWith("開発報告書.json"))\r
+ {\r
+ records = 9;\r
+ }\r
+ else if (path.EndsWith("建造報告書.json"))\r
+ {\r
+ records = 12;\r
+ }\r
+ else if (path.EndsWith("資材ログ.json"))\r
+ {\r
+ records = 9;\r
+ material = true;\r
+ }\r
+ else if (path.EndsWith("戦果.json"))\r
+ {\r
+ records = 3;\r
+ }\r
+ var delimiter = "";\r
+ foreach (var line in File.ReadLines(csv, encoding).Skip(1))\r
+ {\r
+ var data = line.Split(',');\r
+ if (!DateTime.TryParseExact(data[0], Logger.DateTimeFormat, CultureInfo.InvariantCulture,\r
+ DateTimeStyles.AssumeLocal, out DateTime date))\r
{\r
- var data = line.Split(',');\r
- DateTime date;\r
- if (!DateTime.TryParseExact(data[0], Logger.DateTimeFormat, CultureInfo.InvariantCulture,\r
- DateTimeStyles.AssumeLocal, out date) &&\r
- DateTime.TryParse(data[0], CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal, out date))\r
+ if (DateTime.TryParse(data[0], CultureInfo.CurrentCulture,\r
+ DateTimeStyles.AssumeLocal, out date))\r
{\r
data[0] = date.ToString(Logger.DateTimeFormat);\r
}\r
- if (date < from || to < date)\r
- continue;\r
- IEnumerable<string> entries = data;\r
- if (material)\r
- entries = data.Take(9);\r
- if (battle)\r
- entries = data.Concat(Enumerable.Repeat("", 3)).Take(38);\r
- if (number)\r
- {\r
- var stamp = ((date.ToUniversalTime().Ticks -\r
- new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks) /\r
- TimeSpan.TicksPerMillisecond).ToString();\r
- client.Send(encoding.GetBytes(delimiter + "[" + stamp + "," +\r
- string.Join(",", entries.Skip(1)) + "]"));\r
- }\r
else\r
{\r
- client.Send(encoding.GetBytes(delimiter + "[\"" +\r
- string.Join("\",\"", entries) + "\"]"));\r
+ continue;\r
}\r
- delimiter = ",\n";\r
}\r
+ if (date < from || to < date)\r
+ continue;\r
+ IEnumerable<string> entries = data;\r
+ if (material)\r
+ entries = data.Take(9);\r
+ if (battle)\r
+ entries = data.Concat(Enumerable.Repeat("", 3)).Take(38);\r
+ if (entries.Count() != records)\r
+ continue;\r
+ if (number)\r
+ {\r
+ var stamp = ((date.ToUniversalTime().Ticks -\r
+ new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks) /\r
+ TimeSpan.TicksPerMillisecond).ToString();\r
+ client.Send(encoding.GetBytes(delimiter + "[" + stamp + "," +\r
+ string.Join(",", entries.Skip(1)) + "]"));\r
+ }\r
+ else\r
+ {\r
+ client.Send(encoding.GetBytes(delimiter + "[\"" +\r
+ string.Join("\",\"", entries) + "\"]"));\r
+ }\r
+ delimiter = ",\n";\r
}\r
}\r
finally\r