public async Task <GroupInfo> GetGroupInfoByPath(string path, Ordering.GroupFilterType filterByType = Ordering.GroupFilterType.Default) { var partialPath = StripMediaFolder(path); var result = await ShokoAPI.GetSeriesPathEndsWith(partialPath); var seriesId = result?.FirstOrDefault()?.IDs?.ID.ToString(); if (string.IsNullOrEmpty(seriesId)) { return(null); } var groupInfo = await GetGroupInfoForSeries(seriesId, filterByType); if (groupInfo == null) { return(null); } return(groupInfo); }
public async Task <SeriesInfo> GetSeriesInfoByPath(string path) { var partialPath = StripMediaFolder(path); string seriesId; if (SeriesPathToIdDictionary.ContainsKey(path)) { seriesId = SeriesPathToIdDictionary[path]; } else { var result = await ShokoAPI.GetSeriesPathEndsWith(partialPath); seriesId = result?.FirstOrDefault()?.IDs?.ID.ToString(); SeriesPathToIdDictionary[path] = seriesId; if (!string.IsNullOrEmpty(seriesId)) { SeriesIdToPathDictionary[seriesId] = path; } } if (string.IsNullOrEmpty(seriesId)) { return(null); } if (DataCache.TryGetValue <SeriesInfo>($"series:{seriesId}", out var info)) { return(info); } var series = await ShokoAPI.GetSeries(seriesId); return(await CreateSeriesInfo(series, seriesId)); }