Usage¶
4ch is easy to use and implement, here are some examples. For more thorough documentation, visit the Automated Documentation.
Neat examples¶
Here are some examples to show you what sort of stuff you can do with 4ch.
List all image URLs¶
You can easily access all the images in a thread
with the t.images
property.
## images.py
import sys
import fourch
def main():
# Display usage and help if they've mucked up.
if len(sys.argv) is not 3:
print "usage: python {0} <board> <thread>".format(sys.argv[0])
return
b = fourch.board(sys.argv[1])
t = b.thread(sys.argv[2])
for i in t.images:
print i
if __name__ == "__main__":
main()
This can be utilized to download all the images in a thread like so:
$ python images.py g 123456789 | xargs wget
This will simply pass all of the image URLs to wget, downloading them.
Get thread meta-data¶
This will simply list information about a given thread.
## thread_data.py
import sys
import fourch
def main():
if len(sys.argv) is not 3:
print "usage: python {0} <board> <thread>".format(sys.argv[0])
return
b = fourch.board(sys.argv[1])
t = b.thread(sys.argv[2])
print 'Thread:\t\t', t
print 'Sticky:\t\t', t.sticky
print 'Closed:\t\t', t.closed
print 'OP:\t\t', t.op
print 'Post #:\t\t', t.op.number
print 'Post time:\t', t.op.now
print 'Timestamp:\t', t.op.timestamp
print 'Filemd5:\t', t.op.file.md5
print 'Filemd5 base64:\t', t.op.file.md5b64
print 'File url:\t', t.op.file.url
print 'Subject:\t', t.op.subject
print 'Comment (text):\n', t.op.comment_text
print 'Replies:\t', len(t.replies)
if __name__ == "__main__":
main()
View all threads in a page¶
Note
If you set update_each
to True
, this method can be costly – bandwidth wise – as well as slow, as it has to GET each thread.
You can easily view all the threads on any given page of a board with the fourch.board.page()
method.
This method pulls in all the threads in a given page.
If you want to get all the threads, as well as their replies (e.g., a full thread, not just what’s shown),
you will have to set update_each
to True
in the method call: b.page(page=0, update_each=True)
## all_threads.py
import sys
import fourch
def main():
if len(sys.argv) is not 3:
print "usage: python {0} <board> <page>".format(sys.argv[0])
return
b = fourch.board(sys.argv[1])
thr = b.page(page=sys.argv[2])
for t in thr:
print t.op.url
print t.op.comment_text, "\n"
if __name__ == "__main__":
main()
This will simply pull in all the threads from whatever page you specify, and print out the URL, as well as the comment.