TraktPlugin.TraktCache.GetLikedListsFromTrakt C# (CSharp) Méthode

GetLikedListsFromTrakt() public static méthode

public static GetLikedListsFromTrakt ( bool ignoreLastSyncTime = false ) : IEnumerable
ignoreLastSyncTime bool
Résultat IEnumerable
        public static IEnumerable<TraktLike> GetLikedListsFromTrakt(bool ignoreLastSyncTime = false)
        {
            // get from cache regardless of last sync time
            if (ignoreLastSyncTime)
                return LikedLists;

            TraktLogger.Info("Getting current user liked lists from trakt.tv");

            // get the last time we did anything to our library online
            var lastSyncActivities = LastSyncActivities;

            // something bad happened e.g. site not available
            if (lastSyncActivities == null || lastSyncActivities.Lists == null)
                return null;

            // check the last time we have against the online time
            // if the times are the same try to load from cache
            if (lastSyncActivities.Lists.LikedAt == TraktSettings.LastSyncActivities.Lists.LikedAt)
            {
                var cachedItems = LikedLists;
                if (cachedItems != null)
                    return cachedItems;
            }

            TraktLogger.Info("Liked lists cache is out of date, requesting updated data. Local Date = '{0}', Online Date = '{1}'", TraktSettings.LastSyncActivities.Lists.LikedAt ?? "<empty>", lastSyncActivities.Lists.LikedAt ?? "<empty>");

            // we get from online, local cache is not up to date
            var onlineItems = TraktAPI.TraktAPI.GetLikedItems("lists");
            if (onlineItems != null)
            {
                bool listExists = false;
                var pagedItems = onlineItems.Likes;

                // check if we need to request more pages
                if (LikedLists != null && pagedItems.IsAny())
                {
                    // if the list id exists then we already have all liked lists
                    listExists = LikedLists.Any(l => l.List.Ids.Trakt == pagedItems.Last().List.Ids.Trakt);

                    // add the latest page to our previous cached comments
                    pagedItems = pagedItems.Union(LikedLists);
                }

                // get more pages
                if (!listExists && pagedItems.IsAny() && onlineItems.Likes.Count() == onlineItems.TotalItemsPerPage)
                {
                    for (int i = 2; i <= onlineItems.TotalPages; i++)
                    {
                        var nextPage = TraktAPI.TraktAPI.GetLikedItems("lists", "min", i);
                        if (nextPage == null || !nextPage.Likes.IsAny()) break;

                        // if the list id exists then we already have all liked lists
                        if (pagedItems.Any(c => c.List.Ids.Trakt == nextPage.Likes.Last().List.Ids.Trakt))
                            listExists = true;

                        // add the latest page to our previous requested liked lists
                        pagedItems = pagedItems.Union(nextPage.Likes);

                        if (listExists || nextPage.Likes.Count() < nextPage.TotalItemsPerPage)
                            break;
                    }
                }

                // evaluate any union additions
                if (pagedItems != null)
                    pagedItems = pagedItems.ToList();

                _LikedLists = pagedItems;

                // save to local file cache
                SaveFileCache(CustomListLikedFile, _LikedLists.ToJSON());

                // save new activity time for next time
                TraktSettings.LastSyncActivities.Lists.LikedAt = lastSyncActivities.Lists.LikedAt;

                return pagedItems == null ? null : pagedItems.OrderByDescending(l => l.LikedAt);
            }
            else
            {
                return null;
            }
        }
TraktCache