public async Task<bool> StartMovieDownloaderByUrl(string url, GenericTaskFragmentCallbacks<List<Movie>>  callbacks)
        {
            var selectedDownloader = _movieDownloaders.SingleOrDefault(s => s.Url.Equals(url));

            if (selectedDownloader == null)
            {
                return false;
            }

            if (!selectedDownloader.IsRunning)
            {
                selectedDownloader.IsRunning = true;

                try
                {
                    callbacks.OnPostExecute(selectedDownloader.TAG, await selectedDownloader.Task);
                }
                catch (System.OperationCanceledException)
                {
                    callbacks.OnCancelled(selectedDownloader.TAG);
                }
                catch (Exception e)
                {
                    callbacks.OnFailed(selectedDownloader.TAG);
                }
                finally
                {
                    selectedDownloader.CancellationTokenSource = null;
                    selectedDownloader.IsRunning = false;
                    _movieDownloaders.Remove(_movieDownloaders.SingleOrDefault(s => s.Url.Equals(url)));

                }
                return true;
            }
            return false;
        }