public static async Task <bool> AddAudio(VkAudio audio, string captchaSid = null, string captchaKey = null) { if (string.IsNullOrEmpty(audio.Source)) { var vkAudio = await GetAudioByArtistAndTitle(audio.Artist, audio.Title); if (vkAudio != null) { audio.Id = vkAudio.Id; audio.Artist = vkAudio.Artist; audio.Title = vkAudio.Title; audio.Source = vkAudio.Source; audio.OwnerId = vkAudio.OwnerId; audio.AlbumId = vkAudio.AlbumId; audio.LyricsId = vkAudio.LyricsId; } } var newId = await _vkontakte.Audio.Add(long.Parse(audio.Id), audio.OwnerId, captchaSid : captchaSid, captchaKey : captchaKey); if (newId > 0) { audio.Id = newId.ToString(); audio.OwnerId = _vkontakte.AccessToken.UserId; audio.IsAddedByCurrentUser = true; return(true); } return(false); }
private async Task <List <VkAudio> > GetAudioList(IProgress <int> progress) { if (Tracks == null) { return(null); } var result = new List <VkAudio>(); int requestsCount = 0; int progressStep = (int)(100.0f / Tracks.Count); foreach (var audio in Tracks) { //if (token.IsCancellationRequested) // return null; VkAudio vkAudio = null; try { vkAudio = await DataService.GetAudioByArtistAndTitle(audio.Artist, audio.Title); } catch (Exception ex) { LoggingService.Log(ex); } if (vkAudio == null) { LoggingService.Log("Failed to find audio " + audio.Artist + " - " + audio.Title); } else { result.Add(new VkAudio() { Id = vkAudio.Id, OwnerId = vkAudio.OwnerId, Title = vkAudio.Title, Artist = vkAudio.Artist, Duration = vkAudio.Duration }); } requestsCount++; if (requestsCount >= 2) //не больше 2-х запросов в секунду { requestsCount = 0; await Task.Delay(1000); } //if (token.IsCancellationRequested) // return null; progress.Report(progressStep); } return(result); }
public DownloadAudioView(VkAudio audio) { InitializeComponent(); _viewModel = new DownloadAudioViewModel(); this.DataContext = _viewModel; _viewModel.Track = audio; }
public LyricsView(VkAudio audio) { InitializeComponent(); _viewModel = new LyricsViewModel(); this.DataContext = _viewModel; _viewModel.Track = audio; }
public static VkAudio ToAudio(this LastFmTrack audio) { var result = new VkAudio(); result.Title = audio.Title; result.Artist = audio.Artist; result.Duration = TimeSpan.FromSeconds(audio.Duration); return result; }
public static async Task <bool> SetMusicStatus(VkAudio audio, List <long> targetIds = null) { if (audio == null) { return(false); } var result = await _vkontakte.Audio.SetBroadcast(long.Parse(audio.Id), audio.OwnerId, targetIds); return(result != null); }
public static async Task <bool> RemoveAudio(VkAudio audio) { var result = await _vkontakte.Audio.Delete(long.Parse(audio.Id), audio.OwnerId); if (result) { audio.IsAddedByCurrentUser = false; } return(result); }
public AudioVk(VkAudio audio) { Id = audio.Id.ToString(); OwnerId = audio.OwnerId.ToString(); Title = audio.Title; Artist = audio.Artist; Duration = audio.Duration; PlaylistId = audio.AlbumId; LyricsId = audio.LyricsId; if (!string.IsNullOrEmpty(audio.Url)) { Source = new Uri(audio.Url); } }
public static VkAudio ToAudio(this VkLib.Core.Audio.VkAudio audio) { var result = new VkAudio(); result.Id = audio.Id.ToString(); result.Title = audio.Title; result.Artist = audio.Artist; result.AlbumId = audio.AlbumId; result.Duration = audio.Duration; result.LyricsId = audio.LyricsId; result.OwnerId = audio.OwnerId; result.Source = audio.Url; result.GenreId = audio.GenreId; result.IsAddedByCurrentUser = audio.OwnerId == ViewModelLocator.Vkontakte.AccessToken.UserId; return result; }
public override Audio Clone() { var audio = new VkAudio(); audio.Id = this.Id; audio.OwnerId = this.OwnerId; audio.AlbumId = this.AlbumId; audio.Title = this.Title; audio.Artist = this.Artist; audio.Duration = this.Duration; audio.GenreId = this.GenreId; audio.Lyrics = this.Lyrics; audio.LyricsId = this.LyricsId; audio.IsAddedByCurrentUser = this.IsAddedByCurrentUser; return(audio); }
public AudioVk(VkAudio audio) { Id = audio.Id.ToString(); OwnerId = audio.OwnerId.ToString(); Title = audio.Title; Artist = audio.Artist; Duration = audio.Duration; PlaylistId = audio.AlbumId; LyricsId = audio.LyricsId; if (!string.IsNullOrEmpty(audio.Url)) { Source = new Uri(audio.Url); } if (audio.Album != null && audio.Album.Thumb != null && !string.IsNullOrWhiteSpace(audio.Album.Thumb.Photo300)) { AlbumCover = new Uri(audio.Album.Thumb.Photo300); } }
public override Audio Clone() { var audio = new VkAudio(); audio.Id = this.Id; audio.OwnerId = this.OwnerId; audio.AlbumId = this.AlbumId; audio.Title = this.Title; audio.Artist = this.Artist; audio.Duration = this.Duration; audio.GenreId = this.GenreId; audio.Lyrics = this.Lyrics; audio.LyricsId = this.LyricsId; audio.IsAddedByCurrentUser = this.IsAddedByCurrentUser; return audio; }
public static async Task<bool> SetMusicStatus(VkAudio audio, List<long> targetIds = null) { if (audio == null) return false; var result = await _vkontakte.Audio.SetBroadcast(long.Parse(audio.Id), audio.OwnerId, targetIds); return result != null; }
public static async Task<bool> AddAudio(VkAudio audio, string captchaSid = null, string captchaKey = null) { if (string.IsNullOrEmpty(audio.Source)) { var vkAudio = await GetAudioByArtistAndTitle(audio.Artist, audio.Title); if (vkAudio != null) { audio.Id = vkAudio.Id; audio.Artist = vkAudio.Artist; audio.Title = vkAudio.Title; audio.Source = vkAudio.Source; audio.OwnerId = vkAudio.OwnerId; audio.AlbumId = vkAudio.AlbumId; audio.LyricsId = vkAudio.LyricsId; } } var newId = await _vkontakte.Audio.Add(long.Parse(audio.Id), audio.OwnerId, captchaSid: captchaSid, captchaKey: captchaKey); if (newId > 0) { audio.Id = newId.ToString(); audio.OwnerId = _vkontakte.AccessToken.UserId; audio.IsAddedByCurrentUser = true; return true; } return false; }
public static async Task<bool> RemoveAudio(VkAudio audio) { var result = await _vkontakte.Audio.Delete(long.Parse(audio.Id), audio.OwnerId); if (result) { audio.IsAddedByCurrentUser = false; } return result; }
public AddToAlbumView(VkAudio track) { _track = track; InitializeComponent(); }
private async Task LikeDislikeAudio(VkAudio audio, bool captchaNeeded = false, string captchaSid = null, string captchaImg = null) { if (audio == null) return; IsWorking = true; string captchaKey = null; if (captchaNeeded) { var flyout = new FlyoutControl(); flyout.FlyoutContent = new CaptchaRequestView(captchaSid, captchaImg); var result = await flyout.ShowAsync(); if (string.IsNullOrEmpty((string)result)) { IsWorking = false; return; } else { captchaKey = (string)result; } } try { bool result; if (!audio.IsAddedByCurrentUser) { result = await DataService.RemoveAudio(audio); } else result = await DataService.AddAudio(audio, captchaSid, captchaKey); if (result) { //нужно, чтобы обновить список треков пользователя, если он открыт в данный момент MessengerInstance.Send(new UserTracksChangedMessage()); } else { audio.IsAddedByCurrentUser = !audio.IsAddedByCurrentUser; LoggingService.Log("Can't add/remove audio " + audio.Id + " owner: " + audio.OwnerId + "."); } } catch (VkCaptchaNeededException ex) { LikeDislikeAudio(audio, true, ex.CaptchaSid, ex.CaptchaImg); } catch (Exception ex) { audio.IsAddedByCurrentUser = !audio.IsAddedByCurrentUser; LoggingService.Log(ex); } IsWorking = false; }
private static void PlaySong(EchoSong song) { var audio = new VkAudio() { Title = song.Title, Artist = song.ArtistName }; _currentSong = song; AudioService.Play(audio); AudioService.Playlist.Insert(0, audio); //AudioService.SetCurrentPlaylist(new[] { audio }, true); }