mirror of
https://github.com/zoriya/Opus.git
synced 2025-12-05 22:16:17 +00:00
Solved bugs with the downloader.
This commit is contained in:
@@ -119,13 +119,23 @@ namespace Opus.Api.Services
|
||||
#region Downloading of the queue
|
||||
public async void StartDownload()
|
||||
{
|
||||
System.Console.WriteLine("&Queue count: " + queue.Count);
|
||||
foreach (var item in queue)
|
||||
{
|
||||
System.Console.WriteLine("&Item: " + item.Name + " State: " + item.State.ToString());
|
||||
}
|
||||
|
||||
|
||||
while (downloadCount < maxDownload && queue.Count(x => x.State == DownloadState.None) > 0)
|
||||
{
|
||||
System.Console.WriteLine("&Initiating the download of a song");
|
||||
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
|
||||
Task.Run(() => { DownloadAudio(queue.FindIndex(x => x.State == DownloadState.None), downloadPath); }, cancellation.Token);
|
||||
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
|
||||
await Task.Delay(10);
|
||||
}
|
||||
|
||||
System.Console.WriteLine("&Start download finished");
|
||||
}
|
||||
|
||||
private async void DownloadAudio(int position, string path)
|
||||
@@ -133,6 +143,8 @@ namespace Opus.Api.Services
|
||||
if (position < 0 || position > queue.Count || queue[position].State != DownloadState.None)
|
||||
return;
|
||||
|
||||
System.Console.WriteLine("&Downloading audio of: " + queue[position].Name);
|
||||
|
||||
queue[position].State = DownloadState.Initialization;
|
||||
UpdateList(position);
|
||||
const string permission = Manifest.Permission.WriteExternalStorage;
|
||||
@@ -270,7 +282,7 @@ namespace Opus.Api.Services
|
||||
meta.Tag.Album = title + " - " + artist;
|
||||
meta.Tag.Comment = queue[position].YoutubeID;
|
||||
IPicture[] pictures = new IPicture[1];
|
||||
Bitmap bitmap = Picasso.With(Application.Context).Load(await YoutubeManager.GetBestThumb(thumbnails)).Transform(new RemoveBlackBorder(true)).Get();
|
||||
Bitmap bitmap = Picasso.With(Application.Context).Load(await YoutubeManager.GetBestThumb(thumbnails)).Transform(new RemoveBlackBorder(true)).MemoryPolicy(MemoryPolicy.NoCache).Get();
|
||||
byte[] data;
|
||||
using (var MemoryStream = new MemoryStream())
|
||||
{
|
||||
|
||||
@@ -92,10 +92,11 @@ namespace Opus.Api
|
||||
/// <param name="items"></param>
|
||||
public static void Download(Song[] items)
|
||||
{
|
||||
string[] names = items.ToList().Where(x => x.LocalID == -1).ToList().ConvertAll(x => x.Title).ToArray();
|
||||
string[] videoIDs = items.ToList().Where(x => x.LocalID == -1).ToList().ConvertAll(x => x.YoutubeID).ToArray();
|
||||
string[] names = items.ToList().Where(x => x.LocalID == -1 || x.LocalID == 0).ToList().ConvertAll(x => x.Title).ToArray();
|
||||
string[] videoIDs = items.ToList().Where(x => x.LocalID == -1 || x.LocalID == 0).ToList().ConvertAll(x => x.YoutubeID).ToArray();
|
||||
|
||||
DownloadFiles(names, videoIDs);
|
||||
if(names.Count() > 0)
|
||||
DownloadFiles(names, videoIDs);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -112,7 +113,8 @@ namespace Opus.Api
|
||||
files.Add(new DownloadFile(names[i], videoIDs[i], null));
|
||||
}
|
||||
|
||||
await DownloadFiles(files);
|
||||
if(files.Count > 0)
|
||||
await DownloadFiles(files);
|
||||
}
|
||||
|
||||
public static async Task DownloadFiles(IEnumerable<DownloadFile> files)
|
||||
@@ -123,10 +125,14 @@ namespace Opus.Api
|
||||
if (!await MainActivity.instance.GetWritePermission())
|
||||
return;
|
||||
|
||||
Toast.MakeText(MainActivity.instance, Resource.String.downloading, ToastLength.Short).Show();
|
||||
await Downloader.Init();
|
||||
Console.WriteLine("&Trying to download " + files.Count());
|
||||
Console.WriteLine("&First item: " + files.First().Name);
|
||||
|
||||
Downloader.queue.AddRange(files);
|
||||
Downloader.instance.StartDownload();
|
||||
Console.WriteLine("&Downloader started");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -195,7 +195,10 @@ namespace Opus
|
||||
if(SearchableActivity.instance.SearchQuery != null && SearchableActivity.instance.SearchQuery != "")
|
||||
{
|
||||
if (YoutubeSearch.instances == null || SearchableActivity.instance.SearchQuery != YoutubeSearch.instances[0].querryType) //We don't want to redo the query if the user already searched for the exact same query.
|
||||
{
|
||||
HideFilter();
|
||||
SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(SearchableActivity.instance.SearchQuery, 0)).AddToBackStack("Youtube").Commit();
|
||||
}
|
||||
}
|
||||
SearchableActivity.instance = null;
|
||||
}
|
||||
@@ -392,7 +395,7 @@ namespace Opus
|
||||
searchItem.CollapseActionView();
|
||||
}
|
||||
|
||||
public void HideSearch()
|
||||
public void HideFilter()
|
||||
{
|
||||
if (menu == null)
|
||||
return;
|
||||
@@ -408,7 +411,7 @@ namespace Opus
|
||||
item.CollapseActionView();
|
||||
}
|
||||
|
||||
public void DisplaySearch()
|
||||
public void DisplayFilter()
|
||||
{
|
||||
var item = menu.FindItem(Resource.Id.filter);
|
||||
item.SetVisible(true);
|
||||
@@ -465,7 +468,7 @@ namespace Opus
|
||||
return;
|
||||
}
|
||||
|
||||
HideSearch();
|
||||
HideFilter();
|
||||
fragment = Home.NewInstance();
|
||||
break;
|
||||
|
||||
@@ -477,7 +480,7 @@ namespace Opus
|
||||
return;
|
||||
}
|
||||
|
||||
DisplaySearch();
|
||||
DisplayFilter();
|
||||
fragment = Pager.NewInstance(0, 0);
|
||||
break;
|
||||
|
||||
@@ -488,7 +491,7 @@ namespace Opus
|
||||
return;
|
||||
}
|
||||
|
||||
HideSearch();
|
||||
HideFilter();
|
||||
fragment = Playlist.NewInstance();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Opus.Fragments
|
||||
}
|
||||
|
||||
MainActivity.instance.contentRefresh.Refresh += OnRefresh;
|
||||
MainActivity.instance.DisplaySearch();
|
||||
MainActivity.instance.DisplayFilter();
|
||||
|
||||
MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(true);
|
||||
MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(true);
|
||||
@@ -81,7 +81,7 @@ namespace Opus.Fragments
|
||||
Activity.FindViewById(Resource.Id.playlistButtons).Visibility = ViewStates.Visible;
|
||||
Activity.FindViewById<RelativeLayout>(Resource.Id.playlistHeader).Visibility = ViewStates.Gone;
|
||||
|
||||
MainActivity.instance.HideSearch();
|
||||
MainActivity.instance.HideFilter();
|
||||
MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(false);
|
||||
MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(false);
|
||||
MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(false);
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Opus.Fragments
|
||||
|
||||
MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(true);
|
||||
MainActivity.instance.FindViewById(Resource.Id.toolbarLogo).Visibility = ViewStates.Gone;
|
||||
MainActivity.instance.DisplaySearch();
|
||||
MainActivity.instance.DisplayFilter();
|
||||
}
|
||||
|
||||
public override void OnDestroy()
|
||||
@@ -183,7 +183,7 @@ namespace Opus.Fragments
|
||||
MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(false);
|
||||
MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(false);
|
||||
MainActivity.instance.FindViewById(Resource.Id.toolbarLogo).Visibility = ViewStates.Visible;
|
||||
MainActivity.instance.HideSearch();
|
||||
MainActivity.instance.HideFilter();
|
||||
base.OnDestroyView();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ namespace Opus.Fragments
|
||||
|
||||
Browse.instance.focused = true;
|
||||
FolderBrowse.instance.IsFocused = false;
|
||||
MainActivity.instance.DisplaySearch();
|
||||
MainActivity.instance.DisplayFilter();
|
||||
}
|
||||
else if (position == 1)
|
||||
{
|
||||
@@ -159,7 +159,7 @@ namespace Opus.Fragments
|
||||
|
||||
Browse.instance.focused = false;
|
||||
FolderBrowse.instance.IsFocused = true;
|
||||
MainActivity.instance.HideSearch();
|
||||
MainActivity.instance.HideFilter();
|
||||
}
|
||||
}
|
||||
else if (YoutubeSearch.instances != null)
|
||||
|
||||
@@ -55,7 +55,7 @@ namespace Opus.Fragments
|
||||
|
||||
MainActivity.instance.contentRefresh.Refresh += OnRefresh;
|
||||
MainActivity.instance.AddFilterListener(Search);
|
||||
MainActivity.instance.DisplaySearch();
|
||||
MainActivity.instance.DisplayFilter();
|
||||
|
||||
MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(true);
|
||||
MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(true);
|
||||
@@ -145,7 +145,7 @@ namespace Opus.Fragments
|
||||
{
|
||||
Activity.FindViewById<RelativeLayout>(Resource.Id.playlistHeader).Visibility = ViewStates.Gone;
|
||||
|
||||
MainActivity.instance.HideSearch();
|
||||
MainActivity.instance.HideFilter();
|
||||
MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(false);
|
||||
MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(false);
|
||||
MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(false);
|
||||
|
||||
@@ -437,6 +437,7 @@ namespace Opus
|
||||
}),
|
||||
new BottomSheetAction(Resource.Drawable.Download, Resources.GetString(Resource.String.download), (sender, eventArg) =>
|
||||
{
|
||||
Console.WriteLine("&Trying to download " + item.Title);
|
||||
YoutubeManager.Download(new[]{ item });
|
||||
bottomSheet.Dismiss();
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user