summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Ostler <scottbot9000@gmail.com>2010-09-11 18:24:40 -0400
committerScott Ostler <scottbot9000@gmail.com>2010-09-11 18:24:40 -0400
commit23b770fd697d841052f837a85014107d1f242be8 (patch)
tree1795c9f85678aae3308e752bd36f20d59e6a57a6
parentf31b00db197eca2fd46ada0625a403f7e43e6c54 (diff)
fix line endings, remove default args
-rw-r--r--src/imgreplacer.clj142
1 files changed, 69 insertions, 73 deletions
diff --git a/src/imgreplacer.clj b/src/imgreplacer.clj
index 8c31a6b..6f763e7 100644
--- a/src/imgreplacer.clj
+++ b/src/imgreplacer.clj
@@ -1,73 +1,69 @@
-(ns imgreplacer
- (:import java.net.URL
- java.io.File
- java.io.IOException
- java.io.ByteArrayInputStream
- javax.imageio.ImageIO
- org.htmlcleaner.HtmlCleaner)
- (:use clojure.contrib.duck-streams
- clojure.contrib.str-utils
- config
- feed
- utils))
-
-(def save-root "images/replaced")
-(def string "wonderranchpublishing.com")
-(def dry-run true)
-
-
-(defn file-path [date fname]
- (str-join "/" [save-root date fname]))
-
-(defn image-url [date fname]
- (str-join "/" [*server-url* save-root date fname]))
-
-(defn ins-substring? [ss s]
- (>= (.indexOf (lower-case s) (lower-case ss)) 0))
-
-(defn fetch-bad-messages [url]
- (println "fetching bad messages for" url)
- (do-select [(str "SELECT * FROM messages WHERE content ilike '%" url "%'")]))
-
-(defn replace-grp-str [replacements string]
- (reduce (fn [s [k v]] (.replaceAll s k v))
- string replacements))
-
-(defn mirror-image [url]
- (println "fetching" url)
- (let [bytes (to-byte-array (.openStream (URL. url)))
- date (today)
- fname (last (.split url "/"))
- file (File. (file-path date fname))
- img (ImageIO/read (ByteArrayInputStream. bytes))]
- (println img)
- (make-parents file)
- (copy (ByteArrayInputStream. bytes) file)
- (image-url date fname)))
-
-(defn take-safe-images [m]
- (set (concat (take-images m)
- (try
- (pull-images-from-html m)
- (catch Exception _ [])))))
-
-(def image-url-map (ref {}))
-
-(defn replace-bad-images [url]
- (doseq [m (fetch-bad-messages url)]
- (let [imgs (filter #(ins-substring? url %)
- (take-safe-images (:content m)))]
- (doseq [img imgs]
- (if-not (contains? @image-url-map img)
- (if-let [path (mirror-image img)]
- (dosync (alter image-url-map assoc img path))
- (println "Unable to mirror" img))))
- (let [replace-map (zipmap imgs (map @image-url-map imgs))
- new-content (replace-grp-str replace-map (:content m))]
- (println "\nupdating content of" (:message_id m) "from:\n" (:content m) "\nto:\n" new-content)
- (if-not dry-run
- (do-update :messages
- ["message_id = ?" (:message_id m)]
- {:content new-content}))))))
-
-(replace-bad-images string) \ No newline at end of file
+(ns imgreplacer
+ (:import java.net.URL
+ java.io.File
+ java.io.IOException
+ java.io.ByteArrayInputStream
+ javax.imageio.ImageIO
+ org.htmlcleaner.HtmlCleaner)
+ (:use clojure.contrib.duck-streams
+ clojure.contrib.str-utils
+ clojure.contrib.command-line
+ config
+ feed
+ utils))
+
+(def save-root "images/replaced")
+
+(defn file-path [date fname]
+ (str-join "/" [save-root date fname]))
+
+(defn image-url [date fname]
+ (str-join "/" [*server-url* save-root date fname]))
+
+(defn ins-substring? [ss s]
+ (>= (.indexOf (lower-case s) (lower-case ss)) 0))
+
+(defn fetch-bad-messages [url]
+ (println "fetching bad messages for" url)
+ (do-select [(str "SELECT * FROM messages WHERE content ilike '%" url "%'")]))
+
+(defn replace-grp-str [replacements string]
+ (reduce (fn [s [k v]] (.replaceAll s k v))
+ string replacements))
+
+(defn mirror-image [url]
+ (println "fetching" url)
+ (let [bytes (to-byte-array (.openStream (URL. url)))
+ date (today)
+ fname (last (.split url "/"))
+ file (File. (file-path date fname))
+ img (ImageIO/read (ByteArrayInputStream. bytes))]
+ (println img)
+ (make-parents file)
+ (copy (ByteArrayInputStream. bytes) file)
+ (image-url date fname)))
+
+(defn take-safe-images [m]
+ (set (concat (take-images m)
+ (try
+ (pull-images-from-html m)
+ (catch Exception _ [])))))
+
+(def image-url-map (ref {}))
+
+(defn replace-bad-images [url dryrun?]
+ (doseq [m (fetch-bad-messages url)]
+ (let [imgs (filter #(ins-substring? url %)
+ (take-safe-images (:content m)))]
+ (doseq [img imgs]
+ (if-not (contains? @image-url-map img)
+ (if-let [path (mirror-image img)]
+ (dosync (alter image-url-map assoc img path))
+ (println "Unable to mirror" img))))
+ (let [replace-map (zipmap imgs (map @image-url-map imgs))
+ new-content (replace-grp-str replace-map (:content m))]
+ (println "\nupdating content of" (:message_id m) "from:\n" (:content m) "\nto:\n" new-content)
+ (if-not dryrun?
+ (do-update :messages
+ ["message_id = ?" (:message_id m)]
+ {:content new-content}))))))