diff --git a/Mear/Mear/Managers/SongManager.cs b/Mear/Mear/Managers/SongManager.cs index f617d81..9d052c6 100644 --- a/Mear/Mear/Managers/SongManager.cs +++ b/Mear/Mear/Managers/SongManager.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Net; using System.Text; using System.Threading.Tasks; @@ -16,6 +17,30 @@ namespace Mear.Managers public class SongManager { #region Methods + public async Task StreamSong() + { + var url = $"https://www.soaricarus.com/api/v1/song/stream/{Playback.MearPlayer.OnSong.Id}"; + var streamReq = (HttpWebRequest)WebRequest.Create(url); + var tokRepo = new DBTokenRepository(); + var token = tokRepo.RetrieveToken(); + streamReq.Headers.Add(HttpRequestHeader.Authorization, $"Bearer {token.AccessToken}"); + streamReq.KeepAlive = true; + streamReq.ContentType = "application/octet-stream"; + streamReq.AddRange(0, long.MaxValue); + streamReq.Method = WebRequestMethods.Http.Get; + + using (var songStream = ((HttpWebResponse)streamReq.GetResponse()).GetResponseStream()) + { + using (var songTemp = new FileStream(Playback.MearPlayer.OnSong.SongPath, FileMode.CreateNew, FileAccess.ReadWrite, + FileShare.Read, bufferSize: 4096, useAsync: true)) + { + await songStream.CopyToAsync(songTemp); + await Task.Delay(500); + } + } + } + + // Do not use public bool DownloadStream(ref Song song) { try diff --git a/Mear/Mear/Playback/MearPlayer.cs b/Mear/Mear/Playback/MearPlayer.cs index d64cd43..52347b2 100644 --- a/Mear/Mear/Playback/MearPlayer.cs +++ b/Mear/Mear/Playback/MearPlayer.cs @@ -276,6 +276,9 @@ namespace Mear.Playback var songMgr = new SongManager(); _song.SongPath = tmpFile; + songMgr.StreamSong(); + + /** var downloaded = songMgr.DownloadStream(ref _song); @@ -283,7 +286,9 @@ namespace Mear.Playback { PlaySong(); } + */ + PlaySong(); return Task.Run(() => { return _song;