public async Task <MemoryStream> GetStreamByYoutubeTrackAsync(YoutubeTrack track) { var stream = new MemoryStream(); var streamInfoSet = await _client.GetVideoMediaStreamInfosAsync(track.Id); var audioStreamInfo = streamInfoSet.Audio.WithHighestBitrate(); if (audioStreamInfo is null) { return(stream); } try { var mediaStream = await _client.GetMediaStreamAsync(audioStreamInfo); await mediaStream.CopyToAsync(stream); } catch (Exception) { Console.WriteLine($"Youtube Error... {track.Title}"); return(stream); } return(stream); }
static async Task Main(string[] args) { //pl = new Player(); var vid = new YoutubeTrack(new Uri("https://www.youtube.com/watch?v=uKqriTRYInY"), new YoutubeClient(), new HttpClient()); var met = await vid.LoadMetadata(); var da = await vid.GetUpdatedLocation(); Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero); var bi = new BASS_CHANNELINFO(); //int stream2 = Bass.BASS_StreamCreateFile(@"C:\Users\Speyd\Desktop\01. Radio Happy.flac", 0L, 0L, BASSFlag.BASS_DEFAULT); int stream = Bass.BASS_StreamCreateURL(da.OriginalString, 0, BASSFlag.BASS_DEFAULT, null, IntPtr.Zero); Bass.BASS_ChannelPlay(stream, false); //var hm = await hc.GetAsync(vid.RealLocation); //Bass.Free(); //var init = Bass.Init(); //var op = ManagedBass.Opus.BassOpus.CreateStream(da.OriginalString); //var flac = Bass.PluginLoad(@"bassflac.dll"); //var opus = Bass.PluginLoad(@"bassopus.dll"); //var webm = Bass.PluginLoad(@"basswebm.dll"); //var leng = await hc.GetAsync(da, HttpCompletionOption.ResponseHeadersRead); //var c = Bass.CreateStream(da.OriginalString); //Bass.ChannelPlay(op); await Task.Delay(-1); }
public async Task DownloadSpecificTrackById() { Console.WriteLine("Please enter an ID"); var id = Console.ReadLine(); var searchTrack = new YoutubeTrack("", new List <string>(), 0, id); await _downloadService.DownloadMediaFromYoutubeTrackAsync(searchTrack, "Test"); }
private async Task DownloadThumbnailAsync(YoutubeTrack track, string filePath) { using (var client = new WebClient()) { var uri = new Uri($"https://img.youtube.com/vi/{track.Id}/maxresdefault.jpg"); client.DownloadFileAsync(uri, filePath); } await Task.CompletedTask; }
private IList <YoutubeTrack> ConvertTracks(IEnumerable <Video> videos) { var ytTracks = new List <YoutubeTrack>(); foreach (var video in videos) { var track = new YoutubeTrack(video.Title, video.Author, (int)video.Duration.TotalMilliseconds, video.Id); ytTracks.Add(track); } return(ytTracks); }
public async Task DownloadMediaFromYoutubeTrackAsync(YoutubeTrack track, string filePath) { EnsurePathExists(filePath); var stream = await _streamRepository.GetStreamByYoutubeTrackAsync(track); var streamArray = stream.ToArray(); if (stream.Length < 1) { Console.WriteLine($"Track not found! {track.Title}"); return; } var trackSaveName = track.FormatSafeTrackName(); File.WriteAllBytes($"{filePath}/{trackSaveName}.mp3", streamArray); await stream.FlushAsync(); }
private string GenerateFilePath(YoutubeTrack track) => $"Thumbnails/{track.Title}-{track.Authors.GetEnumerator().Current}.jpg";