Compare commits

..

2 Commits

6 changed files with 26 additions and 28 deletions

View File

@@ -34,7 +34,7 @@ import (
)
const (
VERSION string = "0.3.5"
VERSION string = "0.3.4"
Baseuri string = "https://www.kleinanzeigen.de"
Listuri string = "/s-bestandsliste.html"
Defaultdir string = "."

View File

@@ -116,6 +116,11 @@ func Main(output io.Writer) int {
if err != nil {
return Die(err)
}
err = Mkdir(outdir)
if err != nil {
return Die(err)
}
conf.Outdir = outdir
// used for all HTTP requests

View File

@@ -22,12 +22,7 @@ freebsd/amd64
linux/amd64
netbsd/amd64
openbsd/amd64
windows/amd64
freebsd/arm64
linux/arm64
netbsd/arm64
openbsd/arm64
windows/arm64"
windows/amd64"
tool="$1"
version="$2"

View File

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

View File

@@ -72,13 +72,19 @@ func AdDirName(conf *Config, advertisement *Ad) (string, error) {
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
dir := filepath.Join(conf.Outdir, addir)
err := Mkdir(dir)
err = Mkdir(dir)
if err != nil {
return err
return "", err
}
// write ad file
@@ -86,7 +92,7 @@ func WriteAd(conf *Config, advertisement *Ad, addir string) error {
listingfd, err := os.Create(listingfile)
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()
@@ -98,17 +104,17 @@ func WriteAd(conf *Config, advertisement *Ad, addir string) error {
tmpl, err := tpl.New("adlisting").Parse(conf.Template)
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)
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)
return nil
return addir, nil
}
func WriteImage(filename string, reader *bytes.Reader) error {
@@ -170,6 +176,9 @@ func CheckAdVisited(conf *Config, adname string) bool {
return false
}
// register
DirsVisited[adname] = 1
// overwrite
return true
}

View File

@@ -32,7 +32,7 @@ import (
func Mkdir(dir string) error {
if _, err := os.Stat(dir); errors.Is(err, os.ErrNotExist) {
err := os.MkdirAll(dir, os.ModePerm)
err := os.Mkdir(dir, os.ModePerm)
if err != nil {
return fmt.Errorf("failed to create directory %s: %w", dir, err)
}