Created
October 26, 2011 05:58
-
-
Save sunng87/1315572 to your computer and use it in GitHub Desktop.
upvotes in subreddits
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns reddit-visualization.core | |
(:require [reddit.clj.core :as reddit]) | |
(:import [javax.swing JFrame]) | |
(:import [org.jfree.chart ChartFactory ChartPanel]) | |
(:import [org.jfree.data.general DefaultPieDataset]) | |
(:import [org.jfree.util SortOrder])) | |
(def reddit-client (reddit/login nil nil)) | |
(defn map-reddits [user after-id] | |
(reddit/user-liked reddit-client user 25 after-id)) | |
(defn map-most-recent-reddits [user totalsize] | |
(loop [after-id nil | |
reddits '()] | |
(if (>= (count reddits) totalsize) | |
reddits | |
(let [some-reddits (map-reddits user after-id)] | |
(if (empty? some-reddits) | |
(concat reddits some-reddits) | |
(recur (:name (last some-reddits)) (concat reddits some-reddits))))))) | |
(defn reduce-subreddits-count [all-reddits] | |
(let [safe-inc-map (fn [data key] (assoc data key (inc (get data key 0)))) | |
all-subreddits (map #(:subreddit %) all-reddits)] | |
(reduce safe-inc-map {} all-subreddits))) | |
(defn create-dataset [subreddits-count-map] | |
(let [ds (DefaultPieDataset.)] | |
(dorun (map #(.setValue ds (key %) (val %)) subreddits-count-map)) | |
(.sortByValues ds SortOrder/DESCENDING) | |
ds)) | |
(defn create-chart-pane [dataset] | |
(let [chart (ChartFactory/createPieChart3D | |
"Upvotes in subreddits" dataset true true false)] | |
(ChartPanel. chart))) | |
(defn start-jframe [chart-panel] | |
(doto (JFrame. "Upvotes in subreddits") | |
(.setContentPane chart-panel) | |
(.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE) | |
(.pack) | |
(.setVisible true))) | |
(defn -main [& args] | |
(start-jframe | |
(create-chart-pane | |
(create-dataset | |
(let [subreddits-summary | |
(reduce-subreddits-count | |
(map-most-recent-reddits "sunng" 1000))] ;;change "sunng" to your reddit name | |
(pprint subreddits-summary) | |
subreddits-summary))))) | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defproject reddit-visualization "1.0.0-SNAPSHOT" | |
:description "FIXME: write description" | |
:dependencies [[org.clojure/clojure "1.3.0"] | |
[reddit.clj "0.3.1"] | |
[jfree/jfreechart "1.0.13"]] | |
:main reddit-visualization.core) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment