Exemplo n.º 1
0
        private static void InitialiseContainerTree()
        {
            RootContainer = new BasicContainer("0")
            {
                Title = "MediaPortal Media Library"
            };
            var audioContainer = new BasicContainer("A")
            {
                Title = "Audio"
            };

            RootContainer.Add(audioContainer);
            var pictureContainer = new BasicContainer("P")
            {
                Title = "Picture"
            };

            RootContainer.Add(pictureContainer);
            var videoContainer = new BasicContainer("V")
            {
                Title = "Video"
            };

            RootContainer.Add(videoContainer);
            videoContainer.Add(new MediaLibraryGenreContainer("VG")
            {
                Title = "Genres"
            });
            RootContainer.Add(new MediaLibraryShareContainer("S")
            {
                Title = "Shares"
            });
        }
        public static IDirectoryObject InstansiateMediaLibraryObject(MediaItem item, string baseKey, BasicContainer parent, string title)
        {
            IDirectoryObject obj;
            // Choose the appropiate MediaLibrary* object for the media item
            if (item.Aspects.ContainsKey(DirectoryAspect.ASPECT_ID))
            {
                obj = new MediaLibraryContainer(baseKey, item);
            }
            else if (item.Aspects.ContainsKey(AudioAspect.ASPECT_ID))
            {
                obj = new MediaLibraryMusicTrack(baseKey, item);
            }
            else if (item.Aspects.ContainsKey(ImageAspect.ASPECT_ID))
            {
                obj = new MediaLibraryImageItem(baseKey, item);
            }
            else if (item.Aspects.ContainsKey(VideoAspect.ASPECT_ID))
            {
                obj = new MediaLibraryVideoItem(baseKey, item);
            }
            else
            {
                obj = null;
            }

            // Assign the parent
            if (parent != null && obj != null)
            {
                parent.Add((TreeNode<object>)obj);
            }

            // Initialise the object
            if (obj is MediaLibraryContainer)
            {
                ((MediaLibraryContainer)obj).Initialise();                
            }
            else if (obj is MediaLibraryItem)
            {
                ((MediaLibraryItem)obj).Initialise();
            }
            if (obj != null)
            {
                ServiceRegistration.Get<ILogger>().Info("Created object of type {0} for MediaItem {1}", obj.GetType().Name, item.MediaItemId);
                if (title != null)
                {
                    obj.Title = title;
                }
            }      
      
            return obj;
        }
Exemplo n.º 3
0
        public static IDirectoryObject InstansiateMediaLibraryObject(MediaItem item, BasicContainer parent, string title)
        {
            BasicObject obj;

            Logger.Debug("Instantiate media library object from {0} {1} {2}", item != null ? item.MediaItemId.ToString() : "null", parent != null ? parent.Key : "null", title ?? "null");
            //Logger.Debug("Media library object title {0}", MediaItemAspect.GetAspect(item.Aspects, MediaAspect.Metadata));
            //Logger.Debug("Media library object title {0}", MediaItemAspect.GetAspect(item.Aspects, MediaAspect.Metadata).GetAttributeValue(MediaAspect.ATTR_TITLE));
            //Logger.Debug("Media library object title {0}", MediaItemAspect.GetAspect(item.Aspects, MediaAspect.Metadata).GetAttributeValue(MediaAspect.ATTR_TITLE).ToString());
            // Choose the appropiate MediaLibrary* object for the media item
            try
            {
                if (item.Aspects.ContainsKey(DirectoryAspect.ASPECT_ID))
                {
                    obj = new MediaLibraryBrowser(item, parent.Client);
                }
                else if (item.Aspects.ContainsKey(AudioAspect.ASPECT_ID))
                {
                    obj = new MediaLibraryMusicTrack(item, parent.Client);
                }
                else if (item.Aspects.ContainsKey(AudioAlbumAspect.ASPECT_ID))
                {
                    obj = new MediaLibraryAlbumItem(item, parent.Client);
                }
                else if (item.Aspects.ContainsKey(ImageAspect.ASPECT_ID))
                {
                    obj = new MediaLibraryImageItem(item, parent.Client);
                }
                else if (item.Aspects.ContainsKey(VideoAspect.ASPECT_ID))
                {
                    obj = new MediaLibraryVideoItem(item, parent.Client);
                }
                else if (item.Aspects.ContainsKey(SeriesAspect.ASPECT_ID))
                {
                    obj = new MediaLibrarySeriesItem(item, parent.Client);
                }
                else if (item.Aspects.ContainsKey(SeasonAspect.ASPECT_ID))
                {
                    obj = new MediaLibrarySeasonItem(item, parent.Client);
                }
                else
                {
                    Logger.Warn("MediaServer item {0} {1} contains no valid aspects", item.MediaItemId, title);
                    return(null);
                }
            }
            catch (DlnaAspectMissingException e)
            {
                //Unable to create DlnaItem
                Logger.Warn(e.Message);
                return(null);
            }
            //Logger.Debug("MediaServer converted {0}:[{1}] into {2}", item.MediaItemId, string.Join(",", item.Aspects.Keys), obj.GetType().Name);

            // Assign the parent
            if (parent != null)
            {
                parent.Add(obj);
            }

            // Initialise the object
            //if (obj is MediaLibraryItem)
            //{
            //  ((MediaLibraryItem)obj).Initialise();
            //}
            obj.Restricted = true;
            Logger.Debug("Created object of type {0} for MediaItem {1}", obj.GetType().Name, item.MediaItemId);
            if (title != null)
            {
                obj.Title = title;
            }
            return(obj);
        }
Exemplo n.º 4
0
        private void InitialiseContainerTree()
        {
            if (Profile == null)
            {
                return;
            }

            ILocalization language = ServiceRegistration.Get <ILocalization>();

            List <BasicContainer> mediaRoots = new List <BasicContainer>();

            RootContainer = new BasicContainer(MediaLibraryHelper.CONTAINER_ROOT_KEY, this)
            {
                Title = StringUtils.TrimToNull(language.ToString(Consts.RES_ROOT)) ?? "MediaPortal Media Library"
            };
            if (MediaServerPlugin.Settings.ShowUserLogin)
            {
                IUserProfileDataManagement userManager = ServiceRegistration.Get <IUserProfileDataManagement>();
                var users = userManager.GetProfilesAsync().Result?.Where(u => u.ProfileType == UserProfileType.UserProfile);
                if (users?.Count() > 0)
                {
                    foreach (var user in users.Where(u => u.ProfileType == UserProfileType.UserProfile))
                    {
                        var userContainer = new BasicContainer($"{MediaLibraryHelper.CONTAINER_USERS_KEY}>{user.ProfileId}", this)
                        {
                            Title = user.Name
                        };
                        RootContainer.Add(userContainer);
                        mediaRoots.Add(userContainer);
                    }
                }
            }
            if (mediaRoots.Count == 0)
            {
                mediaRoots.Add(RootContainer);
            }

            foreach (var mediaRoot in mediaRoots)
            {
                var audioContainer = new BasicContainer(MediaLibraryHelper.CONTAINER_AUDIO_KEY, this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_AUDIO)) ?? "Audio"
                };
                audioContainer.Add(new MediaLibraryAlbumContainer(MediaLibraryHelper.CONTAINER_AUDIO_KEY + "AL", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_ALBUM)) ?? "Albums"
                });
                audioContainer.Add(new MediaLibraryMusicRecentContainer(MediaLibraryHelper.CONTAINER_AUDIO_KEY + "RA", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_RECENT)) ?? "Recently Added"
                });
                audioContainer.Add(new MediaLibraryAlbumArtistContainer(MediaLibraryHelper.CONTAINER_AUDIO_KEY + "AR", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_ALBUM_ARTIST)) ?? "Album Artists"
                });
                audioContainer.Add(new MediaLibraryMusicArtistContainer(MediaLibraryHelper.CONTAINER_AUDIO_KEY + "AAR", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_ARTIST)) ?? "Artists"
                });
                audioContainer.Add(new MediaLibraryMusicGenreContainer(MediaLibraryHelper.CONTAINER_AUDIO_KEY + "G", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_GENRE)) ?? "Genres"
                });
                audioContainer.Add(new MediaLibraryMusicYearContainer(MediaLibraryHelper.CONTAINER_AUDIO_KEY + "AY", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_YEAR)) ?? "Year"
                });
                audioContainer.Add(new MediaLibraryShareContainer(MediaLibraryHelper.CONTAINER_AUDIO_KEY + "AS", this, "Audio")
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_SHARE)) ?? "Shares"
                });
                mediaRoot.Add(audioContainer);

                var pictureContainer = new BasicContainer(MediaLibraryHelper.CONTAINER_IMAGES_KEY, this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_IMAGE)) ?? "Images"
                };
                pictureContainer.Add(new MediaLibraryImageAlbumContainer(MediaLibraryHelper.CONTAINER_IMAGES_KEY + "IA", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_ALBUM)) ?? "Albums"
                });
                pictureContainer.Add(new MediaLibraryImageRecentContainer(MediaLibraryHelper.CONTAINER_IMAGES_KEY + "RA", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_RECENT)) ?? "Recently Added"
                });
                pictureContainer.Add(new MediaLibraryImageYearContainer(MediaLibraryHelper.CONTAINER_IMAGES_KEY + "IY", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_YEAR)) ?? "Year"
                });
                pictureContainer.Add(new MediaLibraryShareContainer(MediaLibraryHelper.CONTAINER_IMAGES_KEY + "IS", this, "Image")
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_SHARE)) ?? "Shares"
                });
                mediaRoot.Add(pictureContainer);

                var videoContainer = new BasicContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY, this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_VIDEO)) ?? "Video"
                };
                var movieContainer = new BasicContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "M", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_MOVIE)) ?? "Movies"
                };
                movieContainer.Add(new MediaLibraryMovieContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "MT", null, this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_TITLE)) ?? "Titles"
                });
                movieContainer.Add(new MediaLibraryMovieRecentContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "MRA", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_RECENT)) ?? "Recently Added"
                });
                movieContainer.Add(new MediaLibraryMovieUnwatchedContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "MU", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_UNWATCHED)) ?? "Unwatched"
                });
                movieContainer.Add(new MediaLibraryMovieActorsContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "MAR", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_ACTOR)) ?? "Actors"
                });
                movieContainer.Add(new MediaLibraryMovieGenreContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "MG", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_GENRE)) ?? "Genres"
                });
                movieContainer.Add(new MediaLibraryMovieYearContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "MY", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_YEAR)) ?? "Year"
                });
                videoContainer.Add(movieContainer);
                var seriesContainer = new BasicContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "S", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_SERIES)) ?? "Series"
                };
                seriesContainer.Add(new MediaLibrarySeriesContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "ST", null, this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_TITLE)) ?? "Titles"
                });
                seriesContainer.Add(new MediaLibrarySeriesActorsContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "SAR", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_ACTOR)) ?? "Actors"
                });
                seriesContainer.Add(new MediaLibrarySeriesGenresContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "SG", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_GENRE)) ?? "Genres"
                });
                seriesContainer.Add(new MediaLibrarySeriesYearContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "SY", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_YEAR)) ?? "Year"
                });
                seriesContainer.Add(new MediaLibrarySeriesRecentContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "SRA", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_RECENT)) ?? "Recently Added"
                });
                seriesContainer.Add(new MediaLibrarySeriesUnwatchedContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "SU", this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_UNWATCHED)) ?? "Unwatched"
                });
                videoContainer.Add(seriesContainer);
                videoContainer.Add(new MediaLibraryShareContainer(MediaLibraryHelper.CONTAINER_VIDEO_KEY + "VS", this, "Video")
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_SHARE)) ?? "Shares"
                });
                mediaRoot.Add(videoContainer);

                if (ServiceRegistration.IsRegistered <ITvProvider>())
                {
                    mediaRoot.Add(new MediaLibraryBroadcastGroupContainer(MediaLibraryHelper.CONTAINER_BROADCAST_KEY, this)
                    {
                        Title = StringUtils.TrimToNull(language.ToString(Consts.RES_BROADCAST)) ?? "Broadcasts"
                    });
                }

                mediaRoot.Add(new MediaLibraryShareContainer(MediaLibraryHelper.CONTAINER_MEDIA_SHARES_KEY, this)
                {
                    Title = StringUtils.TrimToNull(language.ToString(Consts.RES_SHARE)) ?? "Shares"
                });
            }
        }