Skip to content

Commit 97f34dc

Browse files
committed
Add alert strategies
1 parent cd40836 commit 97f34dc

File tree

3 files changed

+60
-8
lines changed

3 files changed

+60
-8
lines changed

apps/ticketscraping/tasks/asynchronous.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from ...storage.query import find_max, find_min, find_many_ascending_order
33
from ...ticketscraping import constants
44
from ..models.pick import Pick
5+
from .strategies import similarRank
56

67
# metric 1
78

@@ -68,15 +69,18 @@ def run_async_task(pick: Pick, scraping_id: str):
6869
# If found the exact same seat based on(sec, row?, seat?), get the history price(s) of the seat.
6970
same_seats = get_exact_same_seats(pick, scraping_id)
7071

71-
print(f"percent change: {percent_change*100}")
72-
print(f"percentile: {percentile*100}")
73-
print(f"same seats in chronological order")
74-
print(f"new seat price: {pick.price}")
75-
print(f"history seat prices:")
76-
print(list(map(lambda seat: seat.get('price', -1), same_seats)))
77-
78-
# TODO
7972
# Alert the user based on alert conditions
73+
count, seats = similarRank.price_decrease_similar_rank(
74+
pick, scraping_id)
75+
if(count > 0):
76+
print(f"percent change: {percent_change*100}")
77+
print(f"percentile: {percentile*100}")
78+
print(f"same seats in chronological order")
79+
print(f"new seat - price: {pick.price} rank: {pick.quality} section: {pick.section} row: {pick.row}")
80+
print(f"history exact same seat prices:")
81+
print(list(map(lambda seat: seat.get('price', -1), same_seats)))
82+
print(f"strategy compared to history seat ({count}) prices:")
83+
print(list(map(lambda seat: f"sec: {seat.get('section')}; row: {seat.get('row')}; rank: {seat.get('quality')}; price: {seat.get('price')}", seats)))
8084

8185
except Exception as ex:
8286
print(ex)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from ....storage.storage import count_docs
2+
from ....ticketscraping import constants
3+
from ...models.pick import Pick
4+
5+
6+
def rank_increase_similar_price(pick: Pick, scraping_id: str):
7+
return count_docs(constants.DATABASE['BEST_HISTORY_SEATS'],
8+
{
9+
"scraping_id": scraping_id,
10+
"price": {"$gte": pick.price},
11+
"quality": {"$lt": pick.quality},
12+
}) > 0
13+
14+
15+
def rank_decrease_similar_price(pick: Pick, scraping_id: str):
16+
return count_docs(constants.DATABASE['BEST_HISTORY_SEATS'],
17+
{
18+
"scraping_id": scraping_id,
19+
"price": {"$lte": pick.price},
20+
"quality": {"$gt": pick.quality},
21+
}) > 0
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from ....storage.storage import count_docs, find_many
2+
from ....ticketscraping import constants
3+
from ...models.pick import Pick
4+
5+
6+
def price_decrease_similar_rank(pick: Pick, scraping_id: str):
7+
filter_obj = {
8+
"scraping_id": scraping_id,
9+
"price": {"$gt": pick.price},
10+
"quality": {"$lte": pick.quality},
11+
}
12+
count = count_docs(constants.DATABASE['BEST_HISTORY_SEATS'], filter_obj)
13+
seats = find_many(constants.DATABASE['BEST_HISTORY_SEATS'], filter_obj, sort=[
14+
("quality", -1)]) if count > 0 else None
15+
return (count, seats)
16+
17+
18+
def price_increase_similar_rank(pick: Pick, scraping_id: str):
19+
filter_obj = {
20+
"scraping_id": scraping_id,
21+
"price": {"$lt": pick.price},
22+
"quality": {"$gte": pick.quality},
23+
}
24+
count = count_docs(constants.DATABASE['BEST_HISTORY_SEATS'], filter_obj)
25+
seats = find_many(constants.DATABASE['BEST_HISTORY_SEATS'], filter_obj, sort=[
26+
("quality", 1)]) if count > 0 else None
27+
return (count, seats)

0 commit comments

Comments
 (0)