91 Commits

Author SHA1 Message Date
Bo Peng
236a2c719a Allow different browsers 2025-11-03 23:16:22 -06:00
Bo Peng
e3959a275c release ai-marketplace-monitor 0.9.10 2025-09-17 23:31:09 -05:00
Bo
9669af623c check search_city (#264) 2025-09-17 22:54:40 -05:00
dependabot[bot]
374ac926c8 Update ruff requirement from <0.13.0,>=0.9.2 to >=0.9.2,<0.14.0 (#261)
Updates the requirements on [ruff](https://github.com/astral-sh/ruff) to permit the latest version.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.9.2...0.13.0)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.13.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-17 08:59:18 -05:00
dependabot[bot]
e878314414 Update typer requirement from <0.17.0,>=0.15.1 to >=0.15.1,<0.18.0 (#262)
Updates the requirements on [typer](https://github.com/fastapi/typer) to permit the latest version.
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.15.1...0.17.4)

---
updated-dependencies:
- dependency-name: typer
  dependency-version: 0.17.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bo <BoPeng@users.noreply.github.com>
2025-09-17 08:59:03 -05:00
Bo
9bb9d0b944 Make keyboard monitoring optional (#259) (#260)
* Make keyboard monitoring optional (#259)

* release version 0.9.9
2025-09-17 08:58:24 -05:00
Bo Peng
5cd86e7068 automate release process 2025-08-09 21:23:31 -05:00
Bo Peng
732bb69db0 release version 0.9.8 2025-08-09 20:45:08 -05:00
Bo Peng
47a1013059 Update documentation for translation 2025-08-09 20:39:22 -05:00
Bo Peng
000e3f403c release version 0.9.7 2025-08-09 20:28:44 -05:00
adawalli
eb8763226f Fix premature keyword filtering in Facebook marketplace scraping (#248)
* Fix premature keyword filtering in Facebook marketplace scraping

Addresses a critical bug where listings were incorrectly rejected during
keyword filtering before their descriptions had been extracted from
Facebook's detail pages.

## Problem

The dual-check workflow was failing:
1. First check_listing() call: On search results with empty descriptions
2. Second check_listing() call: After get_listing_details() populates descriptions

Listings with keywords only in descriptions were being rejected prematurely,
causing false negatives for valid matches.

## Solution

- Add description_available parameter to check_listing() to control filtering
- Skip keyword filtering when descriptions haven't been fetched yet
- Maintain antikeyword filtering on available text (title-only or title+description)
- Add warning logs when description extraction fails

## Changes

- facebook.py: Add description_available parameter and conditional filtering logic
- monitor.py: Add defensive tuple unpacking for get_listing_details() return value
- Add comprehensive test suite for keyword filtering edge cases
- Fix minor formatting inconsistencies throughout codebase

## Testing

- New test suite demonstrates the bug and validates the fix
- Tests cover keyword filtering with/without descriptions
- Antikeyword filtering verified to work correctly in all cases
- All existing tests continue to pass

Fixes: #247

* Apply minor code improvements from PR feedback

- Remove redundant description_available=True parameter (uses default)
- Move self.logger check to outer if condition to avoid nested checks

These changes improve code clarity and efficiency.
2025-08-09 20:28:14 -05:00
Bo Peng
ce75502160 fix a link 2025-08-08 11:13:34 -05:00
Bo
6b691d310f Update to docs (#246)
* update installation instruction

* reneame configuration guide to configuration reference

* update docs
2025-08-08 11:04:42 -05:00
Bo
7c2be169fc Read the docs (#245)
* move docs to readthedocs
2025-08-08 10:34:47 -05:00
Bo
07642d8fdb Install instructions for linux (#233) 2025-08-08 09:25:18 -05:00
adawalli
2295bcc696 feat: add comprehensive Telegram notification support (#231)
* feat: add comprehensive Telegram notification support

Add complete Telegram bot integration for AI Marketplace Monitor notifications:

- Implement TelegramNotificationConfig with bot token and chat ID authentication
- Add MarkdownV2 message formatting with proper escaping for Telegram
- Implement intelligent message splitting for 4096 character limit
- Add global rate limiting (30 messages/second) with automatic retry logic
- Support for HTTP 429 handling and connection error recovery
- Add configuration validation and detailed error handling
- Include comprehensive unit tests with async operation mocking
- Add detailed setup documentation with troubleshooting guide
- Support environment variable configuration for security
- Compatible with individual users and group chats

Includes dependency: python-telegram-bot for reliable Telegram API integration

* refactor: remove redundant telegram auto-creation logic

- Remove duplicate telegram notification creation in config.py since notify_all already handles this
- Fix unnecessary else clause after early return in telegram.py
- Remove obsolete tests for auto-creation behavior
- Clean up unused imports

The notification system continues to work via the existing notify_all method which dynamically creates notification objects when user configs contain required fields.

* refactor: simplify message splitting using textwrap module

Replace manual word boundary splitting logic with Python's built-in
textwrap.wrap() function. This reduces ~30 lines of custom logic to
a single line while maintaining identical functionality.

- Use textwrap.wrap() with break_long_words=False
- Maintains word boundary splitting behavior
- All existing tests continue to pass
2025-08-04 19:40:55 -05:00
adawalli
941d11c1a5 Add OpenRouter user agent identification headers (#241)
Addresses GitHub issue #240 by adding proper application identification
when using OpenRouter API. This ensures the application appears as
"AI Marketplace Monitor" in OpenRouter's dashboard instead of "Unknown"
and provides a direct link to the GitHub repository.

- Added X-Title header with application name
- Added HTTP-Referer header with repository URL
- Follows OpenRouter's recommended identification practices
2025-08-03 20:59:46 -05:00
adawalli
c8a7d0453d Fix newline spacing around AI messages in notifications (#236)
Add proper newline spacing before "AI:" messages in all notification formats:
- Plain text: Add \n before "AI:"
- Markdown: Add \n before "**AI**:"
- HTML: Add <br> before "<b>AI</b>:"
- Email text: Add \n before "AI:"

This improves readability by separating AI comments from listing details
with appropriate whitespace in all notification channels.
2025-08-03 15:11:34 -05:00
adawalli
8ebe1602bc Fix CLI test failures by adding missing monitor_config type validation (#229)
- Add monitor_config: dict to key_types dictionary in test_config function
- Resolves KeyError: 'monitor_config' that was causing 9 test failures
- All CLI config tests now pass (65 passed, 1 skipped)
2025-07-31 21:40:43 -05:00
Bo Peng
3c5a4fb427 Merge branch 'uv' 2025-07-26 20:44:46 -05:00
Bo Peng
5510ca459b rotating vpn #157 2025-07-26 20:42:00 -05:00
Bo Peng
978e40e0bb Release of version 0.9.6 2025-07-26 20:40:45 -05:00
Bo
6b6408b02b Switch from poetry to uv (#203)
* Switch from poetry to uv
* Suppress an info message (close #204)
* Fix end of line for markdown files
2025-07-25 23:40:19 -05:00
Bo Peng
6a153d3fa6 revert rotating vpn patch 2025-07-25 23:26:42 -05:00
Bo Peng
92892ce6c4 fix tests 2025-07-25 22:51:02 -05:00
Bo Peng
44c415b90a fix tests 2025-07-25 22:37:18 -05:00
Bo Peng
76721ea459 Fix tests 2025-07-25 22:26:59 -05:00
Bo Peng
0360daa1d4 fix mypy 2025-07-25 22:19:57 -05:00
Bo Peng
d90a47ff03 Fix end of line for markdown files 2025-07-25 22:09:56 -05:00
Bo Peng
dc1597990e Suppress an info message (close #204) 2025-07-25 22:00:21 -05:00
Bo Peng
5e27eeaa41 Merge branch 'main' into uv 2025-07-25 21:57:43 -05:00
Bo Peng
66228b3952 rotating vpn #157 2025-07-25 21:56:35 -05:00
Bo Peng
80eb8bb86e Fix across-region search 2025-07-25 21:53:27 -05:00
Bo Peng
bc6970fbf5 add sv translation 2025-07-25 21:05:17 -05:00
dependabot[bot]
8103fa4ab2 Bump coverage from 7.9.1 to 7.9.2 (#205)
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.9.1 to 7.9.2.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.9.1...7.9.2)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.9.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bo <BoPeng@users.noreply.github.com>
2025-07-10 00:27:32 -05:00
dependabot[bot]
253ff97a45 Bump openai from 1.91.0 to 1.93.3 (#208)
Bumps [openai](https://github.com/openai/openai-python) from 1.91.0 to 1.93.3.
- [Release notes](https://github.com/openai/openai-python/releases)
- [Changelog](https://github.com/openai/openai-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/openai/openai-python/compare/v1.91.0...v1.93.3)

---
updated-dependencies:
- dependency-name: openai
  dependency-version: 1.93.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-10 00:27:03 -05:00
dependabot[bot]
1c8dda28ff Bump safety from 3.5.2 to 3.6.0 (#209)
Bumps [safety](https://github.com/pyupio/safety) from 3.5.2 to 3.6.0.
- [Release notes](https://github.com/pyupio/safety/releases)
- [Changelog](https://github.com/pyupio/safety/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pyupio/safety/compare/3.5.2...3.6.0)

---
updated-dependencies:
- dependency-name: safety
  dependency-version: 3.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-10 00:26:20 -05:00
Bo Peng
69f4eaa0fd add README for migration 2025-07-05 21:29:31 -07:00
Bo Peng
08d8071c58 remove more poetry stuf 2025-07-05 21:11:46 -07:00
Bo Peng
5a7fde85b7 More changes 2025-07-05 20:40:03 -07:00
Bo Peng
fde09092af Switch from poetry to uv 2025-07-05 20:31:56 -07:00
Brad
dcc3a97be5 fix removal of cookie prompt (#201)
Co-authored-by: Bo <BoPeng@users.noreply.github.com>
2025-07-05 15:20:38 -05:00
dependabot[bot]
e4662be88a Bump playwright from 1.52.0 to 1.53.0 (#194)
Bumps [playwright](https://github.com/microsoft/playwright-python) from 1.52.0 to 1.53.0.
- [Release notes](https://github.com/microsoft/playwright-python/releases)
- [Commits](https://github.com/microsoft/playwright-python/compare/v1.52.0...v1.53.0)

---
updated-dependencies:
- dependency-name: playwright
  dependency-version: 1.53.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-04 18:49:33 -05:00
dependabot[bot]
c5013c1f1f Bump pytest-cov from 6.1.1 to 6.2.1 (#192)
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 6.1.1 to 6.2.1.
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v6.1.1...v6.2.1)

---
updated-dependencies:
- dependency-name: pytest-cov
  dependency-version: 6.2.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-25 21:48:14 -05:00
dependabot[bot]
ba7fad4da2 Bump mypy from 1.15.0 to 1.16.1 (#188)
Bumps [mypy](https://github.com/python/mypy) from 1.15.0 to 1.16.1.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.15.0...v1.16.1)

---
updated-dependencies:
- dependency-name: mypy
  dependency-version: 1.16.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-25 21:47:57 -05:00
dependabot[bot]
e16d6059a6 Bump safety from 3.3.1 to 3.5.2 (#190)
Bumps [safety](https://github.com/pyupio/safety) from 3.3.1 to 3.5.2.
- [Release notes](https://github.com/pyupio/safety/releases)
- [Changelog](https://github.com/pyupio/safety/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pyupio/safety/compare/3.3.1...3.5.2)

---
updated-dependencies:
- dependency-name: safety
  dependency-version: 3.5.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-25 21:47:44 -05:00
dependabot[bot]
1304800a5e Bump coverage from 7.8.2 to 7.9.1 (#191)
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.8.2 to 7.9.1.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.8.2...7.9.1)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.9.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-25 21:47:31 -05:00
dependabot[bot]
0c6f22fd9c Bump openai from 1.88.0 to 1.91.0 (#193)
Bumps [openai](https://github.com/openai/openai-python) from 1.88.0 to 1.91.0.
- [Release notes](https://github.com/openai/openai-python/releases)
- [Changelog](https://github.com/openai/openai-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/openai/openai-python/compare/v1.88.0...v1.91.0)

---
updated-dependencies:
- dependency-name: openai
  dependency-version: 1.91.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-25 21:47:19 -05:00
dependabot[bot]
fd51ccf424 Bump currencyconverter from 0.18.6 to 0.18.7 (#179)
Bumps [currencyconverter](https://github.com/alexprengere/currencyconverter) from 0.18.6 to 0.18.7.
- [Commits](https://github.com/alexprengere/currencyconverter/compare/v0.18.6...v0.18.7)

---
updated-dependencies:
- dependency-name: currencyconverter
  dependency-version: 0.18.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-22 16:35:17 -05:00
dependabot[bot]
76155905f8 Bump requests from 2.32.3 to 2.32.4 (#180)
Bumps [requests](https://github.com/psf/requests) from 2.32.3 to 2.32.4.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-22 16:35:00 -05:00