0.01
No commit activity in last 3 years
No release in over 3 years
Fourchan Kit is a Ruby wrapper and tool for the 4chan API. Use Fourchan Kit to interact with the API using Ruby, or use the tool to interact with the threads on 4chan.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 0.5
~> 1.6
~> 1.3
~> 10.3
~> 2.14
~> 2.9
~> 1.17
~> 0.8

Runtime

~> 1.8
~> 2.7
~> 1.0
~> 0.19
 Project Readme

Fourchan::Kit

Fourchan::Kit is a Ruby wrapper and tool for the 4chan API. Use Fourchan::Kit to interact with the API using Ruby, or use the tool to interact with the threads on 4chan.

Installation

[sudo] gem install fourchan-kit

Usage

Be sure to checkout out the documentation, if you are in doubt of how something works.

Using the Board class

require 'fourchan/kit'

g = Fourchan::Kit::Board.new 'g'
g.threads(1)   # All threads from the first page (but not replies)
g.posts(1)     # All threads and its replies

g.all_threads  # All threads for the board (but not replies)
g.all_posts    # All posts and its replies for the board

That's pretty much all there is to Board. They all return an array of Post, so it's possible to do:

g.threads(1).first.no          # => 39894014
g.threads(1).first.image_link  # => http://i.4cdn.org/g/1390842451744.png

Using the Thread class

For now it needs a board and a thread number. Later it might be possible to give an URL instead.

require 'fourchan/kit'

t = Fourgem::Thread.new 'wg', 5777336
t.op       # Return thread starter
t.replies  # Return all replies to the thread (excluding OP)
t.posts    # Return all posts in thread (including OP)
t.images   # Return an array of all images (links to the images)

# Each post is a Post object (OpenStruct)
t.posts.each do |post|
  post.image_link  # => 'http://i.4cdn.org/wg/1398597510994.jpg'
  post.com         # => 'Hey,<br>Some one on my FB took ...'
  post.tim         # => 1398597510994
  post.ext         # => '.jpg'
  post.no          # => 5777336
  post.name        # => 'Anonymous'
  post.sub         # => 'Urban/Architecture'
end

Using the binary

$ fourchan help
Commands:
  fourchan download        # Download all images from a thread
  fourchan help [COMMAND]  # Describe available commands or one specific command
  fourchan lurk THREAD     # Look for new messages and/or download new images

$ fourchan download -u http://boards.4chan.org/wg/thread/5777336 -o buildings
Downloading: http://i.4cdn.org/wg/1398597510994.jpg @  428.81kB
Downloading: http://i.4cdn.org/wg/1398597561903.jpg @  324.91kB
Downloading: http://i.4cdn.org/wg/1398617625457.jpg @  222.96kB
Downloading: http://i.4cdn.org/wg/1398617657152.jpg @  572.74kB
Downloading: http://i.4cdn.org/wg/1398622970113.jpg @ 1122.49kB
$
$ cat threads.txt
http://boards.4chan.org/wg/thread/5777976
http://boards.4chan.org/wg/thread/5777265
http://boards.4chan.org/wg/thread/5721
$
$ fourchan download -f threads.txt
Getting images from thread: http://boards.4chan.org/wg/thread/5777976
Downloading: http://i.4cdn.org/wg/1398648908295.jpg @ 1618.35kB
Downloading: http://i.4cdn.org/wg/1398649547061.jpg @  634.04kB

Getting images from thread: http://boards.4chan.org/wg/thread/5777265
Downloading: http://i.4cdn.org/wg/1398591368018.jpg @  182.12kB
Downloading: http://i.4cdn.org/wg/1398593765693.jpg @  713.01kB
Downloading: http://i.4cdn.org/wg/1398593933823.jpg @  678.24kB
Downloading: http://i.4cdn.org/wg/1398626568293.jpg @  462.13kB
Downloading: http://i.4cdn.org/wg/1398627582485.jpg @  283.39kB

Getting images from thread: http://boards.4chan.org/wg/thread/5721
Not a 4chan thread

$

Lurk is pretty much the same as download -u THREAD, it does not finish after downloading though, but rather keep checking for new images. User can define the interval between checks.
See fourchan help lurk.

Why Fourchan::Kit?

I wanted to try and make a Ruby gem, so it's basically just a little, personal project.

Also with the new changes to the 4chan API (use /thread/ instead of /res/), a lot of old 4chan gems are dead. Fourchan::Kit might be able to replace some of those dead gems.