- CSS 81.3%
- Python 10.8%
- Jinja 5.6%
- SCSS 1.5%
- Dockerfile 0.8%
|
Jan Willhaus
3e367bb804
All checks were successful
Docker Build / docker-build (push) Successful in 3m32s
|
||
|---|---|---|
| .forgejo/workflows | Migrate to uv, add docker build | |
| app | Restructure repo; make nice | |
| css | refine style | |
| static | refine style | |
| .editorconfig | Add index | |
| .gitignore | Initial commit | |
| Dockerfile | Migrate to uv, add docker build | |
| package-lock.json | Add proper HTML templating, add 404 page | |
| package.json | Add proper HTML templating, add 404 page | |
| pyproject.toml | Migrate to uv, add docker build | |
| README.md | Restructure repo; make nice | |
| uv.lock | Migrate to uv, add docker build | |
Petition.click 🪄
Petition.click ist ein Kurzlink-Dienst speziell für das Online-Forum des Petitionsausschusses des Deutschen Bundestages. Der Dienst macht es Menschen leichter, in der Offline-Welt für eine Petition zu werben und schnell und einfach auf die Online-Mitzeichnung verweisen zu können.
Dazu wird die Petitions Id-Nr. verwendet: an die Adresse des Dienstes angehängt – z.B. petition.click/180180 – ergibt sich ein einprägsamer Kurzlink, den man problemlos auch mündlich weitergeben kann. Ein solcher Link muss nicht explizit angelegt werden (wie man es von bit.ly oder anderen Kurzlink-Diensten kennt), sondern ist ab dem ersten Aufruf sofort verfügbar (wie das funktioniert – siehe Technische Details).
Technische Details
Die Webseite des Petitions-Forum vergibt zwar eine eindeutige URL für jede Petition, diese ist aber unhandlich und enthält zudem das Datum der Erstellung der Petition. Das muss ich also kennen, um zur Petition verlinken zu können:
https://epetitionen.bundestag.de/petitionen/_2025/_04/_09/Petition_180180.nc.html
(削除) Natürlich (削除ここまで) Leider stellt das Petitions-Forum selbst keine Kurzlinks oder gar eine API zu Verfügung, die diesen Rückschluss allein aus der Id-Nr. erlauben würde (obwohl das eigentlich naheliegend ist). Petition.click scraped daher die Suchfunktion des Petitions-Forums um von der Id-Nr. auf die Detailseite einer Petition aufzulösen.
Beim ersten Aufruf eines Petition.click-Links wird diese Auflösung im Hintegrund durchgeführt und die Verknüpfung in einem simplen Redis-Cache abgelegt, sodass jeder Link nur einmal aufgelöst werden muss. Jeder weitere Aufruf wird dann aus dem Cache bedient.
Side-Note: Das Petitions-Forum bedient sich einer rudimentären Anti-Scraping-Methodik mittels Proof-of-Work. Diese ist in app.session:populate_cookies implementiert.