Ejemplo n.º 1
0
        private void EnqueueDownloads()
        {
            bool hasMoreParts = true;

            TimeSpan partStartTime = _downloadParams.CropStart ? _downloadParams.CropStartTime : TimeSpan.Zero;
            TimeSpan videoEndTime  = _downloadParams.CropEnd ? _downloadParams.CropEndTime : _downloadParams.Video.Length;
            TimeSpan partEndTime   = videoEndTime;
            int?     partNumber    = null;

            if (_downloadParams.SplitVideo)
            {
                partNumber = 1;
                _downloadParams.CropStart = true;
                _downloadParams.CropEnd   = true;
            }

            do
            {
                if (_downloadParams.SplitVideo && ((partEndTime - partStartTime) > _downloadParams.SplitLength))
                {
                    partEndTime = partStartTime + _downloadParams.SplitLength;
                }
                else
                {
                    hasMoreParts = false;
                }


                _downloadParams.CropStartTime = partStartTime;
                _downloadParams.CropEndTime   = partEndTime;
                if (_useCustomFilename)
                {
                    if (partNumber.HasValue)
                    {
                        if (partNumber > 1)
                        {
                            _downloadParams.Filename = _downloadParams.Filename.Remove(0, 4);
                        }
                        _downloadParams.Filename = ((int)partNumber).ToString("000") + "_" + _downloadParams.Filename;
                    }
                }
                else
                {
                    UpdateFilenameFromTemplate(partNumber);
                }



                if (File.Exists(_downloadParams.FullPath))
                {
                    MessageBoxResult result = _dialogService.ShowMessageBox("The file already exists. Do you want to overwrite it?", "Download", MessageBoxButton.YesNo, MessageBoxImage.Question);

                    if (result != MessageBoxResult.Yes)
                    {
                        return;
                    }
                }

                _twitchService.Enqueue((DownloadParameters)_downloadParams.Clone());

                if (hasMoreParts)
                {
                    partNumber++;
                    partStartTime = partEndTime;
                    partEndTime   = videoEndTime;
                }
            } while (hasMoreParts);
        }