Archived
1
0
Fork 0
Commit graph

20 commits

Author SHA1 Message Date
3b392700d3
feat: Add -monitor option
Signed-off-by: Julien Riou <julien@riou.xyz>
2022-09-01 07:02:18 +02:00
991880f1c9
feat: Add NVIDIA FE (#15)
Signed-off-by: Julien Riou <julien@riou.xyz>
2022-07-22 19:34:20 +02:00
563d5ff9a6
feat: anti-flapping
Send notifications only if the state duration is not instant. There are
a lot of replies with 0 seconds duration spamming channels.

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-07-07 15:36:03 +02:00
da532104f8
feat: add price range filter (#26)
To avoid scalpers' price, the bot now understand filters on prices
using a minimum and maximum value, in a currency and a pattern to
detect the model.

Example:
```
"price_ranges": [
  {"model": "3090", "max": 3000, "currency": "EUR"},
  {"model": "3080", "max": 1600, "currency": "EUR"},
  {"model": "3070", "max": 1200, "currency": "EUR"}
],
```

More details in README.md.

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-05-23 02:40:03 +02:00
244c9f68e7
refactor: move filters out of parser
Filters are now separate structures to include a product or not based
on their own set of properties. For now, include and exclude filters
are supported. They take a regex as an argument and include a product
if the regex matches (or doesn't match) the product name. This commit
will allow us to create new filters on product like on a price range.

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-05-19 17:43:31 +02:00
75ca25ffbb
Bugfix typo for compilation
Used logrus.Logf instead of logrus.Printf.

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-04-15 15:27:46 +02:00
1f5cef17d2
Handle Twitter duplicates (#20)
This commit adds a hash attribute to help identify duplicate messages. Tweets
have a TweetID attribute for the initial thread identifier and a LastTweetID
attribute to keep track of the last reply to eventually continue the thread if a
duplicate is detected.

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-04-15 15:13:00 +02:00
5ba0699adc
Bugfix asynchronous loop
When workers threshold was reached, the current parser was skipped instead of
being processed later. Adding a for loop to retry instead.

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-04-12 09:21:24 +02:00
e57a1c0148
Add tests for utils.go
Signed-off-by: Julien Riou <julien@riou.xyz>
2021-04-12 08:49:11 +02:00
47c8a8ace9
Add PostgreSQL support (#23)
Signed-off-by: Julien Riou <julien@riou.xyz>
2021-04-06 10:33:24 +02:00
b6f23d4bd5
Unify case in help
Signed-off-by: Julien Riou <julien@riou.xyz>
2021-04-06 09:25:15 +02:00
81258ed935
Keep track and remove stale products
Products not updated since a while are not supposed to stay in the database nor
exposed via the API. This commit automatically updates all detected products
with the current date and adds a "retention" flag (number of days) to remove old
products. This flag is disabled by default.

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-04-06 09:22:22 +02:00
7c2c1032cb
Make the linter happy
Signed-off-by: Julien Riou <julien@riou.xyz>
2021-04-01 17:57:17 +02:00
ab5abcd171
Select or create shop before parsing
A shop map was created to group URLs by shops and process them in order. Now
that we have Amazon and each URL can be parsed independently, there is no need
to group them anymore. Moreover, shops were passed as an argument to the
handleProducts function. Shop name can be deduced by the parser itself. The
parser has a reference to the database. The parser now select or create the shop
before parsing products.

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-04-01 17:50:50 +02:00
5ac5f78ae2
Add Amazon support (#3)
This commit introduces the Amazon support with calls to the Product Advertising
API (PA API). For now, I was only able to use the "www.amazon.fr" marketplace.
I will add more marketplaces when my Amazon Associate accounts will be
validated.

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-04-01 12:59:16 +02:00
17a88265c6
Add HTTP API
Add `-api` mode to start the HTTP API with the following routes:
- /health
- /shops
- /shops/:id
- /products
- /products/:id

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-03-30 18:00:12 +02:00
0a9ae46d19
Add Telegram Messenger notifications
Signed-off-by: Julien Riou <julien@riou.xyz>
2021-03-24 09:35:37 +01:00
e67ab63ca8
Prepare for new parsers
- Rename "Parser" to "URLParser"
- Make "Parse" function generic
- Rename "crawlShop" function to "handleProducts"
- Reduce "handleProducts" footprint a little bit

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-03-23 09:00:10 +01:00
45025def65
Configure headless browser address
Add `browser_address` configuration setting to define where is the headless
browser instead of relying on the default value.

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-03-01 13:11:58 +01:00
3a4aba93e5
Release 0.2.0
- new language: go
- new shops: cybertek.fr, mediamarkt.ch
- deprecated shops: alternate.be, minershop.eu
- improved database transaction management
- better web parsing library (ferret, requires headless chrome browser)
- include or exclude products by applying regex on their names
- check for PID file to avoid running the bot twice
- hastags are now configurable

Signed-off-by: Julien Riou <julien@riou.xyz>
2021-02-27 08:10:43 +01:00