Esempio n. 1
0
 public Task <int> TrySaveFanArt <T>(Guid mediaItemId, string title, string fanArtType, ICollection <T> files, TrySaveMultipleFanArtAsyncDelegate <T> saveDlgt)
 {
     if (files != null && files.Count > 0)
     {
         GetOrAddFanArtPathList(mediaItemId).AddRange(files.Select(f => f.ToString()));
     }
     return(Task.FromResult(files != null ? files.Count : 0));
 }
Esempio n. 2
0
        public async Task <int> TrySaveFanArt <T>(Guid mediaItemId, string title, string fanArtType, ICollection <T> files, TrySaveMultipleFanArtAsyncDelegate <T> saveDlgt)
        {
            if (files == null || files.Count == 0)
            {
                return(0);
            }

            string fanArtCacheDirectory   = GetFanArtDirectory(mediaItemId);
            string fanArtTypeSubDirectory = GetFanArtTypeDirectory(fanArtCacheDirectory, fanArtType);

            int savedCount = 0;

            using (var writer = await _fanArtSync.WriterLockAsync(mediaItemId).ConfigureAwait(false))
            {
                if (!await InitCache(fanArtCacheDirectory, fanArtTypeSubDirectory, title).ConfigureAwait(false))
                {
                    return(savedCount);
                }

                int         maxCount     = GetMaxFanArtCount(fanArtType);
                FanArtCount currentCount = await _fanArtCounts.GetValue(CreateFanArtTypeId(mediaItemId, fanArtType), _ => CreateFanArtCount(mediaItemId, fanArtType)).ConfigureAwait(false);

                if (currentCount.Count >= maxCount)
                {
                    return(savedCount);
                }

                foreach (T file in files)
                {
                    if (await saveDlgt(fanArtTypeSubDirectory, file).ConfigureAwait(false))
                    {
                        savedCount++;
                        currentCount.Count++;
                        if (currentCount.Count >= maxCount)
                        {
                            break;
                        }
                    }
                }
            }
            return(savedCount);
        }