Giter Club home page Giter Club logo

hyacinth's People

Contributors

renovate-bot avatar renovate[bot] avatar stephanlensky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

hyacinth's Issues

Creating a Craigslist client should not make any network requests

This is a limitation of the python-craigslist library we are currently using. In order to validate the parameters used for instantiating a client, a variety of requests are made to Craigslist. This likely contributes to getting IP banned much faster.

The library should be patched to remove this functionality. The fork used in this project is here.

filter add error- application did not respond

When trying to add any filters, the filter never gets created and gets the error "The application did not respond".

/filter add title rule_type and rule test 
/filter add body rule_type and rule test

The search is running and is pulling in facebook marketplace items in the log.

Question about rate limiting

Hey, apologies if this area is not where this type of question belongs, i don't use github but i've been searching for this type of software and came across this. I have some questions:

  1. When does rate limiting typically occur from your testing? Could you give an estimate like 30 searches every 10 minutes
  2. Does the program find new listings outside your local area? If so would it be possible to only search for listings with shipping enabled?

Thanks

Marketplace future exceptions

Opening this issue to track marketplace future exception error.

Heres the output of running the new get-marketplace-page-sample test!

$ just get-marketplace-page-sample
/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/pyppeteer/us_keyboard_layout.py:73: SyntaxWarning: invalid escape sequence '\('
  'Digit9': {'keyCode': 57, 'code': 'Digit9', 'shiftKey': '\(', 'key': '9'},
2023-12-05 18:45:30 [14] [DEBUG] plugins.marketplace.client Loading marketplace search results
2023-12-05 18:45:30 [14] [DEBUG] hyacinth.util.scraping Navigating to page https://www.facebook.com/marketplace/boston/motorcycles/?sortBy=creation_time_descend&exact=false
2023-12-05 18:45:35 [14] [DEBUG] plugins.marketplace.client Waiting for marketplace search results to render
2023-12-05 18:45:35 [14] [DEBUG] plugins.marketplace.client Marketplace search results rendered
Wrote tests/resources/marketplace-search-results-sample.html successfully
2023-12-05 18:45:36 [14] [DEBUG] hyacinth.util.scraping Navigating to page https://www.facebook.com/marketplace/item/268741632849388/
Future exception was never retrieved
future: <Future finished exception=NetworkError('Protocol error (Runtime.releaseObject): Cannot find context with specified id')>
pyppeteer.errors.NetworkError: Protocol error (Runtime.releaseObject): Cannot find context with specified id
Wrote tests/resources/marketplace-result-details-sample.html successfully

Certainly looks like something is not working properly :c

The marketplace setup is also slightly confusing, did it pick boston at random? I live in NH

FB Marketplace plugin fails to search

Service times out while searching FB Marketplace. In particular, the program times out when executing this line in the FB Marketplace plugin:

await page.waitForFunction(
    """document.querySelector("div[aria-label='Collection of Marketplace items']") !== null""",
)

This is presumably because the Browserless instance is not authenticated, so it sees the login page instead of the search results. Therefore, no HTML element with the selector aria-label='Collection of Marketplace items' ever shows up.

I understand that you might not want to support FB authentication directly, but it might be good to handle this error explicitly.

Full logs

hyacinth-service-1      | 2023-08-09 12:58:56 [6] [DEBUG] hyacinth.monitor Polling search SearchSpec(id=1, plugin_path=plugins.marketplace.plugin:MarketplacePlugin, search_params=location='melbourne' category='lamps') since 2023-08-09 06:58:56.056317+00:00
hyacinth-browserless-1  | 2023-08-09T12:58:56.063Z browserless:job HQZIV3LD2UUFM8YH33Q3RO8J7L2B5CR0: /?stealth&blockAds=true: Inbound WebSocket request.
hyacinth-browserless-1  | 2023-08-09T12:58:56.065Z browserless:hardware Checking overload status: CPU 1% Memory 10%
hyacinth-browserless-1  | 2023-08-09T12:58:56.067Z browserless:job HQZIV3LD2UUFM8YH33Q3RO8J7L2B5CR0: Adding new job to queue.
hyacinth-browserless-1  | 2023-08-09T12:58:56.067Z browserless:server Starting new job
hyacinth-browserless-1  | 2023-08-09T12:58:56.067Z browserless:system Generating fresh chrome browser
hyacinth-browserless-1  | 2023-08-09T12:58:56.067Z browserless:job HQZIV3LD2UUFM8YH33Q3RO8J7L2B5CR0: Getting browser.
hyacinth-browserless-1  | 2023-08-09T12:58:56.069Z browserless:chrome-helper Launching Chrome with args: {
hyacinth-browserless-1  |   "args": [
hyacinth-browserless-1  |     "--no-sandbox",
hyacinth-browserless-1  |     "--enable-logging",
hyacinth-browserless-1  |     "--v1=1",
hyacinth-browserless-1  |     "--disable-dev-shm-usage",
hyacinth-browserless-1  |     "--no-first-run",
hyacinth-browserless-1  |     "--remote-debugging-port=46267",
hyacinth-browserless-1  |     "--user-data-dir=/tmp/browserless-data-dir-z8XiRS"
hyacinth-browserless-1  |   ],
hyacinth-browserless-1  |   "blockAds": true,
hyacinth-browserless-1  |   "dumpio": false,
hyacinth-browserless-1  |   "headless": false,
hyacinth-browserless-1  |   "stealth": true,
hyacinth-browserless-1  |   "ignoreDefaultArgs": false,
hyacinth-browserless-1  |   "ignoreHTTPSErrors": false,
hyacinth-browserless-1  |   "pauseOnConnect": false,
hyacinth-browserless-1  |   "playwright": false,
hyacinth-browserless-1  |   "userDataDir": "/tmp/browserless-data-dir-z8XiRS",
hyacinth-browserless-1  |   "meta": {
hyacinth-browserless-1  |     "protocol": null,
hyacinth-browserless-1  |     "slashes": null,
hyacinth-browserless-1  |     "auth": null,
hyacinth-browserless-1  |     "host": null,
hyacinth-browserless-1  |     "port": null,
hyacinth-browserless-1  |     "hostname": null,
hyacinth-browserless-1  |     "hash": null,
hyacinth-browserless-1  |     "search": "?stealth&blockAds=true",
hyacinth-browserless-1  |     "query": {
hyacinth-browserless-1  |       "stealth": "",
hyacinth-browserless-1  |       "blockAds": "true"
hyacinth-browserless-1  |     },
hyacinth-browserless-1  |     "pathname": "/",
hyacinth-browserless-1  |     "path": "/?stealth&blockAds=true",
hyacinth-browserless-1  |     "href": "/?stealth&blockAds=true"
hyacinth-browserless-1  |   },
hyacinth-browserless-1  |   "executablePath": "/usr/bin/google-chrome",
hyacinth-browserless-1  |   "handleSIGINT": false,
hyacinth-browserless-1  |   "handleSIGTERM": false,
hyacinth-browserless-1  |   "handleSIGHUP": false
hyacinth-browserless-1  | }
hyacinth-browserless-1  | 2023-08-09T12:58:56.491Z browserless:chrome-helper Chrome PID: 21497
hyacinth-browserless-1  | 2023-08-09T12:58:56.491Z browserless:chrome-helper Finding prior pages
hyacinth-browserless-1  | 2023-08-09T12:58:56.699Z browserless:chrome-helper Found 1 pages
hyacinth-browserless-1  | 2023-08-09T12:58:56.699Z browserless:chrome-helper Setting up page Unknown
hyacinth-browserless-1  | 2023-08-09T12:58:56.699Z browserless:chrome-helper Injecting download dir "/usr/src/app/workspace"
hyacinth-browserless-1  | 2023-08-09T12:58:56.699Z browserless:system Chrome launched 632ms
hyacinth-browserless-1  | 2023-08-09T12:58:56.699Z browserless:system Got chrome instance
hyacinth-browserless-1  | 2023-08-09T12:58:56.700Z browserless:job HQZIV3LD2UUFM8YH33Q3RO8J7L2B5CR0: Starting session.
hyacinth-browserless-1  | 2023-08-09T12:58:56.700Z browserless:job HQZIV3LD2UUFM8YH33Q3RO8J7L2B5CR0: Proxying request to /devtools/browser route: ws://127.0.0.1:46267/devtools/browser/e9450f8a-9be0-4d14-9a95-7f39b9604050.
hyacinth-browserless-1  | 2023-08-09T12:58:56.701Z browserless:chrome-helper Setting up file:// protocol request rejection
hyacinth-browserless-1  | 2023-08-09T12:58:56.701Z browserless:chrome-helper Setting up page for ad-blocking
hyacinth-browserless-1  | 2023-08-09T12:58:56.758Z browserless:chrome-helper Setting up page Unknown
hyacinth-browserless-1  | 2023-08-09T12:58:56.758Z browserless:chrome-helper Injecting download dir "/usr/src/app/workspace"
hyacinth-browserless-1  | 2023-08-09T12:58:56.760Z browserless:chrome-helper Setting up file:// protocol request rejection
hyacinth-browserless-1  | 2023-08-09T12:58:56.760Z browserless:chrome-helper Setting up page for ad-blocking
hyacinth-service-1      | 2023-08-09 12:58:56 [6] [DEBUG] plugins.marketplace.client Loading marketplace search results
hyacinth-service-1      | 2023-08-09 12:58:56 [6] [DEBUG] hyacinth.util.scraping Loading page https://www.facebook.com/marketplace/melbourne/lamps/?sortBy=creation_time_descend&exact=false
hyacinth-service-1      | 2023-08-09 12:58:57 [6] [DEBUG] plugins.marketplace.client Waiting for marketplace search results to render
hyacinth-service-1      | Job "MarketplaceMonitor.poll_search (trigger: interval[0:10:00], next run at: 2023-08-09 13:08:56 UTC)" raised an exception
hyacinth-service-1      | Traceback (most recent call last):
hyacinth-service-1      |   File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.11/lib/python3.11/site-packages/apscheduler/executors/base_py3.py", line 30, in run_coroutine_job
hyacinth-service-1      |     retval = await job.func(*job.args, **job.kwargs)
hyacinth-service-1      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hyacinth-service-1      |   File "/app/hyacinth/monitor.py", line 81, in poll_search
hyacinth-service-1      |     listings: list[BaseListing] = await search_spec.plugin.get_listings(
hyacinth-service-1      |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hyacinth-service-1      |   File "/app/plugins/marketplace/plugin.py", line 38, in get_listings
hyacinth-service-1      |     return await get_listings(search_params, after_time, limit)
hyacinth-service-1      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hyacinth-service-1      |   File "/app/plugins/marketplace/client.py", line 25, in get_listings
hyacinth-service-1      |     async for listing in search:
hyacinth-service-1      |   File "/app/plugins/marketplace/client.py", line 50, in _search
hyacinth-service-1      |     await page.waitForFunction(
hyacinth-service-1      |   File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.11/lib/python3.11/site-packages/pyppeteer/frame_manager.py", line 855, in __await__
hyacinth-service-1      |     raise result
hyacinth-service-1      | pyppeteer.errors.TimeoutError: Waiting for function failed: timeout 30000ms exceeds.

Dependency Dashboard

This issue provides visibility into Renovate updates and their statuses. Learn more

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

docker-compose
docker-compose.yml
  • postgres undefined
  • redis 7.0.0
  • sosedoff/pgweb undefined
poetry
pyproject.toml
  • requests ^2.27.1
  • boolean.py ^3.8
  • discord.py
  • python-craigslist
  • geopy ^2.2.0
  • python-dateutil ^2.8.2
  • playwright ^1.20.1
  • pydantic ^1.9.0
  • SQLAlchemy ^1.4.35
  • wrapt ^1.14.0
  • psycopg2 ^2.9.3
  • celery ^5.2.6
  • redis ^4.2.2
  • APScheduler ^3.9.1
  • geopandas ^0.10.2
  • Rtree ^1.0.0
  • scipy ^1.8.0
  • pytest ^7.1.1
  • pytest-mock ^3.7.0
  • pytest-asyncio ^0.18.3
  • black ^22.3.0
  • isort ^5.10.1
  • mypy ^0.950
  • pylint ^2.13.3
  • docformatter ^1.4
  • types-requests ^2.27.15
  • SQLAlchemy ^1.4.35
  • celery-types ^0.12.0

  • Check this box to trigger a request for Renovate to run again on this repository

Craigslist error

Looks like there might be something wrong with the craigslist portion? I think i configured everything correctly but it throws an error and has not yet posted anything.

Let me know what other information might be helpful!

...
2023-11-28 14:18:56 [9] [INFO] hyacinth.monitor Scheduling job for new search! SearchSpec(id=2, plugin_path=plugins.craigslist.plugin:CraigslistPlugin, search_params=site='nh' nearby_areas=None category='mca')
2023-11-28 14:18:56 [9] [DEBUG] hyacinth.monitor Polling search SearchSpec(id=2, plugin_path=plugins.craigslist.plugin:CraigslistPlugin, search_params=site='nh' nearby_areas=None category='mca') since 2023-11-28 13:18:56.526773+00:00
2023-11-28 14:18:56 [9] [DEBUG] hyacinth.util.scraping Getting page content for https://nh.craigslist.org/search/mca#search=1~gallery~0~0
2023-11-28 14:19:03 [9] [ERROR] hyacinth.monitor Error polling search SearchSpec(id=2, plugin_path=plugins.craigslist.plugin:CraigslistPlugin, search_params=site='nh' nearby_areas=None category='mca')
Traceback (most recent call last):
  File "/app/plugins/craigslist/client.py", line 100, in _parse_search_results
    has_next_page = num_results[1] != num_results[2]
                    ~~~~~~~~~~~^^^
IndexError: list index out of range

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/hyacinth/monitor.py", line 95, in __safe_poll_search
    listings = await search_spec.plugin.get_listings(search_spec.search_params, after_time)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/plugins/craigslist/plugin.py", line 38, in get_listings
    return await get_listings(search_params, after_time, limit)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/plugins/craigslist/client.py", line 32, in get_listings
    async for listing in search:
  File "/app/plugins/craigslist/client.py", line 59, in _search
    has_next_page, parsed_search_results = _parse_search_results(search_results_content)
                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/plugins/craigslist/client.py", line 104, in _parse_search_results
    raise ParseError("Error parsing search results", content) from e
hyacinth.exceptions.ParseError: Error parsing search results
2023-11-28 14:19:03 [9] [INFO] hyacinth.util.crash_report Saving error report to logs/poll_failure_2023-11-28T14:19:03.011641.txt
2023-11-28 14:19:03 [9] [DEBUG] hyacinth.monitor Found 0 since 2023-11-28 13:18:56.526773+00:00 for search_spec=SearchSpec(id=2, plugin_path=plugins.craigslist.plugin:CraigslistPlugin, search_params=site='nh' nearby_areas=None category='mca')
...

Stagger poll jobs on startup

If there are a bunch of searches when the application starts, they will all be queued at the same time and execute very close to each other.

We would like to stagger the poll jobs so that they are evenly spread out over the poll interval for each source. This minimizes the peak request frequency to each source and increases the number of searches we can have running before getting IP banned.

Password Failed Error

Hello, I can't seem to figure this out properly. I have gotten a new error. You can see this below.

 sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL:  password authentication failed for user "postgres"
service-1  |
service-1  | (Background on this error at: https://sqlalche.me/e/20/e3q8)
service-1  | error: Recipe `run` failed on line 37 with exit code 1

Geotagging error

Traceback (most recent call last):
File "/app/hyacinth/monitor.py", line 95, in __safe_poll_search
listings = await search_spec.plugin.get_listings(search_spec.search_params, after_time)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/plugins/marketplace/plugin.py", line 38, in get_listings
return await get_listings(search_params, after_time, limit)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/plugins/marketplace/client.py", line 27, in get_listings
async for listing in search:
File "/app/plugins/marketplace/client.py", line 78, in _search
await _enrich_listing(listing)
File "/app/plugins/marketplace/client.py", line 94, in _enrich_listing
location = reverse_geotag((listing.latitude, listing.longitude))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/hyacinth/util/geo.py", line 41, in reverse_geotag
return _reverse_geotag_local(geotag)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/hyacinth/util/geo.py", line 151, in _reverse_geotag_local
geolocator = get_local_geolocator()
^^^^^^^^^^^^^^^^^^^^^^
File "/app/hyacinth/util/geo.py", line 147, in get_local_geolocator
return LocalReverseGeocoder()
^^^^^^^^^^^^^^^^^^^^^^
File "/app/hyacinth/util/geo.py", line 82, in init
self.ensure_geospatial_datasets_downloaded()
File "/app/hyacinth/util/geo.py", line 114, in ensure_geospatial_datasets_downloaded
raise FileNotFoundError(
FileNotFoundError: Could not find local geospatial data. Please download gadm36_USA.gpkg and cities1000.txt to use local geocoding.

Show images in notifications

Since it seems Discord is not able to load the images from Craigslist, we need to mirror them somewhere before sending the notification. Perhaps a cloud storage solution?

Docker image build fails due to missing GDAL dependency

Hi there!

Great work on this project so far.

I cloned your repo onto my VM running Ubuntu 18.04 and tried to build the Docker images using docker-compose build, which resulted in an error.

The issue was traced back to the package fiona, which is dependent on GDAL. This dependency was not being satisfied in the Docker image.

I solved the issue by adding the following line to the service.dockerfile:

RUN apt-get update && apt-get install -y libgdal-dev

This line was added just before the FROM base as dev-setup directive.

Full error logs

[+] Building 80.3s (23/25)                                                                                                                     
 => [devbox internal] load build definition from service.dockerfile                                                                       0.0s
 => => transferring dockerfile: 746B                                                                                                      0.0s
 => [devbox internal] load .dockerignore                                                                                                  0.0s
 => => transferring context: 2B                                                                                                           0.0s
 => [test internal] load .dockerignore                                                                                                    0.0s
 => => transferring context: 2B                                                                                                           0.0s
 => [test internal] load build definition from service.dockerfile                                                                         0.0s
 => => transferring dockerfile: 746B                                                                                                      0.0s
 => [service internal] load .dockerignore                                                                                                 0.0s
 => => transferring context: 2B                                                                                                           0.0s
 => [service internal] load build definition from service.dockerfile                                                                      0.0s
 => => transferring dockerfile: 746B                                                                                                      0.0s
 => [service internal] load metadata for docker.io/library/python:3.11.4-bullseye                                                         3.0s
 => [devbox base 1/2] FROM docker.io/library/python:3.11.4-bullseye@sha256:eb679a64d678b96ae0d8fabe65c3c0c567117b4d10cac1d53ade7392b583  27.2s
 => => resolve docker.io/library/python:3.11.4-bullseye@sha256:eb679a64d678b96ae0d8fabe65c3c0c567117b4d10cac1d53ade7392b5834b1b           0.0s
 => => sha256:1ea2818537ef13d96ac02873f5eaa03b21b383126d6a563c045dbfc8cba29ad3 7.54kB / 7.54kB                                            0.0s
 => => sha256:385ee361272e1c36fe7d96fe8ab6b0f30cf33bfb9bbe29bfc2d33f51bd771993 54.68MB / 54.68MB                                          1.1s
 => => sha256:eb679a64d678b96ae0d8fabe65c3c0c567117b4d10cac1d53ade7392b5834b1b 1.65kB / 1.65kB                                            0.0s
 => => sha256:396dc22751189040da3af7db5e229b95f6cf58670495704e06cbe659f515f052 2.01kB / 2.01kB                                            0.0s
 => => sha256:49185a1a3bc353699370ac57d50a7b7234b59616b6aebde79ba6a0a0314bb107 53.70MB / 53.70MB                                          0.6s
 => => sha256:c0f6f6b31000e991bdd81caebc21e281fc1350f09586d393f3b8bf36dceeb99e 15.75MB / 15.75MB                                          0.5s
 => => extracting sha256:49185a1a3bc353699370ac57d50a7b7234b59616b6aebde79ba6a0a0314bb107                                                 1.8s
 => => sha256:f51d4da56fe155c4507282ba6e59a53a92a0e40ef063e73df5564040c87c705e 6.41MB / 6.41MB                                            1.1s
 => => sha256:69a603957da8fb844ffa8e86445842d8c1a4ab087651d93eb89e98d27562de9e 189.78MB / 189.78MB                                        7.2s
 => => sha256:59e8363d17b74b26715f3e8d174077e3544611dd39efb04795838d4a2d91a04f 248B / 248B                                                1.4s
 => => sha256:df60b68f8b5dbf5bc1422de4d3f7221730cb7be73212c6f772e6a2b471ff36f1 19.90MB / 19.90MB                                          1.6s
 => => sha256:1abdb2afc5542db9b1a1c6620e1dc437fc5012a7220d9539adc6ef961bc20ec3 3.09MB / 3.09MB                                            1.7s
 => => extracting sha256:c0f6f6b31000e991bdd81caebc21e281fc1350f09586d393f3b8bf36dceeb99e                                                 0.3s
 => => extracting sha256:385ee361272e1c36fe7d96fe8ab6b0f30cf33bfb9bbe29bfc2d33f51bd771993                                                 1.4s
 => => extracting sha256:69a603957da8fb844ffa8e86445842d8c1a4ab087651d93eb89e98d27562de9e                                                 3.6s
 => => extracting sha256:f51d4da56fe155c4507282ba6e59a53a92a0e40ef063e73df5564040c87c705e                                                 0.2s
 => => extracting sha256:df60b68f8b5dbf5bc1422de4d3f7221730cb7be73212c6f772e6a2b471ff36f1                                                 0.4s
 => => extracting sha256:59e8363d17b74b26715f3e8d174077e3544611dd39efb04795838d4a2d91a04f                                                 0.0s
 => => extracting sha256:1abdb2afc5542db9b1a1c6620e1dc437fc5012a7220d9539adc6ef961bc20ec3                                                 0.2s
 => [devbox internal] load build context                                                                                                  0.1s
 => => transferring context: 4.91MB                                                                                                       0.1s
 => [test internal] load build context                                                                                                    0.1s
 => => transferring context: 6.25MB                                                                                                       0.1s
 => [service internal] load build context                                                                                                 0.1s
 => => transferring context: 6.25MB                                                                                                       0.1s
 => [service base 2/2] WORKDIR /app                                                                                                       0.0s
 => [devbox dev-setup 1/1] RUN apt-get update && apt-get install -y git less vim                                                          5.0s
 => [service shared-setup 1/4] RUN apt-get update && apt-get install -y build-essential                                                   3.7s
 => [service shared-setup 2/4] RUN useradd -ms /bin/bash joyvan                                                                           0.5s
 => [service shared-setup 3/4] RUN pip install poetry                                                                                    13.6s
 => [test shared-setup 1/4] RUN apt-get update && apt-get install -y build-essential                                                      2.3s
 => [devbox shared-setup 2/4] RUN useradd -ms /bin/bash joyvan                                                                            0.4s
 => [devbox shared-setup 3/4] RUN pip install poetry                                                                                     10.0s
 => [devbox shared-setup 4/4] COPY . .                                                                                                    0.3s
 => [service shared-setup 4/4] COPY . .                                                                                                   0.3s
 => ERROR [service prod 1/1] RUN make install-dev                                                                                        31.9s
 => ERROR [devbox dev 1/1] RUN make install                                                                                              31.9s
------
 > [service prod 1/1] RUN make install-dev:
1.233 Creating virtualenv hyacinth-9TtSrW0h-py3.11 in /home/joyvan/.cache/pypoetry/virtualenvs
1.952 The `--no-dev` option is deprecated, use the `--only main` notation instead.
1.952 Installing dependencies from lock file
2.538 
2.538 Package operations: 66 installs, 1 update, 0 removals
2.538 
2.539   • Installing six (1.16.0)
2.880   • Installing jmespath (1.0.1)
2.881   • Installing python-dateutil (2.8.2)
2.881   • Installing urllib3 (1.26.15)
3.113   • Installing botocore (1.29.76)
3.114   • Installing frozenlist (1.3.3)
3.114   • Installing idna (3.4)
3.116   • Installing multidict (6.0.4)
4.165   • Installing aiosignal (1.3.1)
4.165   • Installing async-timeout (4.0.2)
4.166   • Installing attrs (23.1.0)
4.166   • Installing charset-normalizer (3.1.0)
4.166   • Installing click (8.1.6)
4.168   • Installing s3transfer (0.6.1)
4.170   • Installing sniffio (1.3.0)
4.172   • Installing typing-extensions (4.7.1)
4.240   • Installing tzdata (2023.3)
4.293   • Installing yarl (1.9.2)
4.646   • Installing aiohttp (3.8.4)
4.646   • Installing aioitertools (0.11.0)
4.647   • Installing annotated-types (0.5.0)
4.647   • Installing anyio (3.7.1)
4.648   • Installing boto3 (1.26.76)
4.650   • Installing certifi (2022.12.7)
4.651   • Installing click-plugins (1.1.1)
4.652   • Installing cligj (0.7.2)
4.670   • Installing h11 (0.14.0)
4.970   • Installing munch (2.5.0)
4.973   • Installing numpy (1.24.3)
4.991   • Installing pydantic-core (2.4.0)
5.009   • Installing pytz (2023.3)
5.050   • Installing pytz-deprecation-shim (0.1.0.post0)
5.084   • Installing wrapt (1.15.0)
5.121   • Installing zipp (3.16.2)
6.438   • Installing aiobotocore (2.5.0)
6.438   • Installing appdirs (1.4.4)
6.439   • Installing fiona (1.9.3)
6.440   • Installing geographiclib (2.0)
6.441   • Installing greenlet (2.0.2)
6.441   • Installing httpcore (0.17.3)
6.442   • Installing importlib-metadata (6.8.0)
6.443   • Installing packaging (23.1)
6.482   • Installing pandas (2.0.1)
6.486   • Installing pydantic (2.1.1)
6.491   • Installing pyee (8.2.2)
6.730   • Installing pyproj (3.5.0)
6.779   • Installing python-dotenv (1.0.0)
6.811   • Updating setuptools (68.0.0 -> 67.7.2)
6.836   • Installing shapely (1.8.5.post1)
6.927   • Installing soupsieve (2.4.1)
6.929   • Installing tqdm (4.65.0)
6.990   • Installing tzlocal (4.3)
7.016   • Installing websockets (10.4)
13.10 
13.10   ChefBuildError
13.10 
13.10   Backend subprocess exited when trying to invoke get_requires_for_build_wheel
13.10   
13.10   <string>:82: DeprecationWarning: The 'warn' function is deprecated, use 'warning' instead
13.10   WARNING:root:Failed to get options via gdal-config: [Errno 2] No such file or directory: 'gdal-config'
13.10   CRITICAL:root:A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
13.10   
13.10 
13.10   at ~/.local/lib/python3.11/site-packages/poetry/installation/chef.py:147 in _prepare
13.11       143│ 
13.11       144│                 error = ChefBuildError("\n\n".join(message_parts))
13.11       145│ 
13.11       146│             if error is not None:
13.11     → 147│                 raise error from None
13.11       148│ 
13.11       149│             return path
13.11       150│ 
13.11       151│     def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:
13.11 
13.11 Note: This error originates from the build backend, and is likely not a problem with poetry but with fiona (1.9.3) not supporting PEP 517 builds. You can verify this by running 'pip wheel --use-pep517 "fiona (==1.9.3)"'.
13.11 
17.29 make: *** [Makefile:18: install] Error 1
------
------
 > [devbox dev 1/1] RUN make install:
1.231 Creating virtualenv hyacinth-9TtSrW0h-py3.11 in /home/joyvan/.cache/pypoetry/virtualenvs
1.956 Installing dependencies from lock file
1.956 The `--no-dev` option is deprecated, use the `--only main` notation instead.
2.548 
2.548 Package operations: 66 installs, 1 update, 0 removals
2.548 
2.549   • Installing six (1.16.0)
2.876   • Installing jmespath (1.0.1)
2.876   • Installing python-dateutil (2.8.2)
2.878   • Installing urllib3 (1.26.15)
3.111   • Installing botocore (1.29.76)
3.111   • Installing frozenlist (1.3.3)
3.112   • Installing idna (3.4)
3.112   • Installing multidict (6.0.4)
4.191   • Installing aiosignal (1.3.1)
4.192   • Installing async-timeout (4.0.2)
4.192   • Installing attrs (23.1.0)
4.193   • Installing charset-normalizer (3.1.0)
4.195   • Installing click (8.1.6)
4.195   • Installing s3transfer (0.6.1)
4.198   • Installing sniffio (1.3.0)
4.201   • Installing typing-extensions (4.7.1)
4.268   • Installing tzdata (2023.3)
4.300   • Installing yarl (1.9.2)
4.643   • Installing aiohttp (3.8.4)
4.643   • Installing aioitertools (0.11.0)
4.643   • Installing annotated-types (0.5.0)
4.643   • Installing anyio (3.7.1)
4.644   • Installing boto3 (1.26.76)
4.646   • Installing certifi (2022.12.7)
4.647   • Installing click-plugins (1.1.1)
4.649   • Installing cligj (0.7.2)
4.669   • Installing h11 (0.14.0)
4.928   • Installing munch (2.5.0)
4.969   • Installing numpy (1.24.3)
4.985   • Installing pydantic-core (2.4.0)
4.999   • Installing pytz (2023.3)
5.075   • Installing pytz-deprecation-shim (0.1.0.post0)
5.087   • Installing wrapt (1.15.0)
5.119   • Installing zipp (3.16.2)
6.432   • Installing aiobotocore (2.5.0)
6.432   • Installing appdirs (1.4.4)
6.433   • Installing fiona (1.9.3)
6.434   • Installing geographiclib (2.0)
6.434   • Installing greenlet (2.0.2)
6.435   • Installing httpcore (0.17.3)
6.436   • Installing importlib-metadata (6.8.0)
6.436   • Installing packaging (23.1)
6.455   • Installing pandas (2.0.1)
6.472   • Installing pydantic (2.1.1)
6.477   • Installing pyee (8.2.2)
6.787   • Installing pyproj (3.5.0)
6.792   • Installing python-dotenv (1.0.0)
6.836   • Updating setuptools (68.0.0 -> 67.7.2)
6.846   • Installing shapely (1.8.5.post1)
6.904   • Installing soupsieve (2.4.1)
6.921   • Installing tqdm (4.65.0)
6.975   • Installing tzlocal (4.3)
7.018   • Installing websockets (10.4)
12.77 
12.78   ChefBuildError
12.78 
12.78   Backend subprocess exited when trying to invoke get_requires_for_build_wheel
12.78   
12.78   <string>:82: DeprecationWarning: The 'warn' function is deprecated, use 'warning' instead
12.78   WARNING:root:Failed to get options via gdal-config: [Errno 2] No such file or directory: 'gdal-config'
12.78   CRITICAL:root:A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
12.78   
12.78 
12.78   at ~/.local/lib/python3.11/site-packages/poetry/installation/chef.py:147 in _prepare
12.79       143│ 
12.79       144│                 error = ChefBuildError("\n\n".join(message_parts))
12.79       145│ 
12.79       146│             if error is not None:
12.79     → 147│                 raise error from None
12.79       148│ 
12.79       149│             return path
12.79       150│ 
12.79       151│     def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:
12.79 
12.79 Note: This error originates from the build backend, and is likely not a problem with poetry but with fiona (1.9.3) not supporting PEP 517 builds. You can verify this by running 'pip wheel --use-pep517 "fiona (==1.9.3)"'.
12.79 
17.27 make: *** [Makefile:18: install] Error 1
------
failed to solve: process "/bin/sh -c make install-dev" did not complete successfully: exit code: 2

Poll Failure Log

I am getting this error in my logs:

Traceback (most recent call last):
File "/app/plugins/marketplace/client.py", line 120, in _parse_search_results
raise ValueError("Could not find items container")
ValueError: Could not find items container

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/app/hyacinth/monitor.py", line 95, in __safe_poll_search
listings = await search_spec.plugin.get_listings(search_spec.search_params, after_time)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/plugins/marketplace/plugin.py", line 38, in get_listings
return await get_listings(search_params, after_time, limit)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/plugins/marketplace/client.py", line 28, in get_listings
async for listing in search:
File "/app/plugins/marketplace/client.py", line 53, in _search
result_urls = _parse_search_results(search_content)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/plugins/marketplace/client.py", line 133, in _parse_search_results
raise ParseError("Error parsing search results", content) from e
hyacinth.exceptions.ParseError: Error parsing search results

This error was caused while parsing the following content:

Any help would be great, thanks!

Inconsistent and unpredictable grabbing and reporting

Log.txt
I started using this last night and I'm noticing odd behavior where it will report things in batches every 30-40 minutes, and it will only find Facebook listing once after a few polls returning nothing. An example would be a batch sent to my discord at 10:41 and it included listings posted on Facebook at 9:34, 9:40 and 9:45. The next batch it sent was a single listing sent at 11:14 that was posted on Facebook at 10:32. I've watched it running in docker for a couple of hours and I haven't found anything out of the ordinary, just the odd behavior above.
I've also went about and set interval poll to marketplace_poll_interval_seconds: int = 900 and it made no difference. Any suggestions?
I've attatched what I have been seeing in Docker.

Docker Service-1 exiting

I haven't used hyacinth in roughly a week so I hopped back on today and my docker service-1 keeps exiting within seconds after starting the program. Here is my log.

PS C:\Users\ajwwe\Documents\GitHub\hyacinth> docker-compose up service
[+] Building 0.0s (0/0) docker:default
[+] Running 3/0
✔ Container hyacinth-db-1 Running 0.0s
✔ Container hyacinth-browserless-1 Created 0.0s
✔ Container hyacinth-service-1 Created 0.0s
Attaching to hyacinth-service-1
hyacinth-service-1 | 2023-12-27 17:59:28 [9] [INFO] hyacinth.discord.discord_bot We have logged in as Hyacinth#7033
hyacinth-service-1 | 2023-12-27 17:59:28 [9] [INFO] hyacinth.metrics Metrics disabled, will not start metrics write task
hyacinth-service-1 | 2023-12-27 17:59:28 [9] [INFO] hyacinth.discord.discord_bot Loading plugin plugins.craigslist.plugin:CraigslistPlugin
hyacinth-service-1 | 2023-12-27 17:59:29 [9] [INFO] hyacinth.discord.discord_bot Loading plugin plugins.marketplace.plugin:MarketplacePlugin
hyacinth-service-1 | 2023-12-27 17:59:29 [9] [INFO] hyacinth.db.crud.notifier Found stale notifier for channel 1180163310776238154! Deleting.
hyacinth-service-1 | 2023-12-27 17:59:29 [9] [INFO] hyacinth.db.crud.notifier Found stale notifier for channel 1181439125858037850! Deleting.
hyacinth-service-1 | 2023-12-27 17:59:29 [9] [INFO] hyacinth.db.crud.notifier Found stale notifier for channel 1181435280499146792! Deleting.
hyacinth-service-1 | 2023-12-27 17:59:29 [9] [INFO] hyacinth.db.crud.notifier Found stale notifier for channel 1186335839790321676! Deleting.
hyacinth-service-1 | 2023-12-27 17:59:29 [9] [INFO] hyacinth.db.crud.notifier Found stale notifier for channel 1187493869177294959! Deleting.
hyacinth-service-1 | 2023-12-27 17:59:29 [9] [INFO] hyacinth.db.crud.notifier Found stale notifier for channel 1187493831034282116! Deleting.
hyacinth-service-1 | 2023-12-27 17:59:29 [9] [INFO] hyacinth.db.crud.notifier Found stale notifier for channel 1187493916249956392! Deleting.
hyacinth-service-1 | 2023-12-27 17:59:29 [9] [INFO] hyacinth.db.crud.notifier Deleting 7 stale notifiers from the database.
hyacinth-service-1 | 2023-12-27 17:59:29 [9] [ERROR] hyacinth.discord.discord_bot Error in on_ready
hyacinth-service-1 | Traceback (most recent call last):
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1969, in _exec_single_context
hyacinth-service-1 | self.dialect.do_execute(
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 922, in do_execute
hyacinth-service-1 | cursor.execute(statement, parameters)
hyacinth-service-1 | psycopg2.errors.ForeignKeyViolation: update or delete on table "channelnotifier" violates foreign key constraint "notifiersearch_notifier_id_fkey" on table "notifiersearch"
hyacinth-service-1 | DETAIL: Key (id)=(2) is still referenced from table "notifiersearch".
hyacinth-service-1 |
hyacinth-service-1 |
hyacinth-service-1 | The above exception was the direct cause of the following exception:
hyacinth-service-1 |
hyacinth-service-1 | Traceback (most recent call last):
hyacinth-service-1 | File "/app/hyacinth/discord/discord_bot.py", line 237, in on_ready
hyacinth-service-1 | await discord_bot.on_ready()
hyacinth-service-1 | File "/app/hyacinth/discord/discord_bot.py", line 53, in on_ready
hyacinth-service-1 | self.load_saved_notifiers()
hyacinth-service-1 | File "/app/hyacinth/discord/discord_bot.py", line 63, in load_saved_notifiers
hyacinth-service-1 | notifiers = get_channel_notifiers(session, self.client, self.monitor)
hyacinth-service-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hyacinth-service-1 | File "/app/hyacinth/db/crud/notifier.py", line 116, in get_channel_notifiers
hyacinth-service-1 | session.execute(stmt)
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2308, in execute
hyacinth-service-1 | return self._execute_internal(
hyacinth-service-1 | ^^^^^^^^^^^^^^^^^^^^^^^
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2190, in _execute_internal
hyacinth-service-1 | result: Result[Any] = compile_state_cls.orm_execute_statement(
hyacinth-service-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/orm/bulk_persistence.py", line 1946, in orm_execute_statement
hyacinth-service-1 | return super().orm_execute_statement(
hyacinth-service-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/orm/context.py", line 293, in orm_execute_statement
hyacinth-service-1 | result = conn.execute(
hyacinth-service-1 | ^^^^^^^^^^^^^
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute
hyacinth-service-1 | return meth(
hyacinth-service-1 | ^^^^^
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 516, in _execute_on_connection
hyacinth-service-1 | return connection._execute_clauseelement(
hyacinth-service-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1639, in _execute_clauseelement
hyacinth-service-1 | ret = self._execute_context(
hyacinth-service-1 | ^^^^^^^^^^^^^^^^^^^^^^
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1848, in _execute_context
hyacinth-service-1 | return self._exec_single_context(
hyacinth-service-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1988, in _exec_single_context
hyacinth-service-1 | self._handle_dbapi_exception(
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2343, in _handle_dbapi_exception
hyacinth-service-1 | raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1969, in _exec_single_context
hyacinth-service-1 | self.dialect.do_execute(
hyacinth-service-1 | File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 922, in do_execute
hyacinth-service-1 | cursor.execute(statement, parameters)
hyacinth-service-1 | sqlalchemy.exc.IntegrityError: (psycopg2.errors.ForeignKeyViolation) update or delete on table "channelnotifier" violates foreign key constraint "notifiersearch_notifier_id_fkey" on table "notifiersearch"
hyacinth-service-1 | DETAIL: Key (id)=(2) is still referenced from table "notifiersearch".
hyacinth-service-1 |
hyacinth-service-1 | [SQL: DELETE FROM channelnotifier WHERE channelnotifier.channel_id IN (%(channel_id_1_1)s, %(channel_id_1_2)s, %(channel_id_1_3)s, %(channel_id_1_4)s, %(channel_id_1_5)s, %(channel_id_1_6)s, %(channel_id_1_7)s)]
hyacinth-service-1 | [parameters: {'channel_id_1_1': '1180163310776238154', 'channel_id_1_2': '1181439125858037850', 'channel_id_1_3': '1181435280499146792', 'channel_id_1_4': '1186335839790321676', 'channel_id_1_5': '1187493869177294959', 'channel_id_1_6': '1187493831034282116', 'channel_id_1_7': '1187493916249956392'}]
hyacinth-service-1 | (Background on this error at: https://sqlalche.me/e/20/gkpj)
hyacinth-service-1 | Unclosed client session
hyacinth-service-1 | client_session: <aiohttp.client.ClientSession object at 0x7f482f9a8830>
hyacinth-service-1 | Unclosed connector
hyacinth-service-1 | connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x7f482f81ffb0>, 23.7131339)]']
hyacinth-service-1 | connector: <aiohttp.connector.TCPConnector object at 0x7f482f927950>
hyacinth-service-1 exited with code 0

Discord notifications very slow

I am running hyacinth from my home desktop. I am currently using VS code along with docker. I have attached a picture of my searches and filters within discord. The issue I have is I am getting notifications hours after something new is posted. From my understanding hyacinth is searching marketplace every 10 minutes, and I have set discord to check those results every 60 seconds. At this point it seems that marketplace may not even be producing any results (even though I know there are new postings that would fall into my search parameters). Bellow is my most recent log file (poll failure). Any help would be greatly appreciated! Side note, the computer is running a core i5 7th gen 8gb ram, and standard disk drive. It is not very fast and can be slow at times. But it is still running VS code and docker. Not sure if the computer speed has an impact on the issue I am having?

Traceback (most recent call last):
File "/app/hyacinth/monitor.py", line 95, in __safe_poll_search
listings = await search_spec.plugin.get_listings(search_spec.search_params, after_time)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/plugins/craigslist/plugin.py", line 38, in get_listings
return await get_listings(search_params, after_time, limit)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/plugins/craigslist/client.py", line 33, in get_listings
async for listing in search:
File "/app/plugins/craigslist/client.py", line 63, in _search
detail_content = await _get_detail_content(browser_page, result_url)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/plugins/craigslist/client.py", line 105, in _get_detail_content
await browser_page.wait_for_selector("section.body")
File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/playwright/async_api/_generated.py", line 8329, in wait_for_selector
await self._impl_obj.wait_for_selector(
File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/playwright/_impl/_page.py", line 357, in wait_for_selector
return await self._main_frame.wait_for_selector(**locals_to_params(locals()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/playwright/_impl/_frame.py", line 327, in wait_for_selector
await self._channel.send("waitForSelector", locals_to_params(locals()))
File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/playwright/_impl/_connection.py", line 63, in send
return await self._connection.wrap_api_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/playwright/_impl/_connection.py", line 495, in wrap_api_call
return await cb()
^^^^^^^^^^
File "/home/joyvan/.cache/pypoetry/virtualenvs/hyacinth-9TtSrW0h-py3.12/lib/python3.12/site-packages/playwright/_impl/_connection.py", line 101, in inner_send
result = next(iter(done)).result()
^^^^^^^^^^^^^^^^^^^^^^^^^
playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded.

Picture of search parameters:

Capture

Not coming online on Discord

I have configured everything as described in the guide and I am running the bot on vm Ubuntu but no matter what I troubleshot, it will not come online in discord.

Using docker-compose build I get no errors and it runs through all steps

then I use docker-compose up service and again no errors, I get hyacinth_service_1 exited with code 0

but the bot is not coming online on discord. I have triple checked all configurations, the .env file and insured I have all required pre requisites.

after hours of troubleshooting, I’m hoping for any guidance

thank you 🙏🙏

Secrets could be leaked by stack traces

If a command throws an exception, a stack trace is sent back to the user to help them understand what went wrong.

There is a possibility that this could be used to leak secrets. Messages should be filtered before sending to Discord to blank out any included secret values.

FileNotFoundError

So I'm trying to run Hyacinth and while I was running the command: docker-compose up service, I keep getting this message below.

service-1 | FileNotFoundError: Could not find local geospatial data. Please download gadm36_USA.gpkg and cities1000.txt to use local geocoding.
service-1 | error: Recipe run failed on line 37 with exit code 1

I live in Canada so I don't know if it'll have to be changed and I haven't messed around with any of the files.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.