コード例 #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="jsonSerializer"></param>
 /// <param name="userManager"></param>
 /// <param name="userDataManager"> </param>
 /// <param name="httpClient"></param>
 /// <param name="appHost"></param>
 /// <param name="fileSystem"></param>
 public SyncFromTraktTask(ILogManager logger, IJsonSerializer jsonSerializer, IUserManager userManager, IUserDataManager userDataManager, IHttpClient httpClient, IServerApplicationHost appHost, IFileSystem fileSystem)
 {
     _userManager     = userManager;
     _userDataManager = userDataManager;
     _logger          = logger.GetLogger("Trakt");
     _traktApi        = new TraktApi(jsonSerializer, _logger, httpClient, appHost, userDataManager, fileSystem);
 }
コード例 #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="traktApi"></param>
 public UserDataManagerEventsHelper(ILogger logger, TraktApi traktApi, ITimerFactory timerFactory)
 {
     _userDataPackages = new List <UserDataPackage>();
     _logger           = logger;
     _traktApi         = traktApi;
     _timerFactory     = timerFactory;
 }
コード例 #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="jsonSerializer"></param>
 /// <param name="userManager"></param>
 /// <param name="userDataManager"> </param>
 /// <param name="httpClient"></param>
 public SyncFromTraktTask(ILogManager logger, IJsonSerializer jsonSerializer, IUserManager userManager, IUserDataManager userDataManager, IHttpClient httpClient)
 {
     _userManager     = userManager;
     _userDataManager = userDataManager;
     _logger          = logger.GetLogger("Trakt");
     _traktApi        = new TraktApi(jsonSerializer, _logger, httpClient);
 }
コード例 #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="fileSystem"></param>
 /// <param name="traktApi"></param>
 public LibraryManagerEventsHelper(ILogger logger, IFileSystem fileSystem, TraktApi traktApi)
 {
     _queuedEvents = new List <LibraryEvent>();
     _logger       = logger;
     _fileSystem   = fileSystem;
     _traktApi     = traktApi;
 }
コード例 #5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="traktApi"></param>
 public LibraryManagerEventsHelper(ILogger logger, TraktApi traktApi, ITimerFactory timerFactory)
 {
     _queuedEvents = new List <LibraryEvent>();
     _logger       = logger;
     _traktApi     = traktApi;
     _timerFactory = timerFactory;
 }
コード例 #6
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="jsonSerializer"></param>
 /// <param name="userManager"></param>
 /// <param name="userDataManager"> </param>
 /// <param name="httpClient"></param>
 /// <param name="appHost"></param>
 /// <param name="fileSystem"></param>
 public SyncFromTraktTask(ILoggerFactory loggerFactory, IJsonSerializer jsonSerializer, IUserManager userManager, IUserDataManager userDataManager, IHttpClient httpClient, IServerApplicationHost appHost, IFileSystem fileSystem, ILibraryManager libraryManager)
 {
     _userManager     = userManager;
     _userDataManager = userDataManager;
     _libraryManager  = libraryManager;
     _logger          = loggerFactory.CreateLogger("Trakt");
     _traktApi        = new TraktApi(jsonSerializer, _logger, httpClient, appHost, userDataManager, fileSystem);
 }
コード例 #7
0
 public SyncLibraryTask(ILogManager logger, IJsonSerializer jsonSerializer, IUserManager userManager, IUserDataManager userDataManager, IHttpClient httpClient, IFileSystem fileSystem)
 {
     _userManager     = userManager;
     _userDataManager = userDataManager;
     _logger          = logger.GetLogger("Trakt");
     _fileSystem      = fileSystem;
     _traktApi        = new TraktApi(jsonSerializer, _logger, httpClient);
 }
コード例 #8
0
ファイル: ChannelP1.cs プロジェクト: bakes82/TraktLists
 public ChannelP1(IHttpClient httpClient, ILogManager logManager, IJsonSerializer jsonSerializer, ILibraryManager lib, TraktApi traktApi, IUserManager userManager)
 {
     HttpClient     = httpClient;
     Logger         = logManager.GetLogger(GetType().Name);
     JsonSerializer = jsonSerializer;
     LibraryManager = lib;
     TraktApi       = traktApi;
     UserManager    = userManager;
 }
コード例 #9
0
 public SyncLibraryTask(Kernel kernel, ILogger logger, IHttpClient httpClient, IJsonSerializer jsonSerializer, IUserManager userManager)
 {
     _kernel         = kernel;
     _jsonSerializer = jsonSerializer;
     _httpClient     = httpClient;
     _userManager    = userManager;
     _logger         = logger;
     traktApi        = new TraktApi(_httpClient, _jsonSerializer, _logger);
 }
コード例 #10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="kernel"></param>
 /// <param name="logger"></param>
 /// <param name="httpClient"></param>
 /// <param name="jsonSerializer"></param>
 /// <param name="userManager"></param>
 /// <param name="userDataRepository"> </param>
 public SyncFromTraktTask(Kernel kernel, ILogger logger, IHttpClient httpClient, IJsonSerializer jsonSerializer, IUserManager userManager, IUserDataRepository userDataRepository)
 {
     _jsonSerializer     = jsonSerializer;
     _httpClient         = httpClient;
     _userManager        = userManager;
     _userDataRepository = userDataRepository;
     _logger             = logger;
     _traktApi           = new TraktApi(_httpClient, _jsonSerializer, _logger);
 }
コード例 #11
0
 /// <inheritdoc />
 public void Dispose()
 {
     _userDataManager.UserDataSaved  -= OnUserDataSaved;
     _sessionManager.PlaybackStart   -= KernelPlaybackStart;
     _sessionManager.PlaybackStopped -= KernelPlaybackStopped;
     _libraryManager.ItemAdded       -= LibraryManagerItemAdded;
     _libraryManager.ItemRemoved     -= LibraryManagerItemRemoved;
     _traktApi = null;
     _libraryManagerEventsHelper = null;
 }
コード例 #12
0
 /// <summary>
 ///
 /// </summary>
 public void Dispose()
 {
     _sessionManager.PlaybackStart    -= KernelPlaybackStart;
     _sessionManager.PlaybackProgress -= KernelPlaybackProgress;
     _sessionManager.PlaybackStopped  -= KernelPlaybackStopped;
     _libraryManager.ItemAdded        -= LibraryManagerItemAdded;
     _libraryManager.ItemRemoved      -= LibraryManagerItemRemoved;
     _service  = null;
     _traktApi = null;
     _libraryManagerEventsHelper = null;
 }
コード例 #13
0
        public void Run()
        {
            Console.WriteLine(TraktApi.GetMode);

            var missingEpisodes = TraktApi.GetMissingEpisodes();

            foreach (var fetcher in Fetchers)
            {
                fetcher.getDlUrl(missingEpisodes);
            }
        }
コード例 #14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TraktController"/> class.
 /// </summary>
 /// <param name="userDataManager">Instance of the <see cref="IUserDataManager"/> interface.</param>
 /// <param name="loggerFactory">Instance of the <see cref="ILoggerFactory"/> interface.</param>
 /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
 /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
 /// <param name="httpClient">Instance of the <see cref="IHttpClient"/> interface.</param>
 /// <param name="appHost">Instance of the <see cref="IServerApplicationHost"/> interface.</param>
 public TraktController(
     IUserDataManager userDataManager,
     ILoggerFactory loggerFactory,
     IHttpClientFactory httpClientFactory,
     IServerApplicationHost appHost,
     IFileSystem fileSystem,
     ILibraryManager libraryManager)
 {
     _logger         = loggerFactory.CreateLogger <TraktController>();
     _traktApi       = new TraktApi(loggerFactory.CreateLogger <TraktApi>(), httpClientFactory, appHost, userDataManager, fileSystem);
     _libraryManager = libraryManager;
 }
コード例 #15
0
ファイル: ServerMediator.cs プロジェクト: usermonk/trakt
        /// <summary>
        ///
        /// </summary>
        /// <param name="jsonSerializer"></param>
        /// <param name="sessionManager"> </param>
        /// <param name="userDataManager"></param>
        /// <param name="libraryManager"> </param>
        /// <param name="logger"></param>
        /// <param name="httpClient"></param>
        /// <param name="appHost"></param>
        /// <param name="fileSystem"></param>
        public ServerMediator(IJsonSerializer jsonSerializer, ISessionManager sessionManager, IUserDataManager userDataManager, ILibraryManager libraryManager, ILogManager logger, IHttpClient httpClient, IServerApplicationHost appHost, IFileSystem fileSystem, ITimerFactory timerFactory)
        {
            Instance         = this;
            _sessionManager  = sessionManager;
            _libraryManager  = libraryManager;
            _userDataManager = userDataManager;
            _logger          = logger.GetLogger("Trakt");

            _traktApi = new TraktApi(jsonSerializer, _logger, httpClient, appHost, userDataManager, fileSystem);
            _service  = new TraktUriService(_traktApi, _logger, _libraryManager);
            _libraryManagerEventsHelper  = new LibraryManagerEventsHelper(_logger, _traktApi, timerFactory);
            _userDataManagerEventsHelper = new UserDataManagerEventsHelper(_logger, _traktApi, timerFactory);
        }
コード例 #16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="httpClient"></param>
        /// <param name="jsonSerializer"></param>
        /// <param name="userManager"></param>
        /// <param name="sessionManager"> </param>
        /// <param name="userDataRepository"></param>
        /// <param name="libraryManager"> </param>
        /// <param name="logger"></param>
        public ServerMediator(IHttpClient httpClient, IJsonSerializer jsonSerializer, IUserManager userManager, ISessionManager sessionManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager, ILogger logger)
        {
            _jsonSerializer     = jsonSerializer;
            _httpClient         = httpClient;
            _userManager        = userManager;
            _sessionManager     = sessionManager;
            _userDataRepository = userDataRepository;
            _libraryManager     = libraryManager;
            _logger             = logger;

            _traktApi = new TraktApi(_httpClient, _jsonSerializer, _logger);
            _service  = new TraktUriService(_traktApi, _userManager);
            _libraryManagerEventsHelper = new LibraryManagerEventsHelper(_logger, _traktApi);
        }
コード例 #17
0
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         _userDataManager.UserDataSaved  -= OnUserDataSaved;
         _sessionManager.PlaybackStart   -= KernelPlaybackStart;
         _sessionManager.PlaybackStopped -= KernelPlaybackStopped;
         _libraryManager.ItemAdded       -= LibraryManagerItemAdded;
         _libraryManager.ItemRemoved     -= LibraryManagerItemRemoved;
         _traktApi = null;
         _libraryManagerEventsHelper.Dispose();
         _libraryManagerEventsHelper = null;
         _userDataManagerEventsHelper.Dispose();
     }
 }
コード例 #18
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="jsonSerializer"></param>
        /// <param name="sessionManager"> </param>
        /// <param name="userDataManager"></param>
        /// <param name="libraryManager"> </param>
        /// <param name="logger"></param>
        /// <param name="httpClient"></param>
        /// <param name="appHost"></param>
        /// <param name="fileSystem"></param>
        public ServerMediator(IJsonSerializer jsonSerializer, ISessionManager sessionManager, IUserDataManager userDataManager, ILibraryManager libraryManager, ILogManager logger, IHttpClient httpClient, IServerApplicationHost appHost, IFileSystem fileSystem)
        {
            Instance        = this;
            _sessionManager = sessionManager;
            _libraryManager = libraryManager;
            _logger         = logger.GetLogger("Trakt");

            _traktApi = new TraktApi(jsonSerializer, _logger, httpClient, appHost, userDataManager, fileSystem);
            _service  = new TraktUriService(_traktApi, _logger, _libraryManager);
            _libraryManagerEventsHelper  = new LibraryManagerEventsHelper(_logger, _traktApi);
            _progressEvents              = new List <ProgressEvent>();
            _userDataManagerEventsHelper = new UserDataManagerEventsHelper(_logger, _traktApi);

            userDataManager.UserDataSaved += _userDataManager_UserDataSaved;
        }
コード例 #19
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="loggerFactory"></param>
 /// <param name="userManager"></param>
 /// <param name="userDataManager"> </param>
 /// <param name="httpClient"></param>
 /// <param name="appHost"></param>
 /// <param name="fileSystem"></param>
 public SyncFromTraktTask(
     ILoggerFactory loggerFactory,
     IUserManager userManager,
     IUserDataManager userDataManager,
     IHttpClientFactory httpClientFactory,
     IServerApplicationHost appHost,
     IFileSystem fileSystem,
     ILibraryManager libraryManager)
 {
     _userManager     = userManager;
     _userDataManager = userDataManager;
     _libraryManager  = libraryManager;
     _logger          = loggerFactory.CreateLogger <SyncFromTraktTask>();
     _traktApi        = new TraktApi(loggerFactory.CreateLogger <TraktApi>(), httpClientFactory, appHost, userDataManager, fileSystem);
 }
コード例 #20
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sessionManager"> </param>
        /// <param name="userDataManager"></param>
        /// <param name="libraryManager"> </param>
        /// <param name="logger"></param>
        /// <param name="httpClient"></param>
        /// <param name="appHost"></param>
        /// <param name="fileSystem"></param>
        public ServerMediator(
            ISessionManager sessionManager,
            IUserDataManager userDataManager,
            ILibraryManager libraryManager,
            ILoggerFactory loggerFactory,
            IHttpClientFactory httpClientFactory,
            IServerApplicationHost appHost,
            IFileSystem fileSystem)
        {
            _sessionManager  = sessionManager;
            _libraryManager  = libraryManager;
            _userDataManager = userDataManager;

            _logger = loggerFactory.CreateLogger <ServerMediator>();

            _traktApi = new TraktApi(loggerFactory.CreateLogger <TraktApi>(), httpClientFactory, appHost, userDataManager, fileSystem);
            _libraryManagerEventsHelper  = new LibraryManagerEventsHelper(loggerFactory.CreateLogger <LibraryManagerEventsHelper>(), _traktApi);
            _userDataManagerEventsHelper = new UserDataManagerEventsHelper(loggerFactory.CreateLogger <UserDataManagerEventsHelper>(), _traktApi);
        }
コード例 #21
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="jsonSerializer"></param>
        /// <param name="sessionManager"> </param>
        /// <param name="userDataManager"></param>
        /// <param name="libraryManager"> </param>
        /// <param name="logger"></param>
        /// <param name="httpClient"></param>
        /// <param name="appHost"></param>
        /// <param name="fileSystem"></param>
        public ServerMediator(
            IJsonSerializer jsonSerializer,
            ISessionManager sessionManager,
            IUserDataManager userDataManager,
            ILibraryManager libraryManager,
            ILoggerFactory logger,
            IHttpClient httpClient,
            IServerApplicationHost appHost,
            IFileSystem fileSystem)
        {
            _sessionManager  = sessionManager;
            _libraryManager  = libraryManager;
            _userDataManager = userDataManager;
            _logger          = logger.CreateLogger("Trakt");

            _traktApi = new TraktApi(jsonSerializer, _logger, httpClient, appHost, userDataManager, fileSystem);
            _libraryManagerEventsHelper  = new LibraryManagerEventsHelper(_logger, _traktApi);
            _userDataManagerEventsHelper = new UserDataManagerEventsHelper(_logger, _traktApi);
        }
コード例 #22
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="jsonSerializer"></param>
        /// <param name="sessionManager"> </param>
        /// <param name="userDataManager"></param>
        /// <param name="libraryManager"> </param>
        /// <param name="logger"></param>
        /// <param name="httpClient"></param>
        /// <param name="fileSystem"></param>
        public ServerMediator(IJsonSerializer jsonSerializer, ISessionManager sessionManager, IUserDataManager userDataManager,
                              ILibraryManager libraryManager, ILogManager logger, IHttpClient httpClient, IFileSystem fileSystem)
        {
            Instance         = this;
            _sessionManager  = sessionManager;
            _userDataManager = userDataManager;
            _libraryManager  = libraryManager;
            _logger          = logger.GetLogger("Trakt");
            _fileSystem      = fileSystem;

            _traktApi = new TraktApi(jsonSerializer, _logger, httpClient);
            _service  = new TraktUriService(_traktApi, _logger, _libraryManager);
            _libraryManagerEventsHelper  = new LibraryManagerEventsHelper(_logger, _fileSystem, _traktApi);
            _progressEvents              = new List <ProgressEvent>();
            _userDataManagerEventsHelper = new UserDataManagerEventsHelper(_logger, _traktApi);

            // TODO This should probably be elsewhere.
            UpdateUserRatingFormat();

            EnableUserDataSavedEventListener();
        }
コード例 #23
0
        public async Task <IEnumerable <SearchTvShowViewModel> > MostWatches()
        {
            var result = await MemCache.GetOrAdd(CacheKeys.MostWatchesTv, async() => await TraktApi.GetMostWatchesShows(), DateTime.Now.AddHours(12));

            var processed = await ProcessResults(result);

            return(processed);
        }
コード例 #24
0
ファイル: Channel.cs プロジェクト: bakes82/Trakt
        private async Task <ChannelItemResult> GetChannelItemsInternal()
        {
            var newItems = new List <ChannelItemInfo>();

            /*return await Task.FromResult(new ChannelItemResult
             * {
             *  Items = newItems.ToList()
             * });*/
            var channel = LibraryManager.GetItemList(new InternalItemsQuery
            {
                Name = Name
            });

            var libraryItems = LibraryManager.GetInternalItemIds(new InternalItemsQuery
            {
                ParentIds = new[] { channel[0].InternalId }
            }).ToList();

            var users = UserManager.Users.Where(u => UserHelper.GetTraktUser(u) != null).ToList();

            // No point going further if we don't have users.
            if (users.Count == 0)
            {
                Logger.Info("No Users returned");
                return(new ChannelItemResult());
            }

            foreach (var user in users)
            {
                Logger.Info(user.Name);
            }
            var adminUser          = users.Single(x => x.Name == "Administrator");
            var adminUserTraktUser = UserHelper.GetTraktUser(adminUser.Id);

            //var listData = client.Users.GetCustomListItemsAsync("movistapp", "horror").Result;
            var listData = await TraktApi.GetTraktUserListItems(adminUserTraktUser, ListConfig.ListUserName, ListConfig.ListName, new CancellationToken());

            Logger.Info($"Count of items on list {listData.Count}");
            //_logger.Info(_jsonSerializer.SerializeToString(data));

            var mediaItems =
                LibraryManager.GetItemList(
                    new InternalItemsQuery()
            {
                IncludeItemTypes = new[] { nameof(Movie) },
                IsVirtualItem    = false,
                OrderBy          = new[]
                {
                    new ValueTuple <string, SortOrder>(ItemSortBy.SeriesSortName, SortOrder.Ascending),
                    new ValueTuple <string, SortOrder>(ItemSortBy.SortName, SortOrder.Ascending)
                }
            })
                .ToList();

            Logger.Info($"Count of items in emby {mediaItems.Count}");

            foreach (var movie in mediaItems.OfType <Movie>())
            {
                //Logger.Info($"Movie {movie.Name}");

                if (libraryItems.Contains(movie.InternalId))
                {
                    continue;
                }

                var foundMovie = Match.FindMatch(movie, listData);

                if (foundMovie != null)
                {
                    //Logger.Info($"Movie {movie.Name} found");

                    var embyMove = LibraryManager.GetItemById(movie.Id);
                    if (embyMove != null)
                    {
                        Logger.Info($"Emby Movie {embyMove}");
                        // if(string.IsNullOrEmpty(embyMove.Path)){
                        var newMovie = new ChannelItemInfo
                        {
                            Name         = embyMove.Name,
                            ImageUrl     = embyMove.PrimaryImagePath,
                            Id           = embyMove.Id.ToString(),
                            Type         = ChannelItemType.Media,
                            ContentType  = ChannelMediaContentType.Movie,
                            MediaType    = ChannelMediaType.Video,
                            IsLiveStream = false,
                            MediaSources = new List <MediaSourceInfo>
                            {
                                new ChannelMediaInfo
                                {
                                    Path = embyMove.Path, Protocol = MediaProtocol.File
                                }.ToMediaSource()
                            },
                            OriginalTitle = embyMove.OriginalTitle
                        };
                        newItems.Add(newMovie);
                        // }
                    }
                }
                else
                {
                    //Logger.Debug($"Movie {movie.Name} not found");
                }
            }

            Logger.Info($"Count of items in List to add {newItems.Count}");


            return(await Task.FromResult(new ChannelItemResult
            {
                Items = newItems.ToList()
            }));
        }
コード例 #25
0
        public async Task <ChannelItemResult> GetChannelItemResult(IUserManager userManager,
                                                                   ILibraryManager libraryManager, TraktChannel channelToConfigure, ILogger logger, TraktApi traktApi,
                                                                   CancellationToken cancellationToken)
        {
            //await Plugin.Instance.SchedTaskResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false);

            try
            {
                var users = userManager.Users;

                var channels = libraryManager.GetItemList(new InternalItemsQuery
                {
                    Recursive        = true,
                    IncludeItemTypes = new[] { "Channel" }
                }).Where(x => !string.IsNullOrEmpty(x.Name)).ToList();


                var currentChannel = channels.First(x => x.Name == channelToConfigure.ChannelName).Id.ToString()
                                     .Replace("-", string.Empty);

                if (!channelToConfigure.Enabled)
                {
                    foreach (var user in users)
                    {
                        user.Policy.EnableAllChannels = false;

                        var enabledChannels = user.Policy.EnabledChannels != null
                            ? user.Policy.EnabledChannels.ToList()
                            : new List <string>();

                        var disabledChannels = user.Policy.BlockedChannels != null
                            ? user.Policy.BlockedChannels.ToList()
                            : new List <string>();

                        //Logger.Info("Enabled " + string.Join(",", enabledChannels.Select(x => x.ToString()).ToArray()));
                        //Logger.Info("Blocked " + string.Join(",", disabledChannels.Select(x => x.ToString()).ToArray()));

                        if (!disabledChannels.Contains(currentChannel))
                        {
                            disabledChannels.Add(currentChannel);
                        }
                        //Logger.Info("Added To Disabled " + currentChannel);

                        if (enabledChannels.Any())
                        {
                            if (enabledChannels.Contains(currentChannel))
                            {
                                enabledChannels.Remove(currentChannel);
                            }
                        }
                        else
                        {
                            foreach (var channel in channels.Where(x => x.Name != channelToConfigure.ChannelName))
                            {
                                enabledChannels.Add(channel.Id.ToString().Replace("-", string.Empty));
                            }
                        }

                        user.Policy.EnabledChannels = enabledChannels.ToArray();
                        user.Policy.BlockedChannels = disabledChannels.ToArray();

                        logger.Info("Enabled " + string.Join(",", enabledChannels.Select(x => x.ToString()).ToArray()));
                        logger.Info("Blocked " +
                                    string.Join(",", disabledChannels.Select(x => x.ToString()).ToArray()));

                        userManager.UpdateUser(user);
                    }
                }
                else
                {
                    foreach (var user in users)
                    {
                        user.Policy.EnableAllChannels = false;

                        var enabledChannels = user.Policy.EnabledChannels != null
                            ? user.Policy.EnabledChannels.ToList()
                            : new List <string>();

                        var disabledChannels = user.Policy.BlockedChannels != null
                            ? user.Policy.BlockedChannels.ToList()
                            : new List <string>();

                        //Logger.Info("Enabled " + string.Join(",", enabledChannels.Select(x => x.ToString()).ToArray()));
                        //Logger.Info("Blocked " + string.Join(",", disabledChannels.Select(x => x.ToString()).ToArray()));

                        if (disabledChannels.Contains(currentChannel))
                        {
                            disabledChannels.Remove(currentChannel);
                        }

                        if (enabledChannels.Any())
                        {
                            if (enabledChannels.Contains(currentChannel))
                            {
                                continue;
                            }

                            enabledChannels.Add(currentChannel);
                        }
                        else
                        {
                            foreach (var channel in channels)
                            {
                                enabledChannels.Add(channel.Id.ToString().Replace("-", string.Empty));
                            }
                        }

                        user.Policy.EnabledChannels = enabledChannels.ToArray();
                        user.Policy.BlockedChannels = disabledChannels.ToArray();

                        logger.Info("Enabled " + string.Join(",", enabledChannels.Select(x => x.ToString()).ToArray()));
                        logger.Info("Blocked " +
                                    string.Join(",", disabledChannels.Select(x => x.ToString()).ToArray()));

                        userManager.UpdateUser(user);
                    }
                }

                var newItems = new List <ChannelItemInfo>();

                if (channelToConfigure.Enabled == false)
                {
                    return(await Task.FromResult(new ChannelItemResult
                    {
                        Items = newItems.ToList()
                    }));
                }

                if (string.IsNullOrEmpty(Plugin.Instance.PluginConfiguration.Pin) &&
                    string.IsNullOrEmpty(Plugin.Instance.PluginConfiguration.TraktUser.AccessToken))
                {
                    return(await Task.FromResult(new ChannelItemResult
                    {
                        Items = newItems.ToList()
                    }));
                }

                var channelLibraryItem = libraryManager.GetItemList(new InternalItemsQuery
                {
                    Name = channelToConfigure.ChannelName
                });

                logger.Info(channelToConfigure.ChannelName);
                logger.Info("Found " + channelLibraryItem.Length.ToString());


                var libraryItems = libraryManager.GetInternalItemIds(new InternalItemsQuery
                {
                    ParentIds = new[] { channelLibraryItem[0].InternalId }
                }).ToList();

                if (!string.IsNullOrEmpty(Plugin.Instance.PluginConfiguration.Pin))
                {
                    Plugin.Instance.PluginConfiguration.TraktUser.PIN = Plugin.Instance.PluginConfiguration.Pin;
                }

                var listData = await traktApi.GetTraktUserListItems(Plugin.Instance.PluginConfiguration.TraktUser,
                                                                    channelToConfigure.TraktListUserName, channelToConfigure.TraktListName, new CancellationToken());

                logger.Info($"Count of items on list {listData.Count}");

                var mediaItems =
                    libraryManager.GetItemList(
                        new InternalItemsQuery
                {
                    IncludeItemTypes = new[] { nameof(Movie) },
                    IsVirtualItem    = false,
                    OrderBy          = new[]
                    {
                        new ValueTuple <string, SortOrder>(ItemSortBy.SeriesSortName, SortOrder.Ascending),
                        new ValueTuple <string, SortOrder>(ItemSortBy.SortName, SortOrder.Ascending)
                    }
                })
                    .ToList();

                logger.Info($"Count of items in emby {mediaItems.Count}");

                var foundMovies = new List <string>();
                //var notFoundMovies = new List<string>();

                logger.Info("Internal Ids: " + string.Join(", ", libraryItems.Select(x => x.ToString()).ToArray()));

                foreach (var movie in mediaItems.OfType <Movie>().OrderBy(x => x.DateCreated))
                {
                    if (channels.Select(x => x.ParentId).Contains(movie.Parent.ParentId))
                    {
                        continue;
                    }

                    //Logger.Info($"Movie {movie.Name}");

                    //logger.Info(movie.InternalId.ToString());

                    if (libraryItems.Contains(movie.InternalId))
                    {
                        continue;
                    }

                    var foundMovie = Match.FindMatch(movie, listData);

                    if (foundMovie != null)
                    {
                        //Logger.Info($"Movie {movie.Name} found");

                        var embyMove = libraryManager.GetItemById(movie.Id);
                        if (embyMove != null)
                        {
                            foundMovies.Add(embyMove.Name);
                            //logger.Info($"Emby Movie {embyMove} found!");
                            // if(string.IsNullOrEmpty(embyMove.Path)){
                            var newMovie = new ChannelItemInfo
                            {
                                Name         = embyMove.Name,
                                ImageUrl     = embyMove.PrimaryImagePath,
                                Id           = embyMove.Id.ToString(),
                                Type         = ChannelItemType.Media,
                                ContentType  = ChannelMediaContentType.Movie,
                                MediaType    = ChannelMediaType.Video,
                                IsLiveStream = false,
                                MediaSources = new List <MediaSourceInfo>
                                {
                                    new ChannelMediaInfo
                                    {
                                        Path = embyMove.Path, Protocol = MediaProtocol.File
                                    }.ToMediaSource()
                                },
                                OriginalTitle = embyMove.OriginalTitle
                            };
                            if (!newItems.Any(x => x.Id == embyMove.Id.ToString()))
                            {
                                newItems.Add(newMovie);
                            }

                            // }
                        }
                    }
                }

                logger.Info($"Count of items in List to add {newItems.Count}");

                var distinctItems = newItems.Distinct().ToList();

                logger.Info($"Count of distinct items in List to add {distinctItems.Count}");

                logger.Info("Found Movies: " + string.Join(", ", foundMovies.Select(x => x.ToString()).ToArray()));
                //logger.Info("Not Found Movies: " + string.Join(", ", notFoundMovies.Select(x => x.ToString()).ToArray()));

                logger.Info(
                    "Not Found Movies: " + string.Join(", ", distinctItems.Select(x => x.Id.ToString()).ToArray()));


                return(await Task.FromResult(new ChannelItemResult
                {
                    Items = distinctItems.ToList()
                }));
            }
            finally
            {
                //Plugin.Instance.SchedTaskResourcePool.Release();
            }
        }
コード例 #26
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="traktApi"></param>
 public UserDataManagerEventsHelper(ILogger logger, TraktApi traktApi)
 {
     _userDataPackages = new List <UserDataPackage>();
     _logger           = logger;
     _traktApi         = traktApi;
 }
コード例 #27
0
        public async Task <IEnumerable <TreeNode <SearchTvShowViewModel> > > Trending()
        {
            var result = await MemCache.GetOrAdd(CacheKeys.TrendingTv, async() => await TraktApi.GetTrendingShows(), DateTime.Now.AddHours(12));

            var processed = await ProcessResults(result);

            return(processed.Select(ParseIntoTreeNode).ToList());
        }
コード例 #28
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="traktApi"></param>
 public LibraryManagerEventsHelper(ILogger logger, TraktApi traktApi)
 {
     _queuedEvents = new List <LibraryEvent>();
     _logger       = logger;
     _traktApi     = traktApi;
 }