コード例 #1
0
        public MusicManager(int threadsNum, int maxSongsToProcess, string connectionString, string musicFolder)
        {
            model = new Model();

            var azureService    = new AzureService(Properties.Settings.Default.AzureAccountName, Properties.Settings.Default.AzureAccountKey);
            var uploadProcessor = new UploadProcessor(Properties.Settings.Default.AzureContainerName, Properties.Settings.Default.AzureAccountName, Properties.Settings.Default.AzureAccountKey);

            uploadProcessor.OnError  += Error;
            uploadProcessor.OnStatus += Status;
            musicDao                = new MusicDao(connectionString, new string[] { Properties.Settings.Default.MusicFolder }, uploadProcessor, azureService);
            musicDao.OnError       += Error;
            musicDao.OnNewArtist   += AddArtist;
            musicDao.OnNewSong     += NewSong;
            musicDao.OnProcessFile += Status;
            musicDao.OnStatus      += Status;
        }
コード例 #2
0
ファイル: Model.cs プロジェクト: rajeshwarn/Music1
        public void AddNew(string musicFolder, IMusicDao musicDao)
        {
            int songsInserted = 0;


            var allSongFiles = musicDao.GetSongFiles(musicFolder);
            var musicFiles   = from musicFile in allSongFiles
                               where musicFile.IsMusicFile()
                               //                             where musicFile.IsMp3File()
                               select musicFile;

            musicFiles = from musicFile in musicFiles
                         select musicFile.NormalizeFilename();

            musicFiles = from musicFile in musicFiles
                         select musicFile.Populate();

            musicFiles = from musicFile in musicFiles
                         where musicFile.TagsComplete()
                         select musicFile;

            var songsWithDbInfo = from song in musicFiles
                                  select new
            {
                song       = song,
                existsInDb = song.InDb(musicDao)
            };

            var newFiles = from song in songsWithDbInfo
                           where !song.existsInDb
                           select song;

            var insertedSongs = from song in newFiles
                                select musicDao.InsertSong(song.song);

            songsInserted = insertedSongs.ToArray().Count();
        }
コード例 #3
0
 public static bool InDb(this SONG song, IMusicDao musicDao)
 {
     return(musicDao.InDb(song));
 }
コード例 #4
0
 public static bool HashExists(this SONG song, IMusicDao musicDao)
 {
     return(musicDao.HashExists(song));
 }
コード例 #5
0
ファイル: Model.cs プロジェクト: rajeshwarn/Music1
        public void Reindex(int threadsNum, string[] musicFolders, IMusicDao musicDao)
        {
            var jobLogRepository = new JobLogRepository();
            var lastIndexRun     = jobLogRepository.GetLatest();
            int songsInserted    = 0;

            var allSongFiles = musicDao.GetSongFiles(musicFolders[0]);
            var musicFiles   = from musicFile in allSongFiles.AsParallel()
                               where musicFile.IsMusicFile()
                               select musicFile;

/*            musicFiles = from musicFile in musicFiles.AsParallel()
 *                       where musicFile.LOCATION.IndexOf("Xbox Music") == -1
 *                       select musicFile;*/

/*            musicFiles = from musicFile in musicFiles.AsParallel()
 *                       where musicFile.LOCATION.IndexOf("KEXP") == -1
 *                       select musicFile; */

            musicFiles = from musicFile in musicFiles.AsParallel()
                         select musicFile.NormalizeFilename();

            var musicFilesModifiedDate = from musicFile in musicFiles.AsParallel()
                                         select new
            {
                song             = musicFile,
                modificationDate = musicFile.GetModificationDate()
            };

            var modifiedFiles = from musicFile in musicFilesModifiedDate.AsParallel()
                                where (musicFile.modificationDate > lastIndexRun.DateRun)
                                select musicFile.song;

            modifiedFiles = from musicFile in modifiedFiles.AsParallel()
                            select musicFile.Populate();

            var incompleteFiles = from musicFile in modifiedFiles.AsParallel()
                                  where !musicFile.TagsComplete()
                                  select musicFile;

            foreach (var file in incompleteFiles)
            {
                Debug.WriteLine("Incomplete tags: {0} ", file.LOCATION);
            }

            modifiedFiles = from musicFile in modifiedFiles.AsParallel()
                            where musicFile.TagsComplete()
                            select musicFile;

            var songsWithDbInfo = from song in modifiedFiles.AsParallel()
                                  select new
            {
                song       = song,
                existsInDb = song.InDb(musicDao)
            };

            var updatedFiles = from song in songsWithDbInfo.AsParallel()
                               where song.existsInDb
                               select song;

            var newFiles = from song in songsWithDbInfo.AsParallel()
                           where !song.existsInDb
                           select song;

            var insertedSongs = from song in newFiles
                                select musicDao.InsertSong(song.song);

            songsInserted = insertedSongs.ToArray().Length;

            foreach (var song in updatedFiles)
            {
                Debug.WriteLine("Updating: {0}", song.song.LOCATION);
                musicDao.UpdateSong(song.song.TITLE, song.song.ARTIST, song.song.ALBUM, song.song.GENRE, 0, 0, 0, song.song.LOCATION);
            }

            jobLogRepository.Add(songsInserted.ToString());

            musicDao.UpdateArtists();
        }
コード例 #6
0
 public SimpleMusicService(IConnectionCreater connectionCreater)
 {
     musicDao = new SimpleMusicDao(connectionCreater);
 }