ldview/src/ldview/tasks/runner.clj

39 lines
1.6 KiB
Clojure
Raw Normal View History

(ns ldview.tasks.runner
(:require [ldview.tasks.scrape :as scrape]
[ldview.tasks.images :as images]
[me.raynes.fs :as fs]
[ldview.models.entry :as entry]
[ldview.models.competition :as competition]
[ldview.models.schema :as schema]))
2014-01-30 00:27:46 +01:00
(defn cleanup! []
(if (fs/exists? images/base-path)
(fs/delete-dir images/base-path))
(fs/mkdirs (str images/base-path "/thumbs/"))
(fs/mkdirs (str images/base-path "/fullscreen/"))
(fs/mkdirs (str images/base-path "/raw/")))
2014-01-30 00:27:46 +01:00
(defn save-entry! [new-entry]
(entry/create! new-entry)
(if (:images new-entry)
(map (fn [image-url]
(let [id (:ld_uid new-entry)
number (last (first (re-seq #"shot([0-9]+)" image-url)))
raw-image-path (images/image-name "raw" id number)]
(scrape/save-image-from-url image-url raw-image-path)
(images/sourceimage->fullscreen raw-image-path (images/image-name "fullscreen" id number))
(images/sourceimage->thumb raw-image-path (images/image-name "thumbs" id number))))
(:images new-entry))))
; TODO: Make it multithreaded
(defn fetch-all-content [competition-id]
(let [pages (range 5)] ;(scrape/number-of-pages competition-id)]
(doseq [page pages]
(doseq [ld-uid (scrape/entries-on-page competition-id (inc page))]
(if-not (entry/exists? ld-uid)
(save-entry! (scrape/entry-details competition-id ld-uid)))))))
(defn load-competition [competition-id]
(competition/create! competition-id (scrape/theme competition-id))
(fetch-all-content competition-id))