Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

4chan Source Code

Name: Anonymous 2007-08-01 6:28 ID:rpojcmHJ

Is there anywhere to download the source code of 4chan/other image boards? I'd like to see it just out of curiosity and to possibly set one up for myself and friends.

Name: Anonymous 2008-08-31 20:53

You, Sir, are and idiot. :D

Name: Anonymous 2008-08-31 21:24

>>41
back to /b/, please

Name: Anonymous 2008-09-01 11:06

Does 4chan answer any commands besides regular HTTP GET and POST?
Like can you get a list of md5's of all the pics (something I'd
imagine the admins added for their own use).

Name: Anonymous 2008-09-01 12:42

>>35
Dead Leaves
Great movie.

Name: Anonymous 2008-09-01 14:14

>>43
The JSON API is on the FAQ page.  Read the fucking FAQ.

Name: Anonymous 2008-10-19 19:48

Name: Anonymous 2008-10-21 16:40

Sure, post it somewhere.

Name: Anonymous 2008-10-27 0:33

Name: Anonymous 2008-10-27 4:47

>>48
Shit is SO cash!

Name: Anonymous 2008-10-27 8:15

>>45
Link plox! I'd like json board/thread output if that's what you mean.

Name: Anonymous 2008-10-27 13:45

I cant believe that nobody has mentioned serissa. Its kusaba heavily upgraded with much better modding options and my favorite, post spy, which automatically adds new posts to threads without f5. I wish 4chan would implement something like that.

anyways, is at http://www.serissa.org

Name: Anonymous 2008-10-27 13:47

>>51 here
Also pretty much every *chan that was using kusaba (7,711,99,etc) has switched to it.

Name: Anonymous 2008-10-27 14:18

>>51-52
lol @ butthurt kusabafag

kusaba is dead. upgrade to pyib.

Name: Anonymous 2008-10-27 21:31

>>51
Hey, you asshole who spams that shit everywhere, no one else cares. Everyone else who formerly used Kusaba has died of AIDS.

Also, those are some fucking stupid features. A discussion board is not IRC.

Name: Anonymous 2008-10-27 21:34

Name: Anonymous 2008-10-28 5:50

>>55
Troll?

Name: Anonymous 2008-10-28 12:19

>>51
I cant believe that nobody has mentioned serissa.
Because this isn't /pr/. (You should go back to it)

Serissa (and the other thousand of clones Kusaba spawned) is just Kusaba being ``maintained'' by clueless underage idiots with no clue whatsoever.

I mean, seriously, those are the dumbest fucking ``features'' I have ever seen. ``Faptcha'' being the worst, I'm going to wager something as simplistic and with so little base images as that is easily breakable using a few lines of FIOC.

Name: Anonymous 2008-10-28 17:09

>>57
/r/ Faptcha breaker in FIOC.

Name: Anonymous 2008-10-29 0:19

$ wc -c serissa_v1.0.4.zip
1543494 serissa_v1.0.4.zip
A megabyte and a half for an imageboard?!


import Image, operator, os, glob
def diff(*t):
    x, y = [Image.open(f).histogram() for f in t]
    return (reduce(operator.add,
        map(lambda a, b: (a - b) ** 2, x, y)) / len(x)) ** 0.5
test = 'serissasucks.png' # change this
print sorted((diff(test, f), os.path.basename(f)[:-4].rstrip('0123456789'))
    for f in glob.glob('faptcha_default/*.png'))[0][1]

Name: Anonymous 2008-10-29 14:01

Bump this shit for 4chan JSON API. I'm starting to think it's a lie.

Name: Anonymous 2008-10-29 14:23

>>60
If there were a 4chan JSON API, what operations would it expose? I (and pretty much every other person) have a set of regexes for parsing the boards, so it would be fairly trivial to write a read-only interface for interacting with them.

Name: ­ !yYT/u4PSNE 2008-10-29 14:59

anyone has the tripcode algorithm?

Name: Anonymous 2008-10-29 15:01

>>61
+ postSuperGnuDefenderOfTheGPL()
+ troll()
+ haxMyAnus()

Name: Anonymous 2008-10-29 17:27

>>63
grabDick()

Name: Anonymous 2008-10-29 18:27

escapeFaggotQuotes()

Name: Anonymous 2008-10-29 18:46

unescapeFaggotQuotes()

Name: Anonymous 2008-10-30 0:49

reescapeFaggotQuotes()

Name: Anonymous 2008-10-30 3:29

1
troll(/jp/)
grabDick()
post([spoiler]/prog/[/spoiler])
goto 1

Name: Anonymous 2008-10-30 11:36

>>61
Would you be so kind to post your regexps?

Name: Anonymous 2008-10-30 12:39

>>69
/(hax my anus)+/

Name: Anonymous 2008-10-30 12:46

>>69
sub get_thread($$){
    my $self=shift;
    my($thread)=@_;

    my($err,$res)=$self->wget($self->link_thread($thread));
    $err and return $err;
   
    my $t;
    while($res=~m!(
            (?:
                (?:
                    <(span) \s class="filesize">(?>.*?</blockquote>)
                    |
                    <img \s src="[^"]*" alt="File \s deleted\.">
                )
                (?:<span \s class="omittedposts">[^<]*</span>)?
            )
            |
            (?:<table><tr><td \s nowrap \s class="doubledash">(?>.*?</blockquote></td></tr></table>))
    )!gxs){
        my($text,$type)=($1,$2);
        if($type){
            $self->troubles("two thread posts in one thread------$res------") and return
                if $t;
            $t=$self->parse_thread($text);
        }else{
            $self->troubles("posts without thread------$res------") and return
                unless $t;
           
            push @{$t->{posts}},$self->parse_post($text,$t->{num});
        }
    }
   
    $t;
}
sub parse_thread($$){
    my $self=shift;
    my($text)=@_;
    $text=~m!    (?:
                    <a \s href="([^"]*/src/\d+\.\w+)"[^>]*>[^<]*</a> \s*
                    \- \s* \((Spoiler \s Image,)?([\d\sGMKB\.]+)\, \s (\d+)x(\d+)(?:, \s* <span \s title="([^"]*)">[^<]*</span>)?\) \s*
                    </span> \s*
                    (?:
                        <br>\s*<a[^>]*><img \s+ src=\S* \s+ border=\S* \s+ align=\S* \s+ (?:width="?(\d+)"? \s height="?(\d+)"?)? [^>]*? md5="?([\w\d\=\+\/]+)"? [^>]*? ></a> \s*
                        |
                        <a[^>]*><span \s class="tn_thread"[^>]*>Thumbnail \s unavailable</span></a>
                    )
                    |
                    <img [^>]+ alt="File \s deleted\.">
                )
                <a[^>]*></a> \s*
                <input \s type=checkbox \s name="(\d+)"[^>]*><span \s class="filetitle">(?>(.*?)</span>) \s*
                <span \s class="postername">(?:<a \s href="mailto:([^"]*)"[^>]*>)?([^<]*?)(?:</a>)?</span>
                (?: \s* <span \s class="postertrip">([a-zA-Z0-9\.\+/\!]+)(?:</a>)?</span>)?
                \s ([^>]*) \s \s* <span[^>]*> \s*
                (?>.*?</span>) \s*
                <blockquote>(?>(.*?)</blockquote>)
                (?:<span \s class="omittedposts">(?:(\d+)(?:.*?(\d+)).*?)?</span>)?
    !xs or $self->troubles("error parsing thread\n------\n$text\n------\n") and return;

    $self->new_thread(
        num            => $10,
        omposts        =>($17 or 0),
        omimages    =>($18 or 0),
        posts        =>[$self->new_yotsuba_post(
            $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,0
        )],
    )
}

sub parse_post($$$){
    my $self=shift;
    my($text,$parent)=@_;
    $text=~m!    <td \s id="(\d+)"[^>]*> \s*
                <input[^>]*><span \s class="replytitle">(?>(.*?)</span>) \s*
                <span \s class="commentpostername">(?:<a \s href="mailto:([^"]*)"[^>]*>)?([^<]*?)(?:</a>)?</span>
                (?: \s* <span \s class="postertrip">([a-zA-Z0-9\.\+/\!]+)(?:</a>)?</span>)?
                \s ([^>]*) \s \s* <span[^>]*> \s*
                (?>.*?</span>) \s*
                (?:
                    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \s*
                    <span \s class="filesize">File \s :
                    <a \s href="([^"]*/src/\d+\.\w+)"[^>]*>[^<]*</a> \s*
                    \- \s* \((Spoiler \s Image,)?([\d\sGMKB\.]+)\, \s (\d+)x(\d+)(?:, \s* <span \s title="([^"]*)">[^<]*</span>)?\)
                    </span> \s*
                    (?:
                        <br>\s*<a[^>]*><img \s+ src=\S* \s+ border=\S* \s+ align=\S* \s+ (?:width=(\d+) \s height=(\d+))? [^>]*? md5="?([\w\d\=\+\/]+)"? [^>]*? ></a> \s*
                        |
                        <a[^>]*><span \s class="tn_reply"[^>]*>Thumbnail \s unavailable</span></a>
                    )
                    |
                    <br> \s*
                    <img [^>]* alt="File \s deleted\." [^>]* > \s*
                )?
                <blockquote>(?>(.*?)</blockquote>)</td></tr></table>
    !xs or $self->troubles("error parsing post\n------\n$text\n------\n") and return;
   
    $self->new_yotsuba_post(
        $7,$8,$9,$10,$11,$12,$13,$14,$15,$1,$2,$3,$4,$5,$6,$16,$parent
    )
}

Name: Anonymous 2008-10-30 13:02

>>71
OMG. Thanks. That's why I'd like JSON output.

Name: Anonymous 2008-10-30 13:04

>>72
I need code to turn this into a SEXP. Can someone help?

Name: Anonymous 2008-10-30 13:11

>>73
please be providing program code for xml output

thank you

vishnu panchal

Name: Anonymous 2008-10-30 13:19

>>74
it carries out and is w

Name: Anonymous 2008-10-30 13:22

>>75
No, that was a parody of the Indian/Chinese guys on the Internet that demand sample code and help all over the place.

I got the name from this epic (fail) thread:

http://kerneltrap.org/node/5772

It's almost a decade old, but it's always on top of the latest forum posts list.

Name: Anonymous 2008-10-30 13:27

epic

Name: Anonymous 2008-10-30 14:26

>>77
No, really.

Name: Anonymous 2008-10-30 15:50

Why the hell do that many people want to make a folder called "con"?

Wtf.

Name: Anonymous 2008-10-30 16:23

>>79
Maybe they want to save documents for a scam in that folder.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List