mirror of
https://codeberg.org/scip/kleingebaeck.git
synced 2025-12-17 12:31:03 +01:00
Compare commits
4 Commits
fix/check-
...
v0.3.5
| Author | SHA1 | Date | |
|---|---|---|---|
| 8cc5a9e3ed | |||
| d2bcd7b505 | |||
| c59c2e2931 | |||
| 2288806105 |
@@ -34,7 +34,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
VERSION string = "0.3.4"
|
VERSION string = "0.3.5"
|
||||||
Baseuri string = "https://www.kleinanzeigen.de"
|
Baseuri string = "https://www.kleinanzeigen.de"
|
||||||
Listuri string = "/s-bestandsliste.html"
|
Listuri string = "/s-bestandsliste.html"
|
||||||
Defaultdir string = "."
|
Defaultdir string = "."
|
||||||
|
|||||||
5
main.go
5
main.go
@@ -116,11 +116,6 @@ func Main(output io.Writer) int {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return Die(err)
|
return Die(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = Mkdir(outdir)
|
|
||||||
if err != nil {
|
|
||||||
return Die(err)
|
|
||||||
}
|
|
||||||
conf.Outdir = outdir
|
conf.Outdir = outdir
|
||||||
|
|
||||||
// used for all HTTP requests
|
// used for all HTTP requests
|
||||||
|
|||||||
7
mkrel.sh
7
mkrel.sh
@@ -22,7 +22,12 @@ freebsd/amd64
|
|||||||
linux/amd64
|
linux/amd64
|
||||||
netbsd/amd64
|
netbsd/amd64
|
||||||
openbsd/amd64
|
openbsd/amd64
|
||||||
windows/amd64"
|
windows/amd64
|
||||||
|
freebsd/arm64
|
||||||
|
linux/arm64
|
||||||
|
netbsd/arm64
|
||||||
|
openbsd/arm64
|
||||||
|
windows/arm64"
|
||||||
|
|
||||||
tool="$1"
|
tool="$1"
|
||||||
version="$2"
|
version="$2"
|
||||||
|
|||||||
15
scrape.go
15
scrape.go
@@ -126,21 +126,32 @@ func ScrapeAd(fetch *Fetcher, uri string) error {
|
|||||||
|
|
||||||
advertisement.CalculateExpire()
|
advertisement.CalculateExpire()
|
||||||
|
|
||||||
proceed := CheckAdVisited(fetch.Config, advertisement.Slug)
|
// prepare ad dir name
|
||||||
|
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
|
||||||
addir, err := WriteAd(fetch.Config, advertisement)
|
err = WriteAd(fetch.Config, advertisement, addir)
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
23
store.go
23
store.go
@@ -72,19 +72,13 @@ func AdDirName(conf *Config, advertisement *Ad) (string, error) {
|
|||||||
return buf.String(), nil
|
return buf.String(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func WriteAd(conf *Config, advertisement *Ad) (string, error) {
|
func WriteAd(conf *Config, advertisement *Ad, addir 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
|
||||||
@@ -92,7 +86,7 @@ func WriteAd(conf *Config, advertisement *Ad) (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()
|
||||||
|
|
||||||
@@ -104,17 +98,17 @@ func WriteAd(conf *Config, advertisement *Ad) (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 addir, nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func WriteImage(filename string, reader *bytes.Reader) error {
|
func WriteImage(filename string, reader *bytes.Reader) error {
|
||||||
@@ -176,9 +170,6 @@ func CheckAdVisited(conf *Config, adname string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// register
|
|
||||||
DirsVisited[adname] = 1
|
|
||||||
|
|
||||||
// overwrite
|
// overwrite
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
2
util.go
2
util.go
@@ -32,7 +32,7 @@ import (
|
|||||||
|
|
||||||
func Mkdir(dir string) error {
|
func Mkdir(dir string) error {
|
||||||
if _, err := os.Stat(dir); errors.Is(err, os.ErrNotExist) {
|
if _, err := os.Stat(dir); errors.Is(err, os.ErrNotExist) {
|
||||||
err := os.Mkdir(dir, os.ModePerm)
|
err := os.MkdirAll(dir, os.ModePerm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to create directory %s: %w", dir, err)
|
return fmt.Errorf("failed to create directory %s: %w", dir, err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user