제목이 바뀌었다..
ClojureScript로 파일을 다루는 방법을 못찾아서, 그냥 Clojure를 사용하는 방법으로 급선회 하였다.
Leiningen 설치
Clojure 생태계의 핵심 툴로 보인다.
$ sudo apt install leiningen
프로젝트 생성
간단하게 쓰고자 Lumo를 찾았는데.. 아쉽게 되었다.
$ lein new app bg-steal
프로그램 절차 설명
- 로그인 이미지가 있는 디렉토리의 파일을 읽는다
- 이미 스틸한 파일은 제외하고 가져온다
- 가로로 된 이미지만 가져온다. 배경화면으로 쓰기 위해.
- .jpg를 붙여서 배경화면을 모아놓은 디렉토리에 복사한다.
core.clj
-main
함수가 있는 파일이다.
clojure는 처음이라 좀 어색한데, 이후 차차 고치도록 하자.
(ns bg-steal.core
(:require [clojure.java.io :as io])
(:gen-class))
(def source-dir "/mnt/c/Users/rockmonkey/AppData/Local/Packages/Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy/LocalState/Assets/")
(def dest-dir "/mnt/c/Users/rockmonkey/Pictures/바탕화면/")
(defn in?
"true if coll contains elm"
[elm coll]
(some #(= elm %) coll))
(defn not-in?
"false if coll contains elm"
[elm coll]
(not (in? elm coll)))
(def stolen-files (map #(.getName %)
(filter #(.isFile %) (file-seq (io/file dest-dir)))))
(defn is-wide [f]
(#(> (.getWidth %) (.getHeight %)) (javax.imageio.ImageIO/read f)))
(defn copy-file [dest-path coll]
(doseq [y coll] (io/copy y (io/file (str dest-path (.getName y) ".jpg")))))
(defn -main [& args]
(copy-file dest-dir
(filter #(is-wide %)
(filter #(not-in? (str (.getName %) ".jpg") stolen-files)
(filter #(.isFile %)
(file-seq (io/file source-dir)))))))
실행은 최상위 디렉토리에서
$ lein run
마치며
나는 nodejs처럼 ClojureScript를 쓸 수 있을 줄 알았다. 몰랐었어 헐ㅠㅠ
프로그램이 좀 무거워졌는데, 다음엔 소스 경로를 properties로 빼내고 crontab에 등록을 시켜보자.