public void CanBeReadByTarget()
        {
            var check = repository.GetByTarget <ITrack>(track1.Target).FirstOrDefault();

            Assert.IsNotNull(check);
            Assert.AreEqual(track1.Name, check.Name);
        }
Beispiel #2
0
        public virtual IAlbum GetAlbum(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository, IArtist artist)
        {
            IAlbum album = null;
            var    clip  = mediaItemRepository.GetByTarget <IClip>(Location).FirstOrDefault();

            if (clip != null)
            {
                album = mediaItemRepository.GetByLocation <IAlbum>(clip.Catalog);
                if (album != null)
                {
                    return(album);
                }
            }

            var albumName = GetAlbumName();
            var summary   = string.Empty;

            album = mediaItemRepository.GetByName <IAlbum>(albumName).FirstOrDefault();
            if (album != null)
            {
                return(album);
            }

            var albumNumber = GetAlbumNumber();
            var date        = GetDate();

            var builder = new MediaItemBuilder <IAlbum>(securityContext, mediaFactory)
                          .Identity(albumName, summary, date, date, albumNumber)
                          .Creator(artist.Location, artist.Name);

            return(builder.ToMediaItem());
        }
Beispiel #3
0
        public virtual IClip GetClip(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository, IArtist artist, IAlbum album)
        {
            var clip = mediaItemRepository.GetByTarget <IClip>(Location).FirstOrDefault();

            if (clip != null)
            {
                return(clip);
            }

            var  name     = GetClipName();
            var  summary  = string.Empty;
            var  number   = GetClipNumber();
            var  date     = GetDate();
            var  duration = TimeSpan.FromMinutes(10); //file != null && file.Properties != null ? file.Properties.Duration : TimeSpan.FromMinutes(5);
            uint height   = 480;                      //file != null && file.Properties != null ? (uint)file.Properties.VideoHeight : 480;
            uint width    = 640;                      //file != null && file.Properties != null ? (uint)file.Properties.VideoWidth : 640;

            var builder = new MediaItemBuilder <IClip>(securityContext, mediaFactory)
                          .Identity(name, summary, date, date, number)
                          .Size(duration, height, width)
                          .Creator(artist.Location, artist.Name)
                          .Catalog(album.Location, album.Name)
                          .Target(Location, Type.Name);

            return(builder.ToMediaItem());
        }
Beispiel #4
0
        public override IAlbum GetAlbum(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository, IArtist artist)
        {
            IAlbum album = null;
            var    track = mediaItemRepository.GetByTarget <ITrack>(Location).FirstOrDefault();

            if (track != null)
            {
                album = mediaItemRepository.GetByLocation <IAlbum>(track.Catalog);
                if (album != null)
                {
                    return(album);
                }
            }

            var albumTitle = "Unknown Album";
            var summary    = string.Empty;

            //var albumTag = GetTags().Where(x => x.Type == Id3v2TagType.Album).FirstOrDefault();
            if (id3v2Tag != null && id3v2Tag.Album != null)
            {
                albumTitle = id3v2Tag.Album; //albumTag.Tuple.ToString();
                album      = mediaItemRepository.GetByCreatorAndName <IAlbum>(artist.Location, albumTitle);
                if (album != null)
                {
                    return(album);
                }
            }

            var builder = new MediaItemBuilder <IAlbum>(securityContext, mediaFactory)
                          .Identity(albumTitle, summary)
                          .Creator(artist.Location, artist.Name);

            return(builder.ToMediaItem());
        }
Beispiel #5
0
        public override IArtist GetArtist(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository)
        {
            IArtist artist = null;
            var     track  = mediaItemRepository.GetByTarget <ITrack>(Location).FirstOrDefault();

            if (track != null)
            {
                artist = mediaItemRepository.GetByLocation <IArtist>(track.Creator);
                if (artist != null)
                {
                    return(artist);
                }
            }

            if (id3v2Tag == null || id3v2Tag.JoinedPerformers == null)
            {
                return(new MediaItemBuilder <IArtist>(securityContext, mediaFactory).GetDefault());
            }

            var artistName = id3v2Tag.JoinedPerformers;
            var summary    = string.Empty;

            artist = mediaItemRepository.GetByName <IArtist>(artistName).FirstOrDefault();
            if (artist != null)
            {
                return(artist);
            }

            var builder = new MediaItemBuilder <IArtist>(securityContext, mediaFactory)
                          .Identity(artistName, summary);

            return(builder.ToMediaItem());
        }
Beispiel #6
0
        public virtual IArtist GetArtist(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository)
        {
            var clip = mediaItemRepository.GetByTarget <IClip>(Location).FirstOrDefault();

            if (clip != null)
            {
                var artist = mediaItemRepository.GetByLocation <IArtist>(clip.Creator);
                if (artist != null)
                {
                    return(artist);
                }
            }

            return(new MediaItemBuilder <IArtist>(securityContext, mediaFactory).GetDefault());
        }
Beispiel #7
0
        public override IClip GetClip(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository, IArtist artist, IAlbum album)
        {
            var clip = mediaItemRepository.GetByTarget<IClip>(Location).FirstOrDefault();
            if (clip != null)
            {
                return clip;
            }

            var name = GetClipName();
            var summary = string.Empty;
            var number = GetClipNumber();
            var date = GetDate();
            var duration = file != null && file.Properties != null ? file.Properties.Duration : TimeSpan.FromMinutes(5);
            var height = file != null && file.Properties != null ? (uint)file.Properties.VideoHeight : 480;
            var width = file != null && file.Properties != null ? (uint)file.Properties.VideoWidth : 640;

            var builder = new MediaItemBuilder<IClip>(securityContext, mediaFactory)
                .Identity(name, summary, date, date, number)
                .Size(duration, height, width)
                .Target(Location, Type.Name);

            return builder.ToMediaItem();
        }
Beispiel #8
0
        public virtual IAlbum GetAlbum(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository, IArtist artist)
        {
            IAlbum album = null;
            var clip = mediaItemRepository.GetByTarget<IClip>(Location).FirstOrDefault();
            if (clip != null)
            {
                album = mediaItemRepository.GetByLocation<IAlbum>(clip.Catalog);
                if (album != null)
                    return album;
            }

            var albumName = GetAlbumName();
            var summary = string.Empty;
            album = mediaItemRepository.GetByName<IAlbum>(albumName).FirstOrDefault();
            if (album != null)
            {
                return album;
            }

            var albumNumber = GetAlbumNumber();
            var date = GetDate();

            var builder = new MediaItemBuilder<IAlbum>(securityContext, mediaFactory)
                .Identity(albumName, summary, date, date, albumNumber)
                .Creator(artist.Location, artist.Name);

            return builder.ToMediaItem();
        }
Beispiel #9
0
        public virtual IArtist GetArtist(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository)
        {
            var clip = mediaItemRepository.GetByTarget<IClip>(Location).FirstOrDefault();
            if (clip != null)
            {
                var artist = mediaItemRepository.GetByLocation<IArtist>(clip.Creator);
                if (artist != null)
                    return artist;
            }

            return new MediaItemBuilder<IArtist>(securityContext, mediaFactory).GetDefault();
        }
Beispiel #10
0
        public override ITrack GetTrack(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository, IAudioStreamFactory audioStreamFactory, IArtist artist, IAlbum album)
        {
            var track = mediaItemRepository.GetByTarget<ITrack>(Location).FirstOrDefault();
            //if (track != null)
                //return track;

            if (id3v2Tag == null)
            {
                if (track != null)
                    return track;

                var builder = new MediaItemBuilder<ITrack>(securityContext, mediaFactory)
                    .Identity("Unknown", string.Empty)
                    .Creator(artist.Location, artist.Name)
                    .Catalog(album.Location, album.Name)
                    .Target(Location, Type.Name);

                return builder.ToMediaItem();
            }

            var name = id3v2Tag.Title != null ? id3v2Tag.Title : "Unknown Track";
            var summary = id3v2Tag.Lyrics ?? string.Empty;
            
            var recordDate = DateTime.MinValue;
            if (id3v2Tag != null && id3v2Tag.RecordingDate > DateTime.MinValue)
                recordDate = id3v2Tag.RecordingDate;
            else if (id3v1Tag != null && id3v1Tag.Year >= DateTime.MinValue.Year && id3v1Tag.Year <= DateTime.MaxValue.Year)
                recordDate = new DateTime((int)id3v1Tag.Year, 1, 1);

            var releaseDate = DateTime.MinValue;
            if (id3v2Tag != null && id3v2Tag.ReleaseDate > DateTime.MinValue)
                releaseDate = id3v2Tag.ReleaseDate;
            else if (id3v1Tag != null && id3v1Tag.Year >= DateTime.MinValue.Year && id3v1Tag.Year <= DateTime.MaxValue.Year)
                releaseDate = new DateTime((int)id3v1Tag.Year, 1, 1);

            var number = id3v2Tag.Track;
            var duration = id3v2Tag.Duration;
            if (duration == TimeSpan.Zero)
            {
                using (var audioStream = audioStreamFactory.CreateAudioStream(Location))
                {
                    if (audioStream != null)
                    {
                        duration = audioStream.Duration;
                    }
                }
            }

            var thumbnail = Guid.Empty.ToUrn();
            var thumbnailData = id3v2Tag.Pictures != null && id3v2Tag.Pictures.Length > 0 ? id3v2Tag.Pictures[0].Data.ToArray() : new byte[0];

            var trackId = track != null ? track.Location : Guid.NewGuid().ToUrn();

            var fullBuilder = new MediaItemBuilder<ITrack>(securityContext, mediaFactory)
                .Identity(name, summary, recordDate, releaseDate, number, trackId)
                .Size(duration)
                .Creator(artist.Location, artist.Name)
                .Catalog(album.Location, album.Name)
                .Target(Location, Type.Name)
                .Thumbnail(thumbnail, thumbnailData);

            return fullBuilder.ToMediaItem();
        }
Beispiel #11
0
        public override IAlbum GetAlbum(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository, IArtist artist)
        {
            IAlbum album = null;
            var track = mediaItemRepository.GetByTarget<ITrack>(Location).FirstOrDefault();
            if (track != null)
            {
                album = mediaItemRepository.GetByLocation<IAlbum>(track.Catalog);
                if (album != null)
                    return album;
            }

            var albumTitle = "Unknown Album";
            var summary = string.Empty;
            //var albumTag = GetTags().Where(x => x.Type == Id3v2TagType.Album).FirstOrDefault();
            if (id3v2Tag != null && id3v2Tag.Album != null)
            {
                albumTitle = id3v2Tag.Album; //albumTag.Tuple.ToString();
                album = mediaItemRepository.GetByCreatorAndName<IAlbum>(artist.Location, albumTitle);
                if (album != null)
                    return album;
            }

            var builder = new MediaItemBuilder<IAlbum>(securityContext, mediaFactory)
                .Identity(albumTitle, summary)
                .Creator(artist.Location, artist.Name);

            return builder.ToMediaItem();
        }
Beispiel #12
0
        public override IArtist GetArtist(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository)
        {
            IArtist artist = null;
            var track = mediaItemRepository.GetByTarget<ITrack>(Location).FirstOrDefault();
            if (track != null)
            {
                artist = mediaItemRepository.GetByLocation<IArtist>(track.Creator);
                if (artist != null)
                    return artist;
            }

            if (id3v2Tag == null || id3v2Tag.JoinedPerformers == null)
                return new MediaItemBuilder<IArtist>(securityContext, mediaFactory).GetDefault();

            var artistName = id3v2Tag.JoinedPerformers;
            var summary = string.Empty;
            artist = mediaItemRepository.GetByName<IArtist>(artistName).FirstOrDefault();
            if (artist != null)
                return artist;

            var builder = new MediaItemBuilder<IArtist>(securityContext, mediaFactory)
                .Identity(artistName, summary);

            return builder.ToMediaItem();
        }
Beispiel #13
0
        public override ITrack GetTrack(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository, IAudioStreamFactory audioStreamFactory, IArtist artist, IAlbum album)
        {
            var track = mediaItemRepository.GetByTarget <ITrack>(Location).FirstOrDefault();

            //if (track != null)
            //return track;

            if (id3v2Tag == null)
            {
                if (track != null)
                {
                    return(track);
                }

                var builder = new MediaItemBuilder <ITrack>(securityContext, mediaFactory)
                              .Identity("Unknown", string.Empty)
                              .Creator(artist.Location, artist.Name)
                              .Catalog(album.Location, album.Name)
                              .Target(Location, Type.Name);

                return(builder.ToMediaItem());
            }

            var name    = id3v2Tag.Title != null ? id3v2Tag.Title : "Unknown Track";
            var summary = id3v2Tag.Lyrics ?? string.Empty;

            var recordDate = DateTime.MinValue;

            if (id3v2Tag != null && id3v2Tag.RecordingDate > DateTime.MinValue)
            {
                recordDate = id3v2Tag.RecordingDate;
            }
            else if (id3v1Tag != null && id3v1Tag.Year >= DateTime.MinValue.Year && id3v1Tag.Year <= DateTime.MaxValue.Year)
            {
                recordDate = new DateTime((int)id3v1Tag.Year, 1, 1);
            }

            var releaseDate = DateTime.MinValue;

            if (id3v2Tag != null && id3v2Tag.ReleaseDate > DateTime.MinValue)
            {
                releaseDate = id3v2Tag.ReleaseDate;
            }
            else if (id3v1Tag != null && id3v1Tag.Year >= DateTime.MinValue.Year && id3v1Tag.Year <= DateTime.MaxValue.Year)
            {
                releaseDate = new DateTime((int)id3v1Tag.Year, 1, 1);
            }

            var number   = id3v2Tag.Track;
            var duration = id3v2Tag.Duration;

            if (duration == TimeSpan.Zero)
            {
                using (var audioStream = audioStreamFactory.CreateAudioStream(Location))
                {
                    if (audioStream != null)
                    {
                        duration = audioStream.Duration;
                    }
                }
            }

            var thumbnail     = Guid.Empty.ToUrn();
            var thumbnailData = id3v2Tag.Pictures != null && id3v2Tag.Pictures.Length > 0 ? id3v2Tag.Pictures[0].Data.ToArray() : new byte[0];

            var trackId = track != null ? track.Location : Guid.NewGuid().ToUrn();

            var fullBuilder = new MediaItemBuilder <ITrack>(securityContext, mediaFactory)
                              .Identity(name, summary, recordDate, releaseDate, number, trackId)
                              .Size(duration)
                              .Creator(artist.Location, artist.Name)
                              .Catalog(album.Location, album.Name)
                              .Target(Location, Type.Name)
                              .Thumbnail(thumbnail, thumbnailData);

            return(fullBuilder.ToMediaItem());
        }