Skip to content

Commit 22f9d39

Browse files
committed
Added date time limit for tools.py get_all method
1 parent b2660ed commit 22f9d39

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

vk_api/tools.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def __init__(self, vk):
3030
self.vk = vk
3131

3232
def get_all_iter(self, method, max_count, values=None, key='items',
33-
limit=None):
33+
limit=None, dt_limit=None):
3434
""" Получить все элементы.
3535
Работает в методах, где в ответе есть count и items или users.
3636
За один запрос получает max_count * 25 элементов
@@ -51,6 +51,9 @@ def get_all_iter(self, method, max_count, values=None, key='items',
5151
:param limit: ограничение на кол-во получаемых элементов,
5252
но может прийти больше
5353
:type limit: int
54+
55+
:param dt_limit: ограничение на время публикации элемента
56+
:type dt_limit: int
5457
"""
5558

5659
values = values.copy() if values else {}
@@ -80,7 +83,11 @@ def get_all_iter(self, method, max_count, values=None, key='items',
8083
if limit and items_count >= limit:
8184
break
8285

83-
def get_all(self, method, max_count, values=None, key='items', limit=None):
86+
if dt_limit and items[len(items) - 1]['date'] <= dt_limit:
87+
break
88+
89+
def get_all(self, method, max_count, values=None, key='items', limit=None,
90+
dt_limit=None):
8491
""" Использовать только если нужно загрузить все объекты в память.
8592
8693
Eсли вы можете обрабатывать объекты по частям, то лучше
@@ -90,7 +97,8 @@ def get_all(self, method, max_count, values=None, key='items', limit=None):
9097
все данные в память
9198
"""
9299

93-
items = list(self.get_all_iter(method, max_count, values, key, limit))
100+
items = list(self.get_all_iter(method, max_count, values, key, limit,
101+
dt_limit))
94102

95103
return {'count': len(items), key: items}
96104

0 commit comments

Comments
 (0)