(use '[clojure.contrib.duck-streams :only (reader with-in-reader)]) (use '[clojure.contrib.json.read :only (read-json)]) (use '[clojure.contrib.json.write :only (print-json)]) (import '(java.net URLEncoder)) (def google-search-prefix "http://ajax.googleapis.com/ajax/services/search/web?start=0&rsz=large&v=1.0&q=") (defn find-review-url [name site] (with-in-reader (reader (apply str [google-search-prefix (URLEncoder/encode (apply str [\" name \"]) "UTF-8") "%20site:" site])) (with-open [rdr *in*] (if-let [url (-> (read-json rdr) (get "responseData") (get "results") (first) (get "url"))] [url] [])))) (defn find-metacritic-review-url [name] (filter #(.contains % "titles") (find-review-url name "metacritic.com"))) (defn find-rotten-review-url [name] (filter #(.contains % "/m/") (find-review-url name "rottentomatoes.com"))) (defn find-review-urls [name] (map #(first %) [(find-metacritic-review-url name) (find-rotten-review-url name)])) (dorun (map #(println (apply str (interpose "," (find-review-urls %)))) *command-line-args*))