{"id":24122209,"url":"https://github.com/tlinden/kleingebaeck","last_synced_at":"2025-10-07T18:49:26.684Z","repository":{"id":212529660,"uuid":"731715091","full_name":"TLINDEN/kleingebaeck","owner":"TLINDEN","description":"Kleingebäck - kleinanzeigen.de Backup","archived":false,"fork":false,"pushed_at":"2025-01-06T09:28:13.000Z","size":1360,"stargazers_count":8,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-06T10:37:28.941Z","etag":null,"topics":["ads","backup","classified-ads","command-line","golang","kleinanzeigen","personal-portfolio","portable"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TLINDEN.png","metadata":{"files":{"readme":"README-de.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-14T17:50:44.000Z","updated_at":"2024-12-13T10:23:49.000Z","dependencies_parsed_at":"2025-01-07T02:16:54.977Z","dependency_job_id":null,"html_url":"https://github.com/TLINDEN/kleingebaeck","commit_stats":null,"previous_names":["tlinden/kleingebaeck"],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLINDEN%2Fkleingebaeck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLINDEN%2Fkleingebaeck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLINDEN%2Fkleingebaeck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLINDEN%2Fkleingebaeck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TLINDEN","download_url":"https://codeload.github.com/TLINDEN/kleingebaeck/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233477156,"owners_count":18682148,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ads","backup","classified-ads","command-line","golang","kleinanzeigen","personal-portfolio","portable"],"created_at":"2025-01-11T11:39:00.327Z","updated_at":"2025-09-18T12:30:46.627Z","avatar_url":"https://github.com/TLINDEN.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Kleingebäck - kleinanzeigen.de Backup\n\n![Kleingebaeck Logo](https://github.com/TLINDEN/kleingebaeck/blob/main/.github/assets/kleingebaecklogo-small.png)\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/tlinden/kleingebaeck)](https://goreportcard.com/report/github.com/tlinden/kleingebaeck) \n[![Actions](https://github.com/tlinden/kleingebaeck/actions/workflows/ci.yaml/badge.svg)](https://github.com/tlinden/kleingebaeck/actions)\n[![Go Coverage](https://github.com/tlinden/kleingebaeck/wiki/coverage.svg)](https://raw.githack.com/wiki/tlinden/kleingebaeck/coverage.html)\n![GitHub License](https://img.shields.io/github/license/tlinden/kleingebaeck)\n[![GitHub release](https://img.shields.io/github/v/release/tlinden/kleingebaeck?color=%2300a719)](https://github.com/TLINDEN/kleingebaeck/releases/latest)\n[![English](https://github.com/TLINDEN/kleingebaeck/blob/main/.github/assets/english.png)](https://github.com/tlinden/kleingebaeck/blob/main/README.md)\n\nMit diesem Tool kann man seine Anzeigen bei https://kleinanzeigen.de sichern.\n\nEs kann alle Anzeigen eines Users (oder nur eine Ausgewählte)\ninklusive der Bilder herunterladen, die in einem Verzeichnis pro\nAnzeige gespeichert werden. In dem Verzeichnis wird eine Datei\n`Adlisting.txt` erstellt, in der sich die Inhalte der Anzeige wie\nTitel, Preis, Text etc befinden. Bilder werden natürlich auch heruntergeladen.\n\n## ACHTUNG - SICHERHEITS-UPDATE\n\nFertige vorcompilierte Programme älter als Version `v0.3.12` sind von\nSchwachstellen in der Behandlung von HTTP und Zertifikaten\nbetroffen. Falls Du eine ältere Kleingebäck-Version im Einsatz hast,\nbitte update auf Version `v0.3.12` oder höher. Bitte lies auch die [Release Notes für\nv0.3.12](https://github.com/TLINDEN/kleingebaeck/releases/tag/v0.3.12)\nfür mehr Details.\n\n## Screenshots\n\nDas ist die Hauptseite meines kleinanzeigen.de Accounts:\n\n![Index](https://github.com/TLINDEN/kleingebaeck/blob/main/.github/assets/kleinanzeigen-index.png)\n\nSichern ich meine Anzeigen:\n\n![Download](https://github.com/TLINDEN/kleingebaeck/blob/main/.github/assets/kleinanzeigen-download.png)\n\nBackupverzeichnis nach dem Download:\n\n![Download](https://github.com/TLINDEN/kleingebaeck/blob/main/.github/assets/kleinanzeigen-backup.png)\n\nVerzeichnis einer Anzeige:\n\n![Download](https://github.com/TLINDEN/kleingebaeck/blob/main/.github/assets/kleinanzeigen-ad.png)\n\n**Das gleiche unter Windows:**\n\nAnzeigen Sichern:\n\n![Download](https://github.com/TLINDEN/kleingebaeck/blob/main/.github/assets/cmd-windows.jpg)\n\nBackupverzeichnis nach dem Download\n\n![Download](https://github.com/TLINDEN/kleingebaeck/blob/main/.github/assets/liste-windows.jpg)\n\nUnd eine Anzeige:\n\n![Download](https://github.com/TLINDEN/kleingebaeck/blob/main/.github/assets/adlisting-windows.jpg)\n\n## Installation\n\nDas Tool hat keine weiteren Abhängigkeiten und erfordert auch keine\nAnmeldung oder ähnliches. Man kädt sich einfach die ausführbare Datei\nfür seine Plattform herunter und kann direkt loslegen.\n\n### Installation des vorcompilierten Programms\n\nAuf der Seite [des letzten Releases](https://github.com/TLINDEN/kleingebaeck/releases/latest) findet man das Program für sein Betriebssystem und die Plattform (z.b. Windows + Intel)\n \nEs gibt 2 Varianten:\n\n1. Direkt das fertige Program für seine Plattform+OS herunterladen,\n   z.B. `kleingebaeck-linux-amd64-0.0.5`, nach `kleingebaeck`\n   umbenennen und in ein Verzeichnis kopieren, das im `PATH` ist,\n   (z.B. nach `$HOME/bin` oder als root nach `/usr/local/bin`).\n\nUm sicher zu gehen, dass an dem Program nicht verändert wurde, kann\nman die Signatur vergleichen. Für jeden Download gibt es eine dazu\npassende Signatur, in unserem Beispiel wäre das\n`kleingebaeck-linux-amd64-0.0.5.sha256`.\n\nZum Verifizieren ausführen:\n\n```shell\ncat kleingebaeck-linux-amd64-0.0.5.sha25 \u0026\u0026 sha256sum kleingebaeck-linux-amd64-0.0.5\n```\nMan sollte zweimal den gleichen SHA256 Hash sehen.\n\n2. Man kann auch einen Tarball (tgz Dateiendung) herunterladen,\n   auspacken und mit GNU Make installieren:\n\n```shell\ntar xvfz kleingebaeck-linux-amd64-0.0.5.tar.gz\ncd kleingebaeck-linux-amd64-0.0.5\nsudo make install\n```\n\n### Installation aus dem Sourcecode\n\nMan muss eine funktionierende Go Buildumgebung in der Version 1.21\ninstalliert haben, um das Programm selber zu compilieren. GNU Make ist\nhilfreich, aber nicht unbedingt erforderlich.\n\nUm das Programm zu compilieren, muss man folgende Schritte ausführen:\n\n```shell\ngit clone https://github.com/TLINDEN/kleingebaeck.git\ncd kleingebaeck\ngo mod tidy\nmake # (oder make)\nsudo make install\n```\n\n### Docker image benutzen\n\nEin fertiges Dockerimage mit der aktuellen Programmversion ist immer\nverfügbar. Man kann damit z.B. das Tool testen, bevor man es dauerhaft\nbenutzen möchte.\n\nUm das Image herunterzuladen:\n```\ndocker pull ghcr.io/tlinden/kleingebaeck:latest\n```\n\nUm kleingebäck im Image auszuführen und Daten ins lokale Filesystem zu\nsichern, kann man so vorgehen:\n\n```shell\nmkdir anzeigen\ndocker run -u `id -u $USER` -v ./anzeigen:/backup ghcr.io/tlinden/kleingebaeck:latest -u XXX -v\nls -l anzeigen/ein-buch-mit-leeren-seiten\ntotal 792\ndrwxr-xr-x 2 scip root   4096 Jan 23 12:58 ./\ndrwxr-xr-x 3 scip scip   4096 Jan 23 12:58 ../\n-rw-r--r-- 1 scip root 131650 Jan 23 12:58 1.jpg\n-rw-r--r-- 1 scip root  81832 Jan 23 12:58 2.jpg\n-rw-r--r-- 1 scip root 134050 Jan 23 12:58 3.jpg\n-rw-r--r-- 1 scip root   1166 Jan 23 12:58 Adlisting.txt\n```\n\nHier wird der aktuelle User auf den User im Image gemappt und das\nlokale Verzeichnis `anzeigen` nach `/backup` innerhalb des Images\ngemountet.\n\nDie Optionen `-u XXX -v` sind kleingebäck Optionen. Ersetze `XXX`\ndurch Deine tatsächliche kleinanzeigen.de Userid.\n\nEine Liste verfügbarer Images findet man [hier](https://github.com/tlinden/kleingebaeck/pkgs/container/kleingebaeck/versions?filters%5Bversion_type%5D=tagged)\n\n## Kommandozeilen Optionen:\n\n```\nUsage: kleingebaeck [-dvVhmoc] [\u003cad-listing-url\u003e,...]\nOptions:\n-u --user    \u003cuid\u003e      Backup ads from user with uid \u003cuid\u003e.\n-d --debug              Enable debug output.\n-v --verbose            Enable verbose output.\n-o --outdir  \u003cdir\u003e      Set output dir (default: current directory)\n-l --limit   \u003cnum\u003e      Limit the ads to download to \u003cnum\u003e, default: load all.\n-c --config  \u003cfile\u003e     Use config file \u003cfile\u003e (default: ~/.kleingebaeck).\n   --ignoreerrors       Ignore HTTP errors, may lead to incomplete ad backup.\n-m --manual             Show manual.\n-h --help               Show usage.\n-V --version            Show program version.\n\nIf one  or more \u003cad-listing-url\u003e's  are specified, only  backup those,\notherwise backup all ads of the given user.\n```\n\n## Konfiguration\n\nMan    kann    anstelle     von    Kommandlineoptionen    auch    eine\nKonfigurationsdatei  verwenden.  Sie  befindet  sich standardmäßig  in\n`~/.kleingebaeck`  aber man  kann  mit dem  Parameter  `-c` auch  eine\nandere Datei angeben.\n\nDas Format (TOML) ist einfach:\n\n```\nuser = 1010101\nloglevel = verbose\noutdir = \"test\"\n```\n\nIm Source gibt es eine Beispieldatei `example.conf` mit Kommentaren.\n\n## Umgebungsvariablen\n\nMan kann darüber hinaus auch Umgebungsvariablen verwenden. Sie\nentsprechen den Konfigurationsoptionen, aber gross geschrieben mit dem\nPräfix `KLEINGEBAECK_`, z.B.\n\n```shell\n% KLEINGEBAECK_OUTDIR=/backup kleingebaeck -v\n```\n\n## Benutzung\n\nUm das Tool einsetzen zu können, muss man zunächst seine Userid bei\nkleinanzeigen.de herausfinden. Dazu ruft man am besten die Liste\nseiner Anzeigen auf, während man NICHT eingeloggt ist:\n\nhttps://www.kleinanzeigen.de/s-bestandsliste.html?userId=XXXXXX\n\nDer `XXXXX` Teil der URL ist die Userid.\n\nTrage diese Userid in der Konfigurationsdatei ein wie oben\nbeschrieben. Gib ausserdem das Ausgabeverzeichnis an. Dann einfach nur\n`kleingebaeck` ausführen.\n\nInnerhalb des Ausgabeverzeichnisses wird sich dann pro Anzeige ein\nUnterverzeichnis befinden. Pro Anzeige gibt es eine Datei\n`Adlisting.txt`, die etwa so aussieht:\n\n```default\nTitle: A book I sell\nPrice: 99 € VB\nId: 1919191919\nCategory: Sachbücher\nCondition: Sehr Gut\nCreated: 10.12.2023\n\nThis is the description text.\n\nPay with paypal.\n```\n\nSowie alle Bilder.\n\nDas Format kann man mit der Variable `template` in der Konfiguration\nändern. Die `example.conf` enthält ein Beispiel für das Standard Template.\n\n## Verhalten des Tools\n\nEs gibt einige Dinge über das Verhalten von kleingebäck, über die Du\nBescheid wissen solltest:\n\n- alle HTML Seiten und Bilder werden immer heruntergeladen\n- es wird ein (konfigurierbarer) Useragent verwendet\n- HTTP Cookies werden beachtet\n- bei Fehlern wird dreimal mit unterschiedlichem Abstand erneut\n  versucht\n- Bilder Downloads laufen parallelisiert mit leicht unterschiedlichen\n  zeitlichen Abständen ab\n- Gleich aussehende Bilder werden nicht überschrieben\n\nDer letzte Punkt muss genauer erläutert werden:\n\nWenn man bei Kleinanzeigen.de eine Anzeige einstellt und Bilder\npostet, werden diese dort in ihrer Grösse reduziert (durch Kompression\nund Verkleinerung der Bilder usw.). Diese reduzierten Bilder werden\ndann von kleingebäck heruntergeladen. Falls Du Deine original Bilder\nbehalten hast, kannst Du diese danach in das Backupverzeichnis\nkopieren. Bei einem erneuten kleingebäck-Lauf werden diese Bilder dann\nnicht überschrieben.\n\nWir verwenden dafür einen Algorythmus namens [distance\nhashing](https://github.com/corona10/goimagehash). Dieser Algorithmus\nprüft die Ähnlichkeit von Bildern. Diese können in ihrer Auflösung,\nKompression, Farbtiefe und vielem mehr manipuliert worden sein und\ntrotzdem als das \"gleiche Bild\" erkannt werden (wohlgemerkt nicht \"das\nselbe\": die Dateien sind durchaus unterschiedlich!). Bis zu einer\nDistance von 5 überschreiben wir keine Bilder, weil wir dann davon\nausgehen, dass das lokal Vorhandene das Original ist.\n\nBitte beachte aber, dass dies KEIN Cachingmechanismus ist: die Bilder\nwerden trotzdem immer alle heruntergeladen. Das muss so sein, da wir\nuns nicht die Dateinamen anschauen können, da kleinanzeigen.de diese\nnämlich zu Zahlen umbenennt. Und die Dateinamen können sich auch\nändern, wenn der User in der Anzeige die Bilder umarrangiert hat.\n\nDu kannst dieses Verhalten mit der Option **--force** ausschalten. Du\nkannst ausserdem mit der Option **--ignoreerrors** auch alle Fehler\nignorieren, die beim Bilderdownload auftreten könnten.\n\n## Documentation\n\nDie Dokumentation kann man\n[online](https://github.com/TLINDEN/kleingebaeck/blob/main/kleingebaeck.pod)\noder lokal lesen mit: `kleingebaeck --manual`. Hat man das Tool mit\ndem Tarball installiert, funktioniert auch `man kleingebaeck`.\n\n## Kleingebäck?\n\nDer Name kommt von \"kleinanzeigen backup\", verkürzt \"klein back\", das\nenglisch ausgesprochene \"back\" (deutsch bäck) führt dann zu \"Kleingebäck\".\n\n## Wo bekommt man Hilfe\n\nObwohl ich gerne von kleingebäck Benutzern in privaten Mails höre, ist\ndas doch der beste Weg, die Anfrage zu übersehen und zu vergessen.\n\nUm einen Fehler, ein unerwartetes Verhalten, eine Feature Request oder\neinen Patch zu übermitteln, eröffne daher bitte einen Issue unter:\nhttps://github.com/TLINDEN/kleingebaeck/issues. Danke!\n\nBitte gebe den fehlgeschlagenen Befehl an, rufe es auch mit Debugging\n`-d` auf.\n\n## Ähnliche Projekte\n\nIch konnte kein Projekt finden, das speziell dafür geeignet ist,\nAnzeigen bei kleinanzeigen.de zu sichern.\n\nAber es gibt ein Projekt, mit dem man ebenfalls Backups erstellen\nkann:  [kleinanzeigen-bot](https://github.com/Second-Hand-Friends/kleinanzeigen-bot/).\nAber Vorsicht: kleinanzeigen.de bekämpft Bots aktiv, mit diesem hier\ngibt es regelmäßige Probleme, z.B.: \n[issue](https://github.com/Second-Hand-Friends/kleinanzeigen-bot/issues/219).\nDas Hauptproblem ist, dass diese Art von Bot sich mit Deinem Account\naktiv einloggt und mit der Seite interagiert. Damit kann die Firma die\nAktivitäten recht einfach Deinem User zuordnen und diesen **sperren**!\nAlso sei bitte vorsichtig!\n\n**Kleingebäck** erfordert keinen Login, es verwendet lediglich die\nöffentlich verfügbare Webseite und ruft diese auf, wie ein normaler\nBrowser. Tatsächlich gibt es meiner Meinung nach keinen Unterschied zu\neinem Browserclient: beide laufen auf Anwenderseite auf Initiative\neines Benutzers. Und mit welchen Browser ich eine Webseite aufrufe,\nbleibt immer noch mir überlassen und muss mir nicht von irgendwem\nvorgeschrieben werden. Das schliesst die Verwendung von Kleingebäck\nmit ein.\n\nHinzu kommt, dass dieses Tool nicht dazu gedacht ist, rund um die Uhr\nzu laufen. Man ruft es ab und zu mal auf, wenn man halt neue Anzeigen\neingestellt hat, vielleicht einmal die Woche oder so. Man weiss ja\nselber, wann man was geändert hat. Man benötigt trotzdem den Zugriff\nmit dem Browser oder der mobilen App um Kleinanzeigen.de verwalten zu\nkönnen.\n\nMeiner Ansicht nach ist das Risiko also sehr minimal, es handelt sich\nmeiner Meinung nach auch nicht um eine Verletzung der AGBs dort. Aber\ndas ist nur meine persönliche Meinung, bitte beachtet das. Am Ende\nmüsst Ihr selbst einschätzen und beurteilen wie hoch Ihr das Risiko\nseht und ob Ohr es eingehen möchtet. Für eventuell auftretende\nKonsequenzen bin ich nicht verantwortlich. Siehe auch [GPL Lizenz](LICENSE).\n\nEs       gibt      noch       ein      weiteres       Tool      namens\n[kleinanzeigen-enhanded](https://kleinanzeigen-enhanced.de/).  Das ist\neine    kostenpflichtige     vollständige    Anzeigenverwaltung    für\nProfinutzer. Man  muss eine  monatliche Abogebühr bezahlen.   Das Tool\nist  als  Browsererweiterung  für  Google  Chrome  implementiert,  was\nerklärt,  warum sie  Anzeigen  erstellen, ändern  und löschen  können,\nobwohl es  gar keine  öffentliche API gibt.   Sieht nach  einer netten\nausgereiften Lösung aus. Mit Backups.\n \n## Copyright und License\n\nLizensiert unter der GNU GENERAL PUBLIC LICENSE Version 3.\n\n## Autor\n\nT.v.Dein \u003ctom AT vondein DOT org\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlinden%2Fkleingebaeck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftlinden%2Fkleingebaeck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlinden%2Fkleingebaeck/lists"}