private void RebuildDictionary() { Logger.Info("Rebuilding share path index"); var allShare = _share.Items().ToList(); lock (_pathIndex) { _pathIndex.Clear(); foreach (var contentItem in allShare) { // http://192.168.11.11/share2/data/Eskadron_gusar_letuchih/01.avi var path = contentItem.SystemPath; foreach (var basePath in _basePaths) { if (path.StartsWith(basePath)) { path = path.Substring(basePath.Length); } } // hyper operates with windows style path separators path = Uri.UnescapeDataString(path.Replace("/", "\\")); if (!_pathIndex.ContainsKey(path)) { _pathIndex.Add(path, contentItem.Magnet.TTH); } else { Logger.Error($"Duplicate path entry detected {path} {contentItem.Magnet.TTH} {(_pathIndex[path])}"); } } } Logger.Info("Rebuilding share path index done"); }