private IEnumerable<NwdUriProcessEntry> GetDeviceHashedMedia(NwdPortableDevice device) { string uri = "NWD/config/FileHashIndex.txt"; NwdPortableDeviceFile hashedMediaIndex = GetFirstFileByUri(uri); if (hashedMediaIndex == null) { Display.Message("[" + uri + "] not found"); return new List<NwdUriProcessEntry>(); //empty list } else { Display.Message("found [" + uri + "]"); //copy to local file system string localFilePath = Configuration.NwdUriToLocalPath(uri); //Display.Message(localFilePath); string localDestinationFolder = Path.GetDirectoryName(localFilePath); //Display.Message(localDestinationFolder); device.DownloadFile(hashedMediaIndex, localDestinationFolder); Display.Message("copied file to [" + localFilePath + "]"); List<string> lineItems = File.ReadAllLines(localFilePath).ToList(); Display.Message("found " + lineItems.Count + " lineItems"); Parser.Parser p = new Parser.Parser(); List<NwdUri> lst = new List<NwdUri>(); List<string> invalidPaths = new List<string>(); foreach (string li in lineItems) { string path = p.Extract("path", li); string hash = p.Extract("sha1Hash", li); List<string> whitelistedFolders = new List<string>(); whitelistedFolders.Add("Pictures"); whitelistedFolders.Add("DCIM"); //NwdUri newUri = Configuration.NwdPathToNwdUri(path); NwdUri newUri = Configuration.NwdPathToNwdUri(path, whitelistedFolders); if (newUri != null) { newUri.Hash = hash; newUri.Path = path; lst.Add(newUri); } else { invalidPaths.Add(path); } } var pathList = (from li in invalidPaths select new { Path = li }).ToList(); if (pathList.Count > 0) { Display.Grid(invalidPaths.Count + " invalid paths skipped", lst, pathList); } else { Display.Grid("0 invalid paths skipped", lst); } var processEntries = (from nwdUri in lst select new NwdUriProcessEntry(nwdUri)).ToList(); return processEntries; } }