Working on refinining the streaming aspect to be more smooth, especially with large files... That 2112 Rush song is ridiculous
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using RestSharp;
|
using RestSharp;
|
||||||
@@ -19,7 +20,9 @@ namespace Mear.Managers
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var writer = File.OpenWrite(song.SongPath))
|
//using (var writer = File.OpenWrite(song.SongPath))
|
||||||
|
using (var writer = new FileStream(song.SongPath, FileMode.Create, FileAccess.Write,
|
||||||
|
FileShare.ReadWrite, bufferSize: 4096, useAsync: true))
|
||||||
{
|
{
|
||||||
var client = new RestClient(API.ApiUrl);
|
var client = new RestClient(API.ApiUrl);
|
||||||
var apiEndpoint = $@"api/{API.APIVersion}/song/stream/{song.Id}";
|
var apiEndpoint = $@"api/{API.APIVersion}/song/stream/{song.Id}";
|
||||||
@@ -29,14 +32,21 @@ namespace Mear.Managers
|
|||||||
var token = tokRepo.RetrieveToken();
|
var token = tokRepo.RetrieveToken();
|
||||||
|
|
||||||
request.AddHeader("Authorization", $"Bearer {token.AccessToken}");
|
request.AddHeader("Authorization", $"Bearer {token.AccessToken}");
|
||||||
|
request.AddHeader("Content-type", "application/octet-stream");
|
||||||
|
request.AddHeader("Connection", "Keep-Alive");
|
||||||
request.ResponseWriter = (responseStream) =>
|
request.ResponseWriter = (responseStream) =>
|
||||||
responseStream.CopyTo(writer);
|
responseStream.CopyTo(writer);
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
//responseStream.CopyToAsync(writer);
|
||||||
|
|
||||||
var response = client.DownloadData(request);
|
client.DownloadData(request);
|
||||||
|
//var response = client.Execute(request);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
var msg = ex.Message;
|
var msg = ex.Message;
|
||||||
|
|||||||
@@ -278,6 +278,7 @@ namespace Mear.Playback
|
|||||||
|
|
||||||
var downloaded = songMgr.DownloadStream(ref _song);
|
var downloaded = songMgr.DownloadStream(ref _song);
|
||||||
|
|
||||||
|
|
||||||
if (downloaded)
|
if (downloaded)
|
||||||
{
|
{
|
||||||
PlaySong();
|
PlaySong();
|
||||||
@@ -433,20 +434,30 @@ namespace Mear.Playback
|
|||||||
private static async Task PlaySong(string songPath)
|
private static async Task PlaySong(string songPath)
|
||||||
{
|
{
|
||||||
await CrossMediaManager.Current.Play(songPath);
|
await CrossMediaManager.Current.Play(songPath);
|
||||||
if (_initialized == null)
|
InitializePlayer();
|
||||||
{
|
|
||||||
CrossMediaManager.Current.MediaItemFinished += Current_MediaItemFinished;
|
SongChanged();
|
||||||
_initialized = true;
|
|
||||||
}
|
|
||||||
_songChanged[MusicViews.Song] = true;
|
|
||||||
_songChanged[MusicViews.Album] = true;
|
|
||||||
_songChanged[MusicViews.Artist] = true;
|
|
||||||
}
|
}
|
||||||
private static async Task ResumeSong()
|
private static async Task ResumeSong()
|
||||||
{
|
{
|
||||||
await CrossMediaManager.Current.PlayPause();
|
await CrossMediaManager.Current.PlayPause();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void InitializePlayer()
|
||||||
|
{
|
||||||
|
if (_initialized == null)
|
||||||
|
{
|
||||||
|
CrossMediaManager.Current.MediaItemFinished += Current_MediaItemFinished;
|
||||||
|
CrossMediaManager.Current.VolumeManager.CurrentVolume = CrossMediaManager.Current.VolumeManager.MaxVolume;
|
||||||
|
_initialized = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private static void SongChanged()
|
||||||
|
{
|
||||||
|
_songChanged[MusicViews.Song] = true;
|
||||||
|
_songChanged[MusicViews.Album] = true;
|
||||||
|
_songChanged[MusicViews.Artist] = true;
|
||||||
|
}
|
||||||
private static void ToggleRepeat()
|
private static void ToggleRepeat()
|
||||||
{
|
{
|
||||||
var musicCtrl = new DBMusicControlsRepository();
|
var musicCtrl = new DBMusicControlsRepository();
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ namespace Mear.Repositories.Remote
|
|||||||
var tkRepo = new DBTokenRepository();
|
var tkRepo = new DBTokenRepository();
|
||||||
var token = tkRepo.RetrieveToken();
|
var token = tkRepo.RetrieveToken();
|
||||||
request.AddHeader("Authorization", $"Bearer {token.AccessToken}");
|
request.AddHeader("Authorization", $"Bearer {token.AccessToken}");
|
||||||
|
request.AddHeader("Connection", "Keep-Alive");
|
||||||
|
|
||||||
var reponse = client.Execute(request);
|
var reponse = client.Execute(request);
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ namespace Mear.Repositories.Remote
|
|||||||
var tkRepo = new DBTokenRepository();
|
var tkRepo = new DBTokenRepository();
|
||||||
var token = tkRepo.RetrieveToken();
|
var token = tkRepo.RetrieveToken();
|
||||||
request.AddHeader("Authorization", $"Bearer {token.AccessToken}");
|
request.AddHeader("Authorization", $"Bearer {token.AccessToken}");
|
||||||
|
request.AddHeader("Connection", "Keep-Alive");
|
||||||
|
|
||||||
var response = client.Execute(request);
|
var response = client.Execute(request);
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ namespace Mear.Repositories.Remote
|
|||||||
DBTokenRepository tkRepo = new DBTokenRepository();
|
DBTokenRepository tkRepo = new DBTokenRepository();
|
||||||
var token = tkRepo.RetrieveToken();
|
var token = tkRepo.RetrieveToken();
|
||||||
request.AddHeader("Authorization", $"Bearer {token.AccessToken}");
|
request.AddHeader("Authorization", $"Bearer {token.AccessToken}");
|
||||||
|
request.AddHeader("Connection", "Keep-Alive");
|
||||||
|
|
||||||
var response = client.Execute(request);
|
var response = client.Execute(request);
|
||||||
|
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ namespace Mear.Views
|
|||||||
StartTime.Text = $"{curPos}";
|
StartTime.Text = $"{curPos}";
|
||||||
double? progVal = await MearPlayer.ProgressValue();
|
double? progVal = await MearPlayer.ProgressValue();
|
||||||
SongProgress.Value = progVal.Value;
|
SongProgress.Value = progVal.Value;
|
||||||
|
EndTime.Text = TimeFormat.ConvertToSongTime(MearPlayer.OnSong.Duration.Value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -250,8 +251,6 @@ namespace Mear.Views
|
|||||||
}
|
}
|
||||||
private void Shuffle_Clicked(object sender, EventArgs e)
|
private void Shuffle_Clicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
//var musicCtrl = new DBMusicControlsRepository();
|
|
||||||
//musicCtrl.UpdateShuffle();
|
|
||||||
MearPlayer.ControlMusic(null, PlayControls.SHUFFLE);
|
MearPlayer.ControlMusic(null, PlayControls.SHUFFLE);
|
||||||
Shuffle.Text = MearPlayer.RetrieveShuffleString();
|
Shuffle.Text = MearPlayer.RetrieveShuffleString();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user