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()); } }