コード例 #1
0
        public PlaylistOperation(string url,
                                 string output,
                                 PreferredQuality preferredQuality,
                                 bool reverse,
                                 bool indexPrefix)
        {
            // Temporary title.
            this.Title           = "Getting playlist info...";
            this.ReportsProgress = true;

            this.Input  = url;
            this.Output = output;
            this.Link   = this.Input;

            _preferredQuality = preferredQuality;
            _reverse          = reverse;
            _indexPrefix      = indexPrefix;

            _downloader = new FileDownloader();

            // Attach events
            _downloader.Canceled                += downloader_Canceled;
            _downloader.Completed               += downloader_Completed;
            _downloader.FileDownloadFailed      += downloader_FileDownloadFailed;
            _downloader.CalculatedTotalFileSize += downloader_CalculatedTotalFileSize;
            _downloader.ProgressChanged         += downloader_ProgressChanged;
        }
コード例 #2
0
        /// <summary>
        /// Returns the preferred video format quality based on application setting.
        /// </summary>
        /// <param name="video">The video to get format from.</param>
        public static VideoFormat GetPreferredFormat(VideoInfo video, PreferredQuality preferredQuality)
        {
            VideoFormat[] qualities = Helper.GetVideoFormats(video);

            /* Find a format based on user's preference.
             *
             * Highest  : Self-explanatory
             * High     : 1080p
             * Medium   : 720p
             * Low      : 360p
             * Lowest   : 140p
             */

            int index = -1;

            switch (preferredQuality)
            {
            case PreferredQuality.Highest:
                // Do nothing
                break;

            case PreferredQuality.High:
                if ((index = qualities.IndexOf("1080")) > -1)
                {
                    return(qualities[index]);
                }
                break;

            case PreferredQuality.Medium:
                if ((index = qualities.IndexOf("720")) > -1)
                {
                    return(qualities[index]);
                }
                break;

            case PreferredQuality.Low:
                if ((index = qualities.IndexOf("360")) > -1)
                {
                    return(qualities[index]);
                }
                break;

            case PreferredQuality.Lowest:
                if ((index = qualities.IndexOf("144")) > -1)
                {
                    return(qualities[index]);
                }
                break;
            }

            if (!(index > -1))
            {
                index = qualities.Length - 1;
            }

            return(qualities[index]);
        }
コード例 #3
0
 public PlaylistOperation(string url,
                          string output,
                          PreferredQuality preferredQuality,
                          bool reverse,
                          bool indexPrefix,
                          IEnumerable <QuickVideoInfo> videos)
     : this(url, output, preferredQuality, reverse, indexPrefix)
 {
     _videos.AddRange(videos);
 }
コード例 #4
0
        public BatchOperation(string output, ICollection <string> inputs, PreferredQuality preferredQuality)
        {
            this.Title           = $"Batch download (0/{inputs.Count} videos)";
            this.ReportsProgress = true;
            this.Input           = string.Join("|", inputs);
            this.Output          = output;
            this.Inputs.AddRange(inputs);

            _preferredQuality = preferredQuality;
            _logger           = OperationLogger.Create(OperationLogger.YTDLogFile);

            _downloader = new FileDownloader();
            // Attach events
            _downloader.Canceled                += downloader_Canceled;
            _downloader.Completed               += downloader_Completed;
            _downloader.FileDownloadFailed      += downloader_FileDownloadFailed;
            _downloader.CalculatedTotalFileSize += downloader_CalculatedTotalFileSize;
            _downloader.ProgressChanged         += downloader_ProgressChanged;
        }