public override void Initialise(string sortCriteria, uint?offset = null, uint?count = null)
        {
            Logger.Debug("MediaServer initialise share containers");

            base.Initialise(sortCriteria, offset, count);
            IDictionary <Guid, Share> shares = GetShares();

            IMediaLibrary  library = ServiceRegistration.Get <IMediaLibrary>();
            BasicContainer parent  = new BasicContainer(Id, Client);
            var            items   = (from share in shares
                                      select new
            {
                Item = library.LoadItem(share.Value.SystemId,
                                        share.Value.BaseResourcePath,
                                        NECESSARY_SHARE_MIA_TYPE_IDS,
                                        OPTIONAL_SHARE_MIA_TYPE_IDS),
                ShareName = share.Value.Name
            }).ToList();

            foreach (var item in items.OrderBy(s => s.ShareName))
            {
                try
                {
                    if (item.Item != null)
                    {
                        Add((BasicObject)MediaLibraryHelper.InstansiateMediaLibraryObject(item.Item, parent, item.ShareName));
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error("Media item '{0}' could not be added", ex, item.Item);
                }
            }
        }
        public override void Initialise(string sortCriteria, uint?offset = null, uint?count = null)
        {
            base.Initialise(sortCriteria, offset, count);

            IMediaLibrary    library       = ServiceRegistration.Get <IMediaLibrary>();
            var              allowedShares = GetAllowedShares();
            List <MediaItem> shares        = new List <MediaItem>();

            foreach (var share in allowedShares)
            {
                if (share.MediaCategories.Any(x => x.Contains("Image")))
                {
                    MediaItem item = library.LoadItem(share.SystemId, share.BaseResourcePath, NECESSARY_SHARE_MIA_TYPE_IDS, OPTIONAL_SHARE_MIA_TYPE_IDS, UserId);
                    if (item != null && item.Aspects.ContainsKey(DirectoryAspect.ASPECT_ID))
                    {
                        shares.Add(item);
                    }
                }
            }

            foreach (MediaItem share in shares.OrderBy(s => MediaItemAspect.TryGetAspect(s.Aspects, MediaAspect.Metadata, out var aspect) ? aspect.GetAttributeValue <string>(MediaAspect.ATTR_SORT_TITLE) : ""))
            {
                IList <MediaItem> albums = library.Browse(share.MediaItemId, NECESSARY_SHARE_MIA_TYPE_IDS, OPTIONAL_SHARE_MIA_TYPE_IDS, UserId, false);
                foreach (MediaItem album in albums)
                {
                    if (album != null && album.Aspects.ContainsKey(DirectoryAspect.ASPECT_ID))
                    {
                        Add(new MediaLibraryBrowser(album, Client));
                    }
                }
            }
        }