public IActionResult GetWatchInfoCsv(string video, string watch) { FileInfo f = new FileInfo(Video.Folder + video + "/" + watch); Watch watchObject = new Watch(f.FullName) { Video = new Video() { Name = video } }; var records = watchObject.LoadInfo(); if (!records.Any()) { return(NotFound()); } List <WatchInfoSpeed> list = WatchInfoSpeed.Compile(watchObject, records); using (MemoryStream ms = new MemoryStream()) using (StreamWriter sw = new StreamWriter(ms)) using (CsvWriter writer = new CsvWriter(sw)) { writer.WriteHeader <WatchInfoSpeed>(); sw.WriteLine(); writer.WriteRecords(list); return(Ok(Encoding.UTF8.GetString(ms.ToArray()))); } }
public IActionResult GetFixationsCsv(string video, string watch) { FileInfo f = new FileInfo(Video.Folder + video + "/" + watch); Watch watchObject = new Watch(f.FullName) { Video = new Video() { Name = video } }; var records = watchObject.LoadInfo(); if (!records.Any()) { return(NotFound()); } List <WatchInfoSpeed> list = WatchInfoSpeed.Compile(watchObject, records); var results = Fixation.Compile(watchObject, list.ToArray(), this.FixationThreshold); var filteredResults = results .Where(d => d.Duration > 100) .Where(d => d.Duration < 800) .Where(d => d.AverageEyeSpeed <= 6) .Select(d => new { StartTime = (int)d.StartTime, EndTime = (int)d.EndTime, Duration = (int)d.Duration, d.AverageEyeSpeed, X = (int)d.X, Y = (int)d.Y, }) .ToArray(); using (MemoryStream ms = new MemoryStream()) using (StreamWriter sw = new StreamWriter(ms)) using (CsvWriter writer = new CsvWriter(sw)) { writer.WriteRecords(filteredResults); return(Ok(Encoding.UTF8.GetString(ms.ToArray()))); } }
public IActionResult GetTimePoints(string video, string watch) { FileInfo f = new FileInfo(Video.Folder + video + "/" + watch); Watch watchObject = new Watch(f.FullName) { Video = new Video() { Name = video } }; var records = watchObject.LoadInfo(); if (!records.Any()) { return(NotFound()); } List <WatchInfoSpeed> list = WatchInfoSpeed.Compile(watchObject, records); return(Ok(list)); }
public IActionResult GetFixations(string video, string watch) { FileInfo f = new FileInfo(Video.Folder + video + "/" + watch); Watch watchObject = new Watch(f.FullName) { Video = new Video() { Name = video } }; var records = watchObject.LoadInfo(); if (!records.Any()) { return(NotFound()); } List <WatchInfoSpeed> list = WatchInfoSpeed.Compile(watchObject, records); var results = Fixation.Compile(watchObject, list.ToArray(), this.FixationThreshold); var filteredResults = results .Where(d => d.Duration > 100) .Where(d => d.Duration < 800) .Where(d => d.AverageEyeSpeed <= this.FixationThreshold) .Select(d => new { StartTime = (int)d.StartTime, EndTime = (int)d.EndTime, Duration = (int)d.Duration, AverageEyeSpeed = Math.Round(d.AverageEyeSpeed, 2, MidpointRounding.ToEven), X = (int)d.X, Y = (int)d.Y, }) .ToArray(); return(Ok(filteredResults)); }