mirror of
https://github.com/Second-Hand-Friends/kleinanzeigen-bot.git
synced 2026-03-12 02:31:45 +01:00
## ℹ️ Description Add a manual "extend" command to extend listings shortly before they expire. This keeps existing watchers/savers and does not count toward the current 100 ads/month quota. - Link to the related issue(s): Issue #664 - **Motivation**: Users need a way to extend ads before they expire without republishing (which consumes quota). ## 📋 Changes Summary ### Implementation - Add `extend` command case in `run()` - Implement `extend_ads()` to filter and process eligible ads - Implement `extend_ad()` for browser automation - Add German translations for all user-facing messages ### Testing - Tests cover: filtering logic, date parsing, browser automation, error handling, edge cases ### Features - Detects ads within the **8-day extension window** (kleinanzeigen.de policy) - Uses API `endDate` from `/m-meine-anzeigen-verwalten.json` for eligibility - Only extends active ads (`state == "active"`) - Handles confirmation dialog (close dialog / skip paid bump-up) - Updates `updated_on` in YAML after successful extension - Supports `--ads` parameter to extend specific ad IDs ### Usage ```bash kleinanzeigen-bot extend # Extend all eligible ads kleinanzeigen-bot extend --ads=1,2,3 # Extend specific ads ``` ### ⚙️ Type of Change - [x] ✨ New feature (adds new functionality without breaking existing usage) ## ✅ Checklist - [x] I have reviewed my changes to ensure they meet the project's standards. - [x] I have tested my changes and ensured that all tests pass (`pdm run test`). - [x] I have updated documentation where necessary (help text in English + German). By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added an "extend" command to find ads nearing expiry (default 8-day window) or target specific IDs, open a session, attempt extensions, and record per-ad outcomes. * **Documentation** * Updated CLI/help (bilingual) and README to document the extend command, options (--ads), default behavior, and expiry-window limitations. * **Tests** * Added comprehensive unit tests for eligibility rules, date parsing (including German format), edge cases, UI interaction flows, timing, and error handling. <sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub> <!-- end of auto-generated comment: release notes by coderabbit.ai -->
22 KiB
22 KiB