Beispiel #1
0
        public async Task <TransferInfo> AddTransfer(DownloadDefinition request)
        {
            await AssureInit();

            StorageFolder destinationFolder;

            switch (request.Storage)
            {
            case StorageType.AudioLibrary:
                destinationFolder = KnownFolders.MusicLibrary;
                break;

            default:
                destinationFolder = KnownFolders.VideosLibrary;
                break;
            }

            var destinationFile = await destinationFolder.CreateFileAsync(request.Filename, CreationCollisionOption.GenerateUniqueName);

            var downloader = new BackgroundDownloader();

            if (!string.IsNullOrEmpty(request.Username) && !string.IsNullOrEmpty(request.Password))
            {
                downloader.ServerCredential = new PasswordCredential(request.Source.ToString(), request.Username,
                                                                     request.Password);
            }
            var download = downloader.CreateDownload(request.Source, destinationFile);
            var progress = new DownloadProgress(download);

            download.StartAsync().AsTask(progress);
            _activeDownloads.Add(download.Guid, progress);
            return(progress.TransferInfo);
        }
Beispiel #2
0
        public virtual async Task StartDownload(bool transcode, StorageType storage, string name, int audioTrack, int subtitleTrack)
        {
            var extension = System.IO.Path.GetExtension(Path);

            var download = new DownloadDefinition()
            {
                Path          = Path,
                Label         = name,
                Filename      = name + extension,
                Storage       = storage,
                Transcode     = transcode,
                Username      = _appContext.Settings.User,
                Password      = _appContext.Settings.Password,
                AudioTrack    = audioTrack,
                SubtitleTrack = subtitleTrack,
            };

            await _appContext.Downloads.AddDownload(download);

            _appContext.View.GotoDownloads();
        }