Skip to content

Instantly share code, notes, and snippets.

@tavisrudd
Forked from tomykaira/core.clj
Created October 31, 2011 17: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 tavisrudd/1328025 to your computer and use it in GitHub Desktop.
Save tavisrudd/1328025 to your computer and use it in GitHub Desktop.
save your followers in neo4j
(ns friends-relationship-twitter.core
(:require [borneo.core :as neo]
twitter
[oauth.client :as oauth]))
(def oauth-consumer (oauth/make-consumer "KEY"
"SECRET"
"https://api.twitter.com/oauth/request_token"
"https://api.twitter.com/oauth/access_token"
"https://api.twitter.com/oauth/authorize"
:hmac-sha1))
(neo/with-db! "twitter-db"
(defn find-node-with-twitter-id [id]
(first (filter #(= (try
(.getProperty % "id")
(catch org.neo4j.graphdb.NotFoundException null))
id) (neo/all-nodes))))
(defn find-or-create [from id]
(let [node (find-node-with-twitter-id id)
rels (if node (neo/rels node :follower :in))]
(if node
(when-not (some #(= from (.getStartNode %)) rels)
(neo/create-rel! from :follower node))
(neo/create-child! from :follower {:id id}))))
(let [me (or (find-node-with-twitter-id YOUR_ID)
(neo/create-child! :user {:screen_name "YOUR_SCREEN_NAME"
:id YOUR_ID}))]
;; 正格評価しないと error: java.lang.IllegalStateException?: Closed id generator
(doall (map #(find-or-create me %) (twitter/followers-of-name "YOUR_SCREEN_NAME")))
))
(defproject friends-relationship-twitter "1.0.0-SNAPSHOT"
:description "Crawl the friend-follower relationship with Twitter api and save them into Neo4j"
:dependencies [[org.clojure/clojure "1.2.1"]
[borneo "0.3.0"]
[clojure-twitter "1.2.5"]])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment