Exemple #1
0
        private static int SandboxCode(SandboxOptions options, IServiceProvider serviceProvider)
        {
            var sw = Stopwatch.StartNew();

            var songsRepository        = serviceProvider.GetService <IDeletableEntityRepository <Song> >();
            var songMetadataRepository = serviceProvider.GetService <IDeletableEntityRepository <SongMetadata> >();
            var songsService           = serviceProvider.GetService <ISongsService>();
            var metadataService        = serviceProvider.GetService <ISongMetadataService>();
            var provider                 = new Top40ChartsDataProvider();
            var splitter                 = new SongNameSplitter();
            var youTubeDataProvider      = new YouTubeDataProvider();
            var lyricsPluginDataProvider = new LyricsPluginDataProvider();

            var songIds = songsRepository.All().Select(x => x.Id).ToList();

            for (var index = 0; index < songIds.Count; index++)
            {
                var songId = songIds[index];
                songsService.UpdateSongsSystemDataAsync(songId).GetAwaiter().GetResult();
                if (index % 100 == 0)
                {
                    songsRepository.DetachAll();
                }
            }

            Console.WriteLine(sw.Elapsed);
            return(0);
        }
        public void GetSongShouldWorkCorrectly(int id, string expectedArtist, string expectedSongTitle)
        {
            var songsSearcher = new Top40ChartsDataProvider();

            var result = songsSearcher.GetSong(id);

            Assert.NotNull(result);
            Assert.Equal(expectedArtist, result[SongMetadataType.Artist]);
            Assert.Equal(expectedSongTitle, result[SongMetadataType.Title]);
            Assert.NotNull(result[SongMetadataType.YouTubeVideoId]);
            Assert.NotNull(result[SongMetadataType.Lyrics]);
        }
Exemple #3
0
        private static int InitialSeed(InitialSeedOptions opts, IServiceProvider serviceProvider)
        {
            var sw = Stopwatch.StartNew();

            // Step 1. Seed songs from top40 charts (5 minutes for 1000 songs, so 50000 should be 4-5 hours)
            Console.Title = "Top40 charts songs seed";
            var songsRepository = serviceProvider.GetService <IDeletableEntityRepository <Song> >();
            var songsService    = serviceProvider.GetService <ISongsService>();
            var metadataService = serviceProvider.GetService <ISongMetadataService>();
            var provider        = new Top40ChartsDataProvider();
            var splitter        = new SongNameSplitter();

            for (var i = 1; i <= 50000; i++)
            {
                try
                {
                    var song = provider.GetSong(i);
                    if (song == null)
                    {
                        Console.WriteLine($"{SourcesNames.Top40Charts}#{i} => not found!");
                        continue;
                    }

                    var artists = splitter.SplitArtistName(song[SongMetadataType.Artist]).ToList();
                    var songId  = songsService.CreateSongAsync(
                        song[SongMetadataType.Title],
                        artists,
                        SourcesNames.Top40Charts,
                        i.ToString()).GetAwaiter().GetResult();

                    metadataService.AddMetadataInfoAsync(songId, song, SourcesNames.Top40Charts, i.ToString()).GetAwaiter().GetResult();
                    songsService.UpdateSongsSystemDataAsync(songId).GetAwaiter().GetResult();

                    // For better performance
                    if (i % 100 == 0)
                    {
                        songsRepository.DetachAll();
                    }

                    Console.WriteLine($"{SourcesNames.Top40Charts}#{i} => ({songId}) {song}");
                }
                catch (Exception e)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"{SourcesNames.Top40Charts}#{i} => {e.Message}");
                    Console.ResetColor();
                }
            }

            Console.WriteLine(sw.Elapsed);
            return(0);
        }