예제 #1
0
        public void SetUp()
        {
            linkConnection = connectionFactory.Create(connectionString);
            linkConnection.Open();
            linkRepository = new SQLiteLinkRepository(logger, linkConnection);
            linkRepository.Initialize();

            tagConnection = connectionFactory.Create(connectionString);
            tagConnection.Open();
            tagRepository = new SQLiteTagRepository(logger, tagTypeFactory, tagConnection);
            tagRepository.Initialize();

            mediaConnection = connectionFactory.Create(connectionString);
            mediaConnection.Open();
            mediaRepository = new SQLiteMediaRepository(logger, mediaFactory, mediaConnection);
            mediaRepository.Initialize();

            itemConnection = connectionFactory.Create(connectionString);
            itemConnection.Open();
            mediaItemRepository = new SQLiteMetadataRepository(logger, securityContext, mediaFactory, itemConnection);
            mediaItemRepository.Initialize();

            audioStreamFactory = new AudioStreamFactory();

            spider = new CatalogSpider(logger, securityContext, mediaFactory, linkRepository, tagRepository, mediaRepository, mediaItemRepository, audioStreamFactory);
        }
예제 #2
0
        public SpiderFactory(ILogger logger, ISecurityContext securityContext, IMediaFactory mediaFactory, ILinkRepository linkRepository, ITagRepository tagRepository, IMediaRepository mediaRepository, IMetadataRepository mediaItemRepository, IAudioStreamFactory audioStreamFactory)
        {
            if (logger == null)
                throw new ArgumentNullException("logger");
            if (securityContext == null)
                throw new ArgumentNullException("securityContext");
            if (mediaFactory == null)
                throw new ArgumentNullException("mediaFactory");
            if (linkRepository == null)
                throw new ArgumentNullException("linkRepository");
            if (tagRepository == null)
                throw new ArgumentNullException("tagRepository");
            if (mediaRepository == null)
                throw new ArgumentNullException("mediaRepository");
            if (mediaItemRepository == null)
                throw new ArgumentNullException("mediaItemRepository");

            this.logger = logger;
            this.securityContext = securityContext;
            this.securityContext = securityContext;
            this.mediaFactory = mediaFactory;
            this.linkRepository = linkRepository;
            this.tagRepository = tagRepository;
            this.mediaRepository = mediaRepository;
            this.mediaItemRepository = mediaItemRepository;
            this.audioStreamFactory = audioStreamFactory;
        }
        public void SetUp()
        {
            linkConnection = connectionFactory.Create(connectionString);
            linkConnection.Open();
            linkRepository = new SQLiteLinkRepository(logger, linkConnection);
            linkRepository.Initialize();

            tagConnection = connectionFactory.Create(connectionString);
            tagConnection.Open();
            tagRepository = new SQLiteTagRepository(logger, tagTypeFactory, tagConnection);
            tagRepository.Initialize();

            mediaConnection = connectionFactory.Create(connectionString);
            mediaConnection.Open();
            mediaRepository = new SQLiteMediaRepository(logger, mediaFactory, mediaConnection);
            mediaRepository.Initialize();

            itemConnection = connectionFactory.Create(connectionString);
            itemConnection.Open();
            mediaItemRepository = new SQLiteMetadataRepository(logger, securityContext, mediaFactory, itemConnection);
            mediaItemRepository.Initialize();

            audioStreamFactory = new AudioStreamFactory();

            spider = new CatalogSpider(logger, securityContext, mediaFactory, linkRepository, tagRepository, mediaRepository, mediaItemRepository, audioStreamFactory);
        }
 public static void AddFactory(IAudioStreamFactory factory)
 {
     if (!factories.Contains(factory))
     {
         factories.Add(factory);
     }
 }
예제 #5
0
파일: Player.cs 프로젝트: silpheed/M
        public Player(IFileFinder fileFinder, IPlaylistReader playlistReader, IAudioStreamFactory audioStreamFactory, 
			IBackgroundWorkerFactory backgroundWorkerFactory, IFileSystemFacade fileSystem)
        {
            this.fileFinder = fileFinder;
            this.playlistReader = playlistReader;
            this.backgroundWorkerFactory = backgroundWorkerFactory;
            this.audioStreamFactory = audioStreamFactory;
            this.fileSystem = fileSystem;

            history = new List<string>();

            isStopped = true;
            isPlaying = false;
            isPaused = false;

            wasPausedBeforeBadSound = isPaused;
            loopType = LoopType.None;
            upto = 0;
        }
예제 #6
0
 public AudioPlayer(IAudioStreamFactory audioStreamFactory)
 {
     this.audioStreamFactory = audioStreamFactory;
 }
예제 #7
0
 public override void SetUp()
 {
     platform = DynamicMock<IPlatform>();
     audioStreamFactory = new AudioStreamFactory(platform);
 }
예제 #8
0
        public SpiderFactory(ILogger logger, ISecurityContext securityContext, IMediaFactory mediaFactory, ILinkRepository linkRepository, ITagRepository tagRepository, IMediaRepository mediaRepository, IMetadataRepository mediaItemRepository, IAudioStreamFactory audioStreamFactory)
        {
            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }
            if (securityContext == null)
            {
                throw new ArgumentNullException("securityContext");
            }
            if (mediaFactory == null)
            {
                throw new ArgumentNullException("mediaFactory");
            }
            if (linkRepository == null)
            {
                throw new ArgumentNullException("linkRepository");
            }
            if (tagRepository == null)
            {
                throw new ArgumentNullException("tagRepository");
            }
            if (mediaRepository == null)
            {
                throw new ArgumentNullException("mediaRepository");
            }
            if (mediaItemRepository == null)
            {
                throw new ArgumentNullException("mediaItemRepository");
            }

            this.logger              = logger;
            this.securityContext     = securityContext;
            this.securityContext     = securityContext;
            this.mediaFactory        = mediaFactory;
            this.linkRepository      = linkRepository;
            this.tagRepository       = tagRepository;
            this.mediaRepository     = mediaRepository;
            this.mediaItemRepository = mediaItemRepository;
            this.audioStreamFactory  = audioStreamFactory;
        }
예제 #9
0
파일: PlayerFixture.cs 프로젝트: silpheed/M
 public override void SetUp()
 {
     fileFinder = CreateMock<IFileFinder>();
     playlistReader = CreateMock<IPlaylistReader>();
     audioStreamFactory = CreateMock<IAudioStreamFactory>();
     backgroundWorkerFactory = CreateMock<IBackgroundWorkerFactory>();
     fileSystem = DynamicMock<IFileSystemFacade>();
     player = new Player(fileFinder, playlistReader, audioStreamFactory, backgroundWorkerFactory, fileSystem);
 }
예제 #10
0
 public CatalogController(ILogger logger, ISecurityContext securityContext, IMediaFactory mediaFactory, IMediaRepository mediaRepository, ILinkRepository linkRepository, ITagRepository tagRepository, IMetadataRepository mediaItemRepository, IAudioStreamFactory audioStreamFactory)
 {
     this.logger = logger;
     spider      = new CatalogSpider(logger, securityContext, mediaFactory, linkRepository, tagRepository, mediaRepository, mediaItemRepository, audioStreamFactory);
 }
예제 #11
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();
        }
예제 #12
0
 public virtual ITrack GetTrack(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository, IAudioStreamFactory audioStreamFactory, IArtist artist, IAlbum album)
 {
     return null;
 }
예제 #13
0
 public virtual ITrack GetTrack(ISecurityContext securityContext, IMediaFactory mediaFactory, IMetadataRepository mediaItemRepository, IAudioStreamFactory audioStreamFactory, IArtist artist, IAlbum album)
 {
     return(null);
 }
예제 #14
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());
        }
예제 #15
0
 public AudioPlayer(IAudioStreamFactory audioStreamFactory)
 {
     this.audioStreamFactory = audioStreamFactory;
 }
예제 #16
0
 public CatalogController(ILogger logger, ISecurityContext securityContext, IMediaFactory mediaFactory, IMediaRepository mediaRepository, ILinkRepository linkRepository, ITagRepository tagRepository, IMetadataRepository mediaItemRepository, IAudioStreamFactory audioStreamFactory)
 {
     this.logger = logger;
     spider = new CatalogSpider(logger, securityContext, mediaFactory, linkRepository, tagRepository, mediaRepository, mediaItemRepository, audioStreamFactory);
 }