Skip to content

Instantly share code, notes, and snippets.

@m039
Created January 25, 2012 13:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save m039/1676188 to your computer and use it in GitHub Desktop.
Save m039/1676188 to your computer and use it in GitHub Desktop.
get likes/comments count from the facebook
;; -*- mode: emacs-lisp; -*-
(require 'mm-uu)
(require 'json)
(require 'url)
(defvar facebook-access-token nil)
(defvar facebook-retrive-limit 1000)
(defun facebook-set-access-token (token)
(setq facebook-access-token token))
(defun facebook-get-count (fbid getter &optional offset limit)
(let* ((offset (or offset 0))
(limit (or limit facebook-retrive-limit))
(count (length (retrive-json (funcall getter fbid offset limit)))))
(if (>= count limit)
(+ count (facebook-get-count fbid getter (+ offset limit) limit))
count)))
(defun facebook-get-comment-count (fbid)
(facebook-get-count fbid #'facebook-query/comment))
(defun facebook-get-like-count (fbid)
(facebook-get-count fbid #'facebook-query/like))
(defun facebook-query/comment (fbid &optional offset limit)
(let ((limit (or limit facebook-retrive-limit))
(offset (or offset 0)))
(concat "https://api.facebook.com/method/fql.query?format=json&query="
(url-hexify-string (format "SELECT '' FROM comment WHERE object_id = '%s' LIMIT %s OFFSET %s" fbid limit offset))
"&access_token=" facebook-access-token)))
(defun facebook-query/like (fbid &optional offset limit)
(let ((limit (or limit facebook-retrive-limit))
(offset (or offset 0)))
(concat "https://api.facebook.com/method/fql.query?format=json&query="
(url-hexify-string (format "SELECT '' FROM like WHERE object_id = '%s' LIMIT %s OFFSET %s" fbid limit offset))
"&access_token=" facebook-access-token)))
(setq facebook-retrive-limit 2000)
(facebook-set-access-token "")
(facebook-get-like-count "2946613217211")
(facebook-get-comment-count "2946613217211")
;; misc
;; ----
(defun retrive-json (url)
(with-current-buffer
(mm-handle-buffer
(with-current-buffer (url-retrieve-synchronously url)
(mm-dissect-buffer t)))
(goto-char 1)
(json-read)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment