-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtracker.py
74 lines (54 loc) · 2.54 KB
/
tracker.py
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
# Мониторинг доск
from typing import List
import dvach
import time
text_limit = 155 # Длина строки вывода в консоль
# Ключевые слова. Если список пустой, то выводятся все треды.
KEY_WORDS = [
# "цуиь",
# "mp4"
]
def print_new_threads(new_threads: List[dvach.Thread]):
for thread in new_threads:
if not thread.IsOk(KEY_WORDS):
continue
board_name = '{0:5}'.format(thread.board_name)
comment_formatted = ('{0:' + str(text_limit) + '}').format(thread.comment[:text_limit:])
print(f"/{board_name} | {comment_formatted} | {thread.get_link}")
# Если операционная система linux, то можно отправить уведомление
# os.system(f'notify-send -t 25000 \"/{board_name} {thread.comment}\"')
if __name__ == '__main__':
board_names = 'b news sex v hw gg dev soc rf ma psy fet'
boards = []
# Добавить все доски в общий список
for board_name in board_names.split(' '):
board_json = dvach.Board.json_download(board_name)
boards.append(dvach.Board.from_json(board_json))
del board_json
while True:
# Мониторинг обновлений
new_threads = []
# Заполнить список новыми тредами
for i in range(len(boards)):
b = boards[i]
# Скачать доску с новыми тредами
try:
board_json = dvach.Board.json_download(b.name)
updated_board = dvach.Board.from_json(board_json)
except:
print('.', end='')
time.sleep(3)
continue
# Сравнить скачанную доску с существующей
new = b.get_new_threads(updated_board.threads)
# Добавить все новые треды в общий список
# Так как это словарь, цикл перебирает ключи
for key in new.keys():
new_threads.append(new[key])
# Заменить старую доску новой, чтобы потом сравнивать с новой
boards[i].threads = updated_board.threads
time.sleep(1)
# Вывести новые треды
print_new_threads(new_threads)
# Задержка между обновлениями
time.sleep(15)