private static List <string> ExtractUrls(string username, string fname) { var imageUrls = new List <string>(); var atEnd = false; var lastImage = ""; #region Extracting var req = (HttpWebRequest)WebRequest.Create( $"https://www.pr0gramm.com/api/items/get?flags=1&user={username}&collection={fname}"); var res = (HttpWebResponse)req.GetResponse(); var resp = new StreamReader(res.GetResponseStream()).ReadToEnd(); while (resp.Contains("\"image\":")) { var tmp = Misc.GetStringBetween(resp, "\"image\":\"", "\""); lastImage = Misc.GetStringBetween(resp, "{\"id\":", ","); imageUrls.Add("https://img.pr0gramm.com/" + tmp.Replace("\\", string.Empty)); try { resp = resp.Split(new[] { tmp }, StringSplitOptions.None)[3]; } catch { try { resp = resp.Split(new[] { tmp }, StringSplitOptions.None)[2]; } catch { resp = resp.Split(new[] { tmp }, StringSplitOptions.None)[1]; } } } while (!atEnd) { req = (HttpWebRequest)WebRequest.Create( $"https://www.pr0gramm.com/api/items/get?older={lastImage}&" + $"flags=1&user={username}&collection={fname}"); res = (HttpWebResponse)req.GetResponse(); resp = new StreamReader(res.GetResponseStream()).ReadToEnd(); if (resp.Contains("atEnd\":true")) { atEnd = true; } while (resp.Contains("\"image\":")) { var tmp = Misc.GetStringBetween(resp, "\"image\":\"", "\""); lastImage = Misc.GetStringBetween(resp, "{\"id\":", ","); Console.Title = lastImage; imageUrls.Add("https://img.pr0gramm.com/" + tmp.Replace("\\", string.Empty)); try { resp = resp.Split(new[] { tmp }, StringSplitOptions.None)[3]; } catch { try { resp = resp.Split(new[] { tmp }, StringSplitOptions.None)[2]; } catch { resp = resp.Split(new[] { tmp }, StringSplitOptions.None)[1]; } } } } #endregion return(imageUrls); }