Compare commits

..

2 Commits

2 changed files with 18 additions and 20 deletions

View File

@@ -126,32 +126,21 @@ func ScrapeAd(fetch *Fetcher, uri string) error {
advertisement.CalculateExpire() advertisement.CalculateExpire()
// prepare ad dir name proceed := CheckAdVisited(fetch.Config, advertisement.Slug)
addir, err := AdDirName(fetch.Config, advertisement)
if err != nil {
return err
}
proceed := CheckAdVisited(fetch.Config, addir)
if !proceed { if !proceed {
return nil return nil
} }
// write listing // write listing
err = WriteAd(fetch.Config, advertisement, addir) addir, err := WriteAd(fetch.Config, advertisement)
if err != nil { if err != nil {
return err return err
} }
// tell the user
slog.Debug("extracted ad listing", "ad", advertisement) slog.Debug("extracted ad listing", "ad", advertisement)
// stats
fetch.Config.IncrAds() fetch.Config.IncrAds()
// register for later checks
DirsVisited[addir] = 1
return ScrapeImages(fetch, advertisement, addir) return ScrapeImages(fetch, advertisement, addir)
} }

View File

@@ -72,13 +72,19 @@ func AdDirName(conf *Config, advertisement *Ad) (string, error) {
return buf.String(), nil return buf.String(), nil
} }
func WriteAd(conf *Config, advertisement *Ad, addir string) error { func WriteAd(conf *Config, advertisement *Ad) (string, error) {
// prepare ad dir name
addir, err := AdDirName(conf, advertisement)
if err != nil {
return "", err
}
// prepare output dir // prepare output dir
dir := filepath.Join(conf.Outdir, addir) dir := filepath.Join(conf.Outdir, addir)
err := Mkdir(dir) err = Mkdir(dir)
if err != nil { if err != nil {
return err return "", err
} }
// write ad file // write ad file
@@ -86,7 +92,7 @@ func WriteAd(conf *Config, advertisement *Ad, addir string) error {
listingfd, err := os.Create(listingfile) listingfd, err := os.Create(listingfile)
if err != nil { if err != nil {
return fmt.Errorf("failed to create Adlisting.txt: %w", err) return "", fmt.Errorf("failed to create Adlisting.txt: %w", err)
} }
defer listingfd.Close() defer listingfd.Close()
@@ -98,17 +104,17 @@ func WriteAd(conf *Config, advertisement *Ad, addir string) error {
tmpl, err := tpl.New("adlisting").Parse(conf.Template) tmpl, err := tpl.New("adlisting").Parse(conf.Template)
if err != nil { if err != nil {
return fmt.Errorf("failed to parse adlisting template: %w", err) return "", fmt.Errorf("failed to parse adlisting template: %w", err)
} }
err = tmpl.Execute(listingfd, advertisement) err = tmpl.Execute(listingfd, advertisement)
if err != nil { if err != nil {
return fmt.Errorf("failed to execute adlisting template: %w", err) return "", fmt.Errorf("failed to execute adlisting template: %w", err)
} }
slog.Info("wrote ad listing", "listingfile", listingfile) slog.Info("wrote ad listing", "listingfile", listingfile)
return nil return addir, nil
} }
func WriteImage(filename string, reader *bytes.Reader) error { func WriteImage(filename string, reader *bytes.Reader) error {
@@ -170,6 +176,9 @@ func CheckAdVisited(conf *Config, adname string) bool {
return false return false
} }
// register
DirsVisited[adname] = 1
// overwrite // overwrite
return true return true
} }