[Release] 4Chan Thread reader

Socius Decennalis
Decennium
Joined
Jul 1, 2008
Messages
178
Reaction score
83
Very simple API that lets you read posts from a thread on 4Chan.

Programmed in C#

Code:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Net;
using System.Text;

Code:
        struct Message
        {
            public string Author;
            public string TimeStamp;
            public DateTime Date;
            public string ImageURL;
            public string MessageText;

            public override string ToString()
            {
                return "(" + Author + ") : " + MessageText;
            }
        }

        public static List<Message> GetPosts(WebClient client, string Thrd)
        {
            string data = client.DownloadString(Thrd);
            client.Dispose();
            string[] splitted = data.Split(new string[] { "<hr>" }, StringSplitOptions.None);
            data = splitted[3];
            splitted = data.Split(new string[] { "<table>" }, StringSplitOptions.None);

            List<Message> Messages = new List<Message>();
            foreach (string s in splitted)
            {
                Message mess = new Message();
                foreach (string str in s.Split(new string[] { "<span " }, StringSplitOptions.None))
                {
                    if (str.Contains("form"))
                        continue;
                    if (str.Contains("File"))
                        mess.ImageURL = str.Split(new string[] { "<a href=\"" }, StringSplitOptions.None)[1].Split('"')[0];
                    if (str.Contains("postername"))
                    {
                        mess.Author = str.Split('>')[1].Split('<')[0];
                        mess.TimeStamp = str.Split(new string[] { "</span>" }, StringSplitOptions.None)[1];
                        //TimeSpan tp = TimeSpan.Parse(mess.TimeStamp);
                        if (mess.TimeStamp.Length > 3)
                        {
                            string[] splittimestamp = mess.TimeStamp.Replace(" ", "").Split('(');
                            splittimestamp[1] = splittimestamp[1].Split(')')[1];
                            mess.Date = DateTime.Parse(splittimestamp[0] + " " + splittimestamp[1]);
                        }
                    }
                    if (str.Contains("blockquote"))
                    {
                        string message = str.Split(new string[] { "blockquote" }, StringSplitOptions.None)[1];
                        if (str.Contains("quotelink"))
                        {
                            string[] messplit = message.Split(new string[] { "</font>" }, StringSplitOptions.None);
                            if (messplit.Length > 1)
                                message = messplit[1];
                            else
                                message = messplit[0];
                        }
                        mess.MessageText = message.Replace("<br />", "").Replace("</", "").Replace("<", "").Replace(">", "");
                    }
                }
                Messages.Add(mess);
            }
            return Messages;
        }
 
Last edited:
Back