Exemplo n.º 1
0
 public SongItemDownloader(MusicProviders musicProviders, string target, MergedSong song, string rate)
 {
     this.musicProviders = musicProviders;
     this.target         = target;
     this.song           = song;
     this.rate           = rate;
 }
Exemplo n.º 2
0
 private void Downloader_DownloadFinish(object sender, SongItemDownloader e)
 {
     songs.Remove(e);
     if (songs.Count < max_downloading_size)
     {
         MergedSong song = queqes.Dequeue();
         AddDownload(song);
     }
 }
Exemplo n.º 3
0
        public void AddDownload(MergedSong song)
        {
            SongItemDownloader downloader = new SongItemDownloader(musicProviders, target, song);

            downloader.DownloadFinish += Downloader_DownloadFinish;

            songs.Add(downloader);

            downloader.Download();
        }
Exemplo n.º 4
0
        private List <MergedSong> FetchCandidateSongs(List <Song> noCopyrightsSongs)
        {
            List <MergedSong> mergedSongs = new List <MergedSong>();

            noCopyrightsSongs.ForEach(item =>
            {
                showLog($"搜索{item.name} {item.singer} 候选");
                MergedSong song = MusicProviders.Instance.SearchSong(item.singer.Trim(), trimSongName(item.name), item.source);
                if (song != null)
                {
                    mergedSongs.Add(song);
                }
            });
            return(mergedSongs);
        }
Exemplo n.º 5
0
        public void AddDownload(MergedSong song)
        {
            if (songs.Count >= max_downloading_size)
            {
                queqes.Enqueue(song);
                return;
            }

            SongItemDownloader downloader = new SongItemDownloader(musicProviders, target, song, rate);

            downloader.DownloadFinish += Downloader_DownloadFinish;

            songs.Add(downloader);

            downloader.Download();
        }