List <ListBoxItemFormat> LoadFormats_Parse(string result, string url)
        {
            var  results              = new List <ListBoxItemFormat>();
            bool isYoutube            = url.Contains("youtube");
            var  resultLines          = Utils.SplitLines(result);
            var  containsAvailFormats = resultLines.Any(
                (s) => s.StartsWith("[info] Available formats for "));

            if (!containsAvailFormats)
            {
                throw new CsDownloadVidException("did not see any line with " +
                                                 "'[info] Available formats'. result was " + result);
            }

            if (cbUsePytube.Checked)
            {
                foreach (var line in resultLines)
                {
                    if (line.StartsWith("<Stream:"))
                    {
                        ListBoxItemFormat item = new ListBoxItemFormat();
                        item._displayText = line;
                        results.Add(item);
                    }
                }

                return(results);
            }

            bool shouldIncludeLine = false;

            foreach (var line in resultLines)
            {
                if (!shouldIncludeLine && line.Replace(" ", "").StartsWith(
                        "format code  extension resolution".Replace(" ", "")))
                {
                    shouldIncludeLine = true;
                }
                else if (shouldIncludeLine)
                {
                    ParseFormat(results, line, isYoutube);
                }
            }

            if (results.Count == 0)
            {
                throw new CsDownloadVidException("Did not see any formats... stdout was " +
                                                 result);
            }

            results.Sort();
            return(results);
        }
 void AddGenericFormatsToListbox()
 {
     if (!cbUsePytube.Checked)
     {
         var formats = from key in _formatsGeneric.Keys orderby key select key;
         foreach (var format in formats)
         {
             var item = new ListBoxItemFormat();
             item._displayText = format;
             listBoxFmts.Items.Add(item);
         }
     }
 }
        private void ParseFormat(List <ListBoxItemFormat> results, string line, bool isYoutube)
        {
            var parts = line.Split(new string[] { "          " }, count: 2,
                                   options: StringSplitOptions.None);
            var firstNumber = parts[0];

            if (int.TryParse(firstNumber, out int nOut))
            {
                parts[1] = parts[1].Trim();
                parts[1] = parts[1].Replace("  ", " ").Replace("  ", " ").Replace("  ", " ");
                if (parts[1].Contains("audio only"))
                {
                    parts[1] = "audio: " + parts[1].Replace("audio only", "");
                }
                else if (parts[1].Contains("video only"))
                {
                    parts[1] = "video: " + parts[1].Replace("video only", "");
                }
                else
                {
                    parts[1] = "a+v: " + parts[1];
                }

                parts[1] = parts[1].Replace(" , ", "");

                ListBoxItemFormat item = new ListBoxItemFormat();
                item._formatNumber = nOut;
                item._displayText  = parts[1];
                results.Add(item);
            }
            else if (!isYoutube)
            {
                if (line.Contains("   "))
                {
                    ListBoxItemFormat item = new ListBoxItemFormat();
                    item._displayText = line.Trim();
                    results.Add(item);
                }
            }
            else if (line.Contains("   "))
            {
                _runner.Trace("ignoring line " + line);
            }
        }
 private string displayFmtToChosenFormat(ListBoxItemFormat item)
 {
     if (cbUsePytube.Checked)
     {
         return(item._displayText);
     }
     if (item._formatNumber == -1)
     {
         if (_formatsGeneric.ContainsKey(item._displayText))
         {
             return(_formatsGeneric[item._displayText]);
         }
         else
         {
             return(item._displayText.Split(new string[] { " " },
                                            StringSplitOptions.None)[0]);
         }
     }
     else
     {
         return(item._formatNumber.ToString());
     }
 }