This repository has been archived by the owner on Apr 12, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TT.txt
197 lines (172 loc) · 8.78 KB
/
TT.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
Сканер
------
Первая часть состоит в том, что-бы собирать катировки с сайта gg8.bet
Нам нужен кибер-спорт, в основном это Контр-страйк и дота.
Аналогичнымы видом спорта является eSports на БК Фонбет, Олимп(в бэте)
О gg8.bet
---------
На сколько я вижу, сайт использует веб-хуки, соответственно будет достаточно просто собирать с него катировки в структурированно виде, без особой нагрузки.
Обмен
-----
Обмен сообщения делаем на RabbitMQ, все что ниже по шагам будет описано, нужно будет складывать в нужную очередь(Названия вы моежете придумать самостоятельно) либо к каждому типу сообщения придумаем соответствующий параметр и будем все писать в одну очередь.
В каждое сообщение добавлем текущее время по Linux Timestamp, парметр cur_time, подробнее, ниже.
Шаг 1 - Получение списка live событий(матчей)
--------------------------------------------
Необходимо выбрать название матча на латинице и его идентификатор, в разбивке по виду спорта, т.к. предпологается, что будет не один киберсбопрт или его будет несоклько видов, и положить объект в очередь, в формате JSON.
К событию добавляем время начала и время окончания в формате Linux Timestamp, например:
{"cur_time": LinuxTimestamp, "sport_id":integer, "sport_name":"varchar", "match_id":integer, "team_name1":"varchar", "team_name2":"varchar", "time_start":LinuxTimestamp, "time_end":LinuxTimestamp}
Пример:
{"cur_time": 1567655125, "sport_id":3545, "sport_name":"eSports", "match_id":51570039, "team_name1":"Cruz Azul", "team_name2":"Atlas", "time_start":1567654840, "time_end":1567656842}
Если дату начала и окончания найти не удается, то параметры времени(time_start, time_end), меняем на признак event_status, где значние start - событие добавлено, end - событие завершено, пример:
{"cur_time": 1567655125, "sport_id":3545, "sport_name":"eSports", "match_id":51570039, "team_name1":"Cruz Azul", "team_name2":"Atlas", "event_status":"start"}
{"cur_time": 1567655125, "sport_id":3545, "sport_name":"eSports", "match_id":51570039, "team_name1":"Cruz Azul", "team_name2":"Atlas", "event_status":"end"}
Если будет признак ТОП события, то добавим параметр "top":
{"cur_time": LinuxTimestamp, "sport_id":integer, "sport_name":"varchar", "match_id":integer, "top": boolean
Например:
{"cur_time": 1567655125, "sport_id":3545, "sport_name":"eSports", "match_id":51570039, "top": true ...
{"cur_time": 1567655125, "sport_id":3545, "sport_name":"eSports", "match_id":51570039, "top": false ...
На осоновании данных сообщений, мы сопостовляем ваш список событий с нашим, и уже точно соотносим их друг с другом, например название события в Фонбете может быть:
Guadalajara Chivas vs Correcaminos, а у вас:
Guadalajara-Chivas vs Correcaminos UAT и мы их соотнесем друг к другу.
Примеры ИД и названия видов спорта из Фонбета:
1 Football
2 Hockey
3 Basketball
4 Tennis
9 Volleyball
1434 Futsal
41963 Lottery
11624 Beach volley
29086 Esports
3088 Table tennis
1439 Field hockey
19936 Sports simulators
11630 Badminton
44943 Rocket League
40479 Cyberfootball
45827 Cybertennis
11627 Floorball
40481 Cyberbasket
Шаг 2 - Получение катировок по событию(матчу)
---------------------------------------------
Катировки по матчу мы сейчас получаем с переодичностью в 1 секунду, в вашем случае должно быть проще, будут веб-хуки а значит не будет необходимости обращаться все вермя.
Данные имеют следующий формат:
{
"match_id": {
"sport_id": 1, --ИД вида спорта
"sport_name": "Football", --Название вида спорта
"league": "Football. U21. European Championships. Qualifying rounds", --Название Лиги, пока не обязательно
"name": "Scotland U21 – San Marino (U21)", --Название события (как правило соединение названия команд)
"score": "0:0", ----Счет формата 00:00
"time": "00:00", -- время матча
"minute": float, -- минута матча
"time_req": linux_timestamp,
"kofs": {
"Человеко-понятное (ЧП) название катровки": {
"time_req": linux_timestamp, --Время получения данных о катировке с сайта
"value": float(2), --Значние катировки
"vector": "UP", -- Вектор движения коф-та, может быть расчитан как теоритически, например ТБ 1,5 всегда со временем идет в верх по теории, так и практически на основании предыдущих значений, на первом этапе можно опустить
--История движения катировок, на первом этапе можно опустить
"hist": {
"time_change": linux_timestamp,--Время, последнего изменения катировки
"avg_change": [float(2)], --Сколько секунд катировка жила
"order": [float(2)]--Значение катировки
}
},
Пример:
{
"16393140": {
"sport_id": 1,
"sport_name": "Football",
"league": "Football. U21. European Championships. Qualifying rounds",
"name": "Scotland U21 – San Marino (U21)",
"score": "0:0",
"score_1st": "https://www.youtube.com/watch?v=DtWAEIqxNok",
"time": "3:02",
"minute": 3.033333333333333,
"time_req": 1567708392,
"kofs": {
"ТБ(4.5)": {
"time_req": 1567708392,
"event": 16393140,
--Тут информация для проставления, в вашем случае ее можно опустить, т.к. ставка будет на вашей стороне
"value": 2.08,
"param": 450,
"factor": "930",
"score": "0:0",
"vector": "UP",
--История по катировке, на первом этапе ее можно опустить
"hist": {
"time_change": 1567708390.5915496,
"avg_change": [
25,
29,
58,
1
],
"order": [
2.02,
2.03,
2.05,
2.08
]
}
},
"П1": {
"time_req": 1567708392,
"event": 16393140,
"value": 1.03,
"param": "",
"factor": "921",
"score": "0:0",
"vector": "UP",
"hist": {
"time_change": 1567708360.3585796,
"avg_change": [
85,
31
],
"order": [
1.02,
1.03
]
}
}
}
},
"16393160": {
"sport_id": 1,
"sport_name": "Football",
"league": "Football. U20. Elite League",
"name": "England U20 – Netherlands U20",
"priority": 4,
"score": "0:0",
"score_1st": "",
"time": "31:39",
"minute": 31.65,
"time_req": 1567708391,
"kofs": {
"12": {
"time_req": 1567708391,
"event": 16393160,
"value": 1.35,
"param": "",
"factor": "1571",
"score": "0:0",
"vector": "UP",
"hist": {
"time_change": 1567708274.8928626,
"avg_change": [
116
],
"order": [
1.35
]
}
}
}
}
}
Если какие то параметры вы тут видите не описанные, значит их можно опустить.
Шаг 3 - Проставление вилки
--------------------------