From fa6008d8546a5e307eb33a2b1b1190b93bc907ed Mon Sep 17 00:00:00 2001 From: Carl Pearson Date: Mon, 30 Dec 2024 06:03:25 -0700 Subject: [PATCH] Add CLI flags --- README.md | 12 +++++++++++- main.go | 23 +++++++++++++++-------- reddit/reddit.go | 6 +++--- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 13c02a6..f1f6ff7 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,15 @@ Download images from reddit. ```bash go mod tidy -go run main.go +go run main.go pics oldschoolcool thewaywewere MilitaryPorn EarthPorn +``` + +```bash +docker run --restart unless-stopped \ + -v ${PWD}/subreddits:/data/subreddits \ + ghcr.io/cwpearson/reimager --every 1800 --out-dir /data/subreddits \ + pics \ + EarthPorn \ + oldschoolcool \ + thewaywewere ``` \ No newline at end of file diff --git a/main.go b/main.go index e130060..f682dcb 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,10 @@ package main import ( + "flag" + "fmt" "log" + "os" "time" "github.com/cwpearson/reddit-images/rate_limit" @@ -10,12 +13,16 @@ import ( func main() { - subreddits := []string{ - "pics", - "oldschoolcool", - "thewaywewere", - "MilitaryPorn", - "EarthPorn", + // Define and parse flags + every := flag.Int64("every", 60*30, "Optional: Run every N seconds") + outDir := flag.String("out-dir", "subreddits", "Optional: Output directory path") + flag.Parse() + + subreddits := flag.Args() + if len(subreddits) == 0 { + fmt.Fprintf(os.Stderr, "Error: At least one string argument is required\n\n") + fmt.Fprintf(os.Stderr, "Usage: %s [--every N] [--out-dir path] string1 [string2 ...]\n", os.Args[0]) + os.Exit(1) } rl := rate_limit.NewRateLimit() @@ -23,10 +30,10 @@ func main() { for { for _, subreddit := range subreddits { r := reddit.NewReddit(rl, subreddit) - r.Get() + r.Get(*outDir) } - when := time.Now().Add(time.Minute * time.Duration(30)) + when := time.Now().Add(time.Second * time.Duration(*every)) log.Println("sleep until", when) time.Sleep(time.Until(when)) } diff --git a/reddit/reddit.go b/reddit/reddit.go index 02f6f05..204cb63 100644 --- a/reddit/reddit.go +++ b/reddit/reddit.go @@ -117,11 +117,11 @@ func getImage(rl *rate_limit.RateLimit, url, outDir, stem string) error { return os.WriteFile(outPath, contents, 0644) } -func (r *Reddit) Get() { +func (r *Reddit) Get(outDir string) { var children []ChildData var err error - outDir := filepath.Join("subreddits", r.subreddit) + outDir = filepath.Join(outDir, r.subreddit) err = os.MkdirAll(outDir, 0755) if err != nil && !os.IsExist(err) { log.Println("ERROR: couldn't create out directory", outDir) @@ -173,7 +173,7 @@ func (r *Reddit) Get() { if len(parts) == 2 { imgUrl := fmt.Sprintf("https://i.redd.it/%s.%s", meta.Id, parts[1]) - stem := fmt.Sprintf("%d_%s_%d_%s", int64(child.Created), shortTitle, mi, meta.Id) + stem := fmt.Sprintf("%d_%s_%s", int64(child.Created), shortTitle, meta.Id) if _, ok := existing[stem]; ok { log.Println(stem, "already downloaded")