0

I'm trying on form load, to make it count the number of lines in a pastebin raw & return the value to a textbox. Been racking my brains and still cant figure it out.

textBox1.Text = new WebClient().DownloadString("yourlink").
Uwe Keim
  • 39,551
  • 56
  • 175
  • 291

1 Answers1

0

I'm expanding my comment to an answer.
As already mentioned, you need a HttpRequest or WebRequest to get the content of your string. Maybe new WebClient().DownloadString(url);, but I prefer to use the WebRequest since it's also supported in .NET Core.

What you need to do is, extract the content of the RAW TextArea object from . I know, people will probably hate me for that, but I used for that task. Alternatively you can use a parser.

The Raw data is contained within a textarea with following attributes:

<textarea id="paste_code" class="paste_code" name="paste_code" onkeydown="return catchTab(this,event)">

So the pattern looks like this:

private static string rgxPatternPasteBinRawContent = @"<textarea id=""paste_code"" class=""paste_code"" name=""paste_code"" onkeydown=""return catchTab\(this,event\)"">(.*)<\/textarea>";

Since the code is spread over multiple lines, our Regex has to be use with a single line option.

Regex rgx = new Regex(rgxPatternPasteBinRawContent, RegexOptions.Singleline);

Now find the match, that contains the RAW data:

string htmlContent = await GetHtmlContentFromPage("SomePasteBinURL");
//Possibly your new WebClient().DownloadString("SomePasteBinURL");
//await not necesseraly needed here!

Match match = rgx.Match(htmlContent);
string rawContent = "ERROR: No Raw content found!";
if (match.Groups.Count > 0)
{
    rawContent = match.Groups[1].Value;
}

int numberOfLines = rawContent.Split('\n').Length + 1;

And you're done.

The WebRequest looks like this for me:

private static async Task<string> GetHtmlContentFromPage(string url)
{
    WebRequest request = WebRequest.CreateHttp(url);
    WebResponse response = await request.GetResponseAsync();
    Stream receiveStream = response.GetResponseStream();
    StreamReader readStream = null;


    readStream = new StreamReader(receiveStream);

    string data = readStream.ReadToEnd();

    response.Dispose();
    readStream.Dispose();

    return data;
}
jAC
  • 5,195
  • 6
  • 40
  • 55