private static async Task DownloadMusic(AppConfig config) { var token = await _vkontakte.Auth.Login(config.VkUsername, config.VkPassword, Auth.VkScopeSettings.CanAccessAudios); using (var reader = new StreamReader(@"C:\Users\a.yakonyuk\Desktop\yandex.music.txt")) using (var writer = new StreamWriter(Environment.CurrentDirectory + "/yandex.music.url.txt", false)) { while (reader.EndOfStream == false) { try { var line = reader.ReadLine(); if (File.Exists("D:/Musics/" + line + ".mp3")) continue; Console.WriteLine("Downloading: " + line); var title = line.Split('-')[0].Trim(); var artist = line.Split('-')[1].Trim(); var audios = await SearchAudio(line, 10); { if (audios.Any()) { var audio = audios.FirstOrDefault(x => (String.Equals(x.Title, title, StringComparison.OrdinalIgnoreCase) && String.Equals(x.Artist, artist, StringComparison.OrdinalIgnoreCase))); if (audio == null) audio = audios.FirstOrDefault(x => String.Equals(x.Title, title, StringComparison.OrdinalIgnoreCase)); if (audio == null) { audio = audios.First(); } writer.WriteLine(audio.Url); using (var client = new WebClient()) { client.DownloadFile(audio.Url, "D:/Musics/" +MakeValidFileName(line) + ".mp3"); } } else { Console.WriteLine("Skiped: " + line); } } Thread.Sleep(1000); } catch (Vk.Error.VkCaptchaNeededException ex) { Console.WriteLine("Captch needed"); Thread.Sleep(30000); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } }
private static void Main(string[] args) { if (args == null || args.Length == 0) { Console.WriteLine("Incoming parameters is empty"); return; } AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException; var config = new AppConfig { VaultUrl = args[0], VaultUsername = args[1], VaultPassword = args[2], VkUsername = args[3], VkPassword = args[4] }; // DownloadMusic(config).Wait(); // SyncMusic(config).Wait(); Console.ReadLine(); Console.WriteLine("Syncs is completed"); }
private static async Task SyncMusic(AppConfig config) { var vkontakte = new Vkontakte("2635307", "aNq5ZwcnrfE8qhhMxkJf", "5.28") { UseHttps = true, }; var token = await vkontakte.Auth.Login(config.VkUsername, config.VkPassword, Auth.VkScopeSettings.CanAccessAudios); var vkResponse = await vkontakte.Audio.Get(); using (var client = new HttpClient()) { var credentials = Encoding.ASCII.GetBytes(string.Join(":", config.VaultUsername, config.VaultPassword)); client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(credentials)); foreach (var audio in vkResponse.Items) { var content = new FormUrlEncodedContent(new Dictionary<string, string> { { "artist", audio.Artist }, { "track", audio.Title} }); var response = await client.PostAsync(config.VaultUrl, content); if (response.IsSuccessStatusCode == false) { Console.WriteLine(response.StatusCode); } } } }