private void FindTorrentFileLinks() { foreach (TorrentFile torrentFile in this._torrent.Files) { var fileLink = new TorrentFileLink(torrentFile); foreach (FileSystemFileInfo fsFileInfo in this._fsfiFileInfos) { if (fsFileInfo.Length == torrentFile.Length) { fileLink.FsFileInfos.Add(fsFileInfo); } } if (fileLink.FsFileInfos.Count > 1) { var torrentFilePathParts = torrentFile.Path.Split('\\').ToList(); torrentFilePathParts.Insert(0, this._torrent.Name); for (int i = 0; i < torrentFilePathParts.Count; i++) { var links = new List <FileSystemFileInfo>(); foreach (var fileInfo in fileLink.FsFileInfos) { var filePathPaths = fileInfo.FilePath.Split('\\'); if (filePathPaths.Length > i + 1 && filePathPaths[filePathPaths.Length - i - 1].ToUpperInvariant() == torrentFilePathParts[torrentFilePathParts.Count - i - 1].ToUpperInvariant()) { links.Add(fileInfo); } } if (links.Count == 0) { break; } if (links.Count >= 1) { fileLink.FsFileInfos = links; if (links.Count == 1) { break; } } } } if (fileLink.FsFileInfos.Count == 1) { fileLink.State = LinkState.Located; fileLink.LinkedFsFileIndex = 0; } else if (fileLink.FsFileInfos.Count > 1) { fileLink.State = LinkState.NeedConfirm; } else { fileLink.State = LinkState.Fail; } this._torrentFileLinks.Add(fileLink); } }
private void FindTorrentFileLinks() { foreach (TorrentFile torrentFile in this._torrent.Files) { var fileLink = new TorrentFileLink(torrentFile); foreach (FileSystemFileInfo fsFileInfo in this._fsfiFileInfos) { if (fsFileInfo.Length == torrentFile.Length) { fileLink.FsFileInfos.Add(fsFileInfo); } } if (fileLink.FsFileInfos.Count > 1) { var torrentFilePathParts = torrentFile.Path.Split('\\').ToList(); torrentFilePathParts.Insert(0, this._torrent.Name); for (int i = 0; i < torrentFilePathParts.Count; i++) { var links = new List<FileSystemFileInfo>(); foreach (var fileInfo in fileLink.FsFileInfos) { var filePathPaths = fileInfo.FilePath.Split('\\'); if (filePathPaths.Length > i + 1 && filePathPaths[filePathPaths.Length - i - 1].ToUpperInvariant() == torrentFilePathParts[torrentFilePathParts.Count - i - 1].ToUpperInvariant()) { links.Add(fileInfo); } } if (links.Count == 0) { break; } if (links.Count >= 1) { fileLink.FsFileInfos = links; if (links.Count == 1) { break; } } } } if (fileLink.FsFileInfos.Count == 1) { fileLink.State = LinkState.Located; fileLink.LinkedFsFileIndex = 0; } else if (fileLink.FsFileInfos.Count > 1) { fileLink.State = LinkState.NeedConfirm; } else { fileLink.State = LinkState.Fail; } this._torrentFileLinks.Add(fileLink); } }