read a random file that was created on this day and add it to the
message of the day
This commit is contained in:
parent
e9b785dcb2
commit
a03ca0b389
47
src/dhyan/connections/files.clj
Normal file
47
src/dhyan/connections/files.clj
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
(ns dhyan.connections.files
|
||||||
|
(:require [clojure.java.shell :refer [sh]]
|
||||||
|
[clojure.string :as string]))
|
||||||
|
|
||||||
|
(defn get-birth
|
||||||
|
"Using stat, get the birth of the full file path passed"
|
||||||
|
[file]
|
||||||
|
(->> file
|
||||||
|
(sh "stat" "%w")
|
||||||
|
:out
|
||||||
|
(string/split-lines)
|
||||||
|
(last)
|
||||||
|
(re-find #"\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])")
|
||||||
|
(first)))
|
||||||
|
|
||||||
|
(defn get-files
|
||||||
|
"Using find, Get a list of all the files in the folder passed"
|
||||||
|
[folder]
|
||||||
|
(->> (sh "find" folder "-maxdepth" "1" "-type" "f")
|
||||||
|
:out
|
||||||
|
(string/split-lines)))
|
||||||
|
|
||||||
|
(def folder "/home/anish/kitaab/vimwiki")
|
||||||
|
|
||||||
|
; Alternative:
|
||||||
|
; we could search through the git log to get the initial commit, but that only goes back 2 years
|
||||||
|
(defn on-this-day
|
||||||
|
"Find files also created on the current day/month
|
||||||
|
Expects filenames to be in format *YYMMDD* based on creation"
|
||||||
|
[]
|
||||||
|
(let [month (-> (sh "date" "+%m")
|
||||||
|
:out
|
||||||
|
(string/trim-newline))
|
||||||
|
day (-> (sh "date" "+%d")
|
||||||
|
:out
|
||||||
|
(string/trim-newline))
|
||||||
|
regex (re-pattern (str ".*\\d{2}" month day ".*"))]
|
||||||
|
(->> (get-files folder)
|
||||||
|
(filter #(some? (re-matches regex %))))))
|
||||||
|
|
||||||
|
(defn slurp-if-file
|
||||||
|
"If there was a file that was created on this day read a random one and return the text"
|
||||||
|
[]
|
||||||
|
(let [files (on-this-day)]
|
||||||
|
(if (> (count files) 0)
|
||||||
|
(slurp (rand-nth files))
|
||||||
|
"No file created on this day, a great day to journal!")))
|
|
@ -1,6 +1,7 @@
|
||||||
(ns dhyan.main
|
(ns dhyan.main
|
||||||
(:require [dhyan.connections.shaarli :as shaarli]
|
(:require [dhyan.connections.shaarli :as shaarli]
|
||||||
[dhyan.connections.wallabag :as wallabag]
|
[dhyan.connections.wallabag :as wallabag]
|
||||||
|
[dhyan.connections.files :as files]
|
||||||
[clojure.string :as string]
|
[clojure.string :as string]
|
||||||
[dhyan.connections.matrix :as matrix]))
|
[dhyan.connections.matrix :as matrix]))
|
||||||
|
|
||||||
|
@ -15,16 +16,16 @@
|
||||||
rand-nth)
|
rand-nth)
|
||||||
shaarli-message (str "Album of the day is: " (get album-of-the-day :title)
|
shaarli-message (str "Album of the day is: " (get album-of-the-day :title)
|
||||||
"\n available at: " (get album-of-the-day :url))
|
"\n available at: " (get album-of-the-day :url))
|
||||||
wallabag-data (wallabag/get-archived-annotated-entries)
|
wallabag-entry-of-the-day (rand-nth (wallabag/get-archived-annotated-entries))
|
||||||
wallabag-entry-of-the-day (rand-nth wallabag-data)
|
|
||||||
wallabag-annotation-of-the-day (rand-nth (get wallabag-entry-of-the-day :annotations))
|
wallabag-annotation-of-the-day (rand-nth (get wallabag-entry-of-the-day :annotations))
|
||||||
wallabag-message (str "Annotation of the day: " wallabag-annotation-of-the-day
|
wallabag-message (str "Annotation of the day: " wallabag-annotation-of-the-day
|
||||||
"\n from the article: " (get wallabag-entry-of-the-day :title)
|
"\n from the article: " (get wallabag-entry-of-the-day :title)
|
||||||
"\n available at: " (get wallabag-entry-of-the-day :url)
|
"\n available at: " (get wallabag-entry-of-the-day :url)
|
||||||
"\n tagged as: " (string/join ", " (get wallabag-entry-of-the-day :tags)))
|
"\n tagged as: " (string/join ", " (get wallabag-entry-of-the-day :tags)))
|
||||||
message (string/join "\n\n" [shaarli-message wallabag-message])
|
on-this-day-file (files/slurp-if-file)
|
||||||
|
message (string/join "\n\n" [shaarli-message wallabag-message on-this-day-file])]
|
||||||
;file-data (sh "ls" (System/getenv "folder"))
|
;file-data (sh "ls" (System/getenv "folder"))
|
||||||
; remove anything in () [] {}
|
; remove anything in () [] {}
|
||||||
;filtered-file-data (filterv #(string/replace % #"(.*)" "") file-data)
|
;filtered-file-data (filterv #(string/replace % #"(.*)" "") file-data)
|
||||||
]
|
|
||||||
(matrix/post-message message)))
|
(matrix/post-message message)))
|
||||||
|
|
Loading…
Reference in a new issue