public async Task <WebSong> GetMatch(Mp3Provider provider, string title, string artist, string album = null) { var webSongs = new List <WebSong>(); WebSong song = null; switch (provider) { case Mp3Provider.ProstoPleer: webSongs = await _service.SearchPleer(title, artist).ConfigureAwait(false); break; case Mp3Provider.Songily: webSongs = await _service.SearchSongily(title, artist).ConfigureAwait(false); break; case Mp3Provider.Mp3FreeXMatch: webSongs = await _service.SearchMp3Freex(title, artist).ConfigureAwait(false); break; case Mp3Provider.Mp3Lio: webSongs = await _service.SearchMp3lio(title, artist).ConfigureAwait(false); break; case Mp3Provider.Mp3Pm: webSongs = await _service.SearchMp3Pm(title, artist).ConfigureAwait(false); break; case Mp3Provider.YouTube: webSongs = await _service.SearchYoutube(title, artist).ConfigureAwait(false); break; case Mp3Provider.Mp3Miner: webSongs = await _service.SearchMp3Miner(title, artist).ConfigureAwait(false); break; case Mp3Provider.SoundCloud: webSongs = await _service.SearchSoundCloud(title, artist).ConfigureAwait(false); break; case Mp3Provider.AnyMaza: webSongs = await _service.SearchAnyMaza(title, artist).ConfigureAwait(false); break; case Mp3Provider.MiMp3: webSongs = await _service.SearchMiMp3(title, artist).ConfigureAwait(false); break; case Mp3Provider.Mp3Skull: webSongs = await _service.SearchMp3Skull(title, artist).ConfigureAwait(false); break; case Mp3Provider.Mp3Clan: webSongs = await _service.SearchMp3Clan(title, artist).ConfigureAwait(false); break; case Mp3Provider.Netease: webSongs = await _service.SearchNetease(title, artist).ConfigureAwait(false); break; case Mp3Provider.Mp3Truck: webSongs = await _service.SearchMp3Truck(title, artist).ConfigureAwait(false); break; case Mp3Provider.Mp3Glu: webSongs = await _service.SearchMp3Glu(title, artist).ConfigureAwait(false); break; case Mp3Provider.Meile: webSongs = await _service.SearchMeile(title, artist).ConfigureAwait(false); break; } if (webSongs != null) { song = webSongs.FirstOrDefault(p => p.IsBestMatch); if (song != null) { return(song); } song = webSongs.FirstOrDefault(p => p.IsMatch && !p.IsLinkDeath); if (song != null) { return(song); } } return(null); }
public async void ReceiveSong(Song song) { if (!App.Locator.Network.IsActive) { return; } try { CurrentSong = song; viewModelCleared = false; IsLoading = true; var tasks = new List <Task> { Task.Factory.StartNew( async() => { await DispatcherHelper.RunAsync(() => IsSCLoading = true); var results = await searchService.SearchSoundCloud(title: CurrentSong.Name, artist: CurrentSong.Artist.Name, limit: 5); await DispatcherHelper.RunAsync(() => { count--; if (count == 0) { IsLoading = false; } IsSCLoading = false; if (results == null) { return; } SoundCloud = new ObservableCollection <Base>(); if (results.Count > 0) { int indexToAdd = -1; foreach (var item in results) { indexToAdd++; SoundCloud.Add(item); if (indexToAdd == 2 || indexToAdd == 10 || indexToAdd == 22 || indexToAdd == 34 || indexToAdd == 49 || indexToAdd == 63 || indexToAdd == 78 || indexToAdd == 88 || indexToAdd == 99) { SoundCloud.Insert(indexToAdd, new ListAdvert()); } } } }); }), Task.Factory.StartNew( async() => { await DispatcherHelper.RunAsync(() => IsWTLoading = true); var results = await searchService.SearchMp3Glu(CurrentSong.Name, CurrentSong.Artist.Name, limit: 5); await dispatcherHelper.RunAsync( () => { count--; if (count == 0) { IsLoading = false; } IsWTLoading = true; if (results == null) { return; } WapTrack = new ObservableCollection <Base>(); if (results.Count > 0) { int indexToAdd = -1; foreach (var item in results) { indexToAdd++; WapTrack.Add(item); if (indexToAdd == 2 || indexToAdd == 10 || indexToAdd == 22 || indexToAdd == 34 || indexToAdd == 49 || indexToAdd == 63 || indexToAdd == 78 || indexToAdd == 88 || indexToAdd == 99) { WapTrack.Insert(indexToAdd, new ListAdvert()); } } } }); }), Task.Factory.StartNew( async() => { await DispatcherHelper.RunAsync(() => IsPLLoading = true); var results = await searchService.SearchMp3lio(title: CurrentSong.Name, artist: CurrentSong.Artist.Name, limit: 5); await dispatcherHelper.RunAsync( () => { count--; if (count == 0) { IsLoading = false; } IsPLLoading = false; if (results == null) { return; } Pleer = new ObservableCollection <Base>(results); if (Pleer.Count > 1) { int indexToAdd = -1; foreach (var item in Pleer) { indexToAdd++; if (indexToAdd == 2 || indexToAdd == 10 || indexToAdd == 22 || indexToAdd == 34 || indexToAdd == 49 || indexToAdd == 63 || indexToAdd == 78 || indexToAdd == 88 || indexToAdd == 99) { Pleer.Insert(indexToAdd, new ListAdvert()); } } } }); }), Task.Factory.StartNew( async() => { await DispatcherHelper.RunAsync(() => IsYTLoading = true); var results = await searchService.SearchYoutube(title: CurrentSong.Name, artist: CurrentSong.Artist.Name, limit: 5, includeAudioTag: true); await dispatcherHelper.RunAsync( () => { count--; if (count == 0) { IsLoading = false; } IsYTLoading = false; if (results == null) { return; } YouTube = new ObservableCollection <Base>(); if (results.Count > 0) { int indexToAdd = -1; foreach (var item in results) { indexToAdd++; YouTube.Add(item); if (indexToAdd == 2 || indexToAdd == 10 || indexToAdd == 22 || indexToAdd == 34 || indexToAdd == 49 || indexToAdd == 63 || indexToAdd == 78 || indexToAdd == 88 || indexToAdd == 99) { YouTube.Insert(indexToAdd, new ListAdvert()); } } } }); }), Task.Factory.StartNew( async() => { await DispatcherHelper.RunAsync(() => IsMPZLoading = true); var results = await searchService.SearchMp3Pm(CurrentSong.Name, CurrentSong.Artist.Name, limit: 5); await dispatcherHelper.RunAsync( () => { count--; if (count == 0) { IsLoading = false; } IsMPZLoading = false; if (results == null) { return; } Mpz = new ObservableCollection <Base>(); if (results.Count > 0) { int indexToAdd = -1; foreach (var item in results) { indexToAdd++; Mpz.Add(item); if (indexToAdd == 2 || indexToAdd == 10 || indexToAdd == 22 || indexToAdd == 34 || indexToAdd == 49 || indexToAdd == 63 || indexToAdd == 78 || indexToAdd == 88 || indexToAdd == 99) { Mpz.Insert(indexToAdd, new ListAdvert()); } } } }); }), }; await Task.WhenAll(tasks); } catch (Exception) { IsLoading = false; } if (count == 0) { IsLoading = false; } }