Skip to content
This repository was archived by the owner on May 19, 2019. It is now read-only.

Commit 6415d29

Browse files
authored
FilterUnnecessaryEvents (#102)
* Added func exclude_unpopular: removes unnecessary events that was referred in issue #87 * Less patterns * Redundant parameter "r"
1 parent 84cf301 commit 6415d29

File tree

9 files changed

+498
-2
lines changed

9 files changed

+498
-2
lines changed

surebet/handling/excluding.py

+25
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1+
from re import search
2+
13
from surebet import find_in_iter, reverse_enum
24
from surebet.handling.surebets import Surebets, Surebet
35

6+
women_patterns = ["\([Ww]\)"]
7+
other_patterns = ["\([Rr]\)", "U\d+", "\(U\d+\)", "U-\d+", "Reserves"]
8+
49

510
def _del_equal(found_obj, posit_obj) -> None:
611
for attr, found_iter in found_obj.__dict__.items():
@@ -20,3 +25,23 @@ def _del_equal(found_obj, posit_obj) -> None:
2025
def exclude_posit(found_surebets: Surebets, posit_surebets: Surebets) -> None:
2126
_del_equal(found_surebets, posit_surebets)
2227
found_surebets.format()
28+
29+
30+
def exclude_unpopular(surebets):
31+
for book in surebets.books_surebets:
32+
for sport_name, sport in book.attrs_dict().items():
33+
patterns = list(other_patterns)
34+
if sport_name != "volley": # volleyball women teams are allowed
35+
patterns += women_patterns
36+
37+
for idx, event in reverse_enum(sport):
38+
if is_unpopular(patterns, event):
39+
del sport[idx]
40+
41+
42+
def is_unpopular(patterns, event):
43+
for pattern in patterns:
44+
for teams in (event.teams1, event.teams2):
45+
if search(pattern, teams[0]) or search(pattern, teams[1]):
46+
return True
47+
return False

surebet/main.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from surebet.bookmakers import Posit, Fonbet, Marat, Olimp
22
from surebet.handling.detailed_surebets import convert_to_detailed
3-
from surebet.handling.excluding import exclude_posit
3+
from surebet.handling.excluding import exclude_posit, exclude_unpopular
44
from surebet.handling.searching import find_surebets
55
from surebet.handling.surebets import Surebets
66
from surebet.loading.selenium import SeleniumService
@@ -29,6 +29,8 @@ def start_scanning(iter_num):
2929

3030
exclude_posit(surebets, posit_surebets)
3131

32+
exclude_unpopular(surebets)
33+
3234
surebets.set_timestamps(old_surebets)
3335
old_surebets = surebets
3436

surebet/tests/handling/test_exclude.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def test_known_result():
2929
surebets_other, surebets_posit = read_sample("known.pkl")
3030
exclude_posit(surebets_other, surebets_posit)
3131

32-
with open(path.join(resource_dir, "knownResult.json"), "r") as file_result:
32+
with open(path.join(resource_dir, "knownResult.json")) as file_result:
3333
surebets_result = json.load(file_result)
3434

3535
assert obj_dumps(surebets_other) == json_dumps(surebets_result)
+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import logging
2+
import pickle
3+
import json
4+
from os import path
5+
6+
from surebet.tests.handling import package_dir
7+
from surebet.json_funcs import json_dumps, obj_dumps
8+
from surebet.handling.excluding import exclude_unpopular
9+
10+
resource_dir = path.join(package_dir, "unpopular")
11+
12+
13+
def read_sample(filename):
14+
with open(path.join(resource_dir, filename), "rb") as found_file:
15+
obj = pickle.load(found_file)
16+
return obj
17+
18+
19+
def test_sample():
20+
for sample_num in range(3):
21+
filename = 'sample{}.pkl'.format(sample_num)
22+
surebets = read_sample(filename)
23+
exclude_unpopular(surebets)
24+
25+
logging.info("PASS: samples")
26+
27+
28+
def test_known_result():
29+
surebets = read_sample("known.pkl")
30+
exclude_unpopular(surebets)
31+
32+
with open(path.join(resource_dir, "knownResult.json")) as file_result:
33+
surebets_result = json.load(file_result)
34+
35+
assert obj_dumps(surebets) == json_dumps(surebets_result)
36+
37+
logging.info("PASS: known")
4.48 KB
Binary file not shown.

0 commit comments

Comments
 (0)