Skip to content

Commit cd86caa

Browse files
committed
Fix VkTools
1 parent 738a353 commit cd86caa

3 files changed

Lines changed: 35 additions & 21 deletions

File tree

vk_api/utils.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
Copyright (C) 2016
99
"""
1010

11+
try:
12+
import simplejson as json
13+
except ImportError:
14+
import json
15+
1116

1217
def search_re(reg, string):
1318
""" Поиск по регулярке """
@@ -42,3 +47,10 @@ def code_from_number(prefix, postfix, number):
4247
return
4348

4449
return number[prefix_len:-postfix_len]
50+
51+
52+
def sjson_dumps(*args, **kwargs):
53+
kwargs['ensure_ascii'] = False
54+
kwargs['separators'] = (',', ':')
55+
56+
return json.dumps(*args, **kwargs)

vk_api/vk_requestspool.py

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@
33
import sys
44
from collections import namedtuple
55

6-
try:
7-
import simplejson as json
8-
except ImportError:
9-
import json
10-
6+
from .utils import sjson_dumps
117

128
if sys.version_info.major == 2:
139
range = xrange
@@ -73,7 +69,7 @@ def method(self, method, values=None):
7369
""" Добавляет запрос в пулл
7470
7571
:param method: метод
76-
:type method: basestring
72+
:type method: str
7773
7874
:param values: параметры
7975
:type values: dict
@@ -96,13 +92,13 @@ def method_one_param(self, method, key, values, default_values=None):
9692
""" Использовать, если изменяется значение только одного параметра
9793
9894
:param method: метод
99-
:type method: basestring
95+
:type method: str
10096
10197
:param default_values: одинаковые значения для запросов
10298
:type default_values: dict
10399
104100
:param key: ключ изменяющегося параметра
105-
:type key: basestring
101+
:type key: str
106102
107103
:param values: список значений изменяющегося параметра (max: 25)
108104
:type values: list
@@ -178,13 +174,6 @@ def execute_one_param(self):
178174
self.one_param['return'].set_result(result)
179175

180176

181-
def sjson_dumps(*args, **kwargs):
182-
kwargs['ensure_ascii'] = False
183-
kwargs['separators'] = (',', ':')
184-
185-
return json.dumps(*args, **kwargs)
186-
187-
188177
def check_one_method(pool):
189178
""" Возвращает True, если все запросы в пулле к одному методу """
190179

@@ -233,12 +222,6 @@ def gen_code_many_methods(pool):
233222

234223

235224
# Полный код в файле vk_procedures
236-
code_get_all_items = """
237-
var m=%s,n=%s,b="%s",v=n;var c={count:m,offset:v}+%s;var r=API.%s(c),k=r.count,
238-
j=r[b],i=1;while(i<25&&v+m<=k){v=i*m+n;c.offset=v;j=j+API.%s(c)[b];i=i+1;}
239-
return {count:k,items:j,offset:v+m};
240-
""".replace('\n', '')
241-
242225
code_requestspoll_one_method = """
243226
var p=%s,i=0,r=[];while(i<p.length){r.push(API.%s(p[i]));i=i+1;}return r;
244227
""".replace('\n', '')

vk_api/vk_tools.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
import sys
1212

13+
from .utils import sjson_dumps
14+
1315

1416
if sys.version_info.major == 2:
1517
range = xrange
@@ -35,12 +37,21 @@ def get_all_iter(self, method, max_count, values=None, key='items',
3537
За один запрос получает max_count * 25 элементов
3638
3739
:param method: метод
40+
:type method: str
41+
3842
:param values: параметры
43+
:type values: dict
44+
3945
:param max_count: максимальное количество элементов,
4046
которое можно получить за один раз
47+
:type max_count: int
48+
4149
:param key: ключ элементов, которые нужно получить
50+
:type key: str
51+
4252
:param limit: ограничение на кол-во получаемых элементов,
4353
но может прийти больше
54+
:type limit: int
4455
"""
4556

4657
if values:
@@ -125,3 +136,11 @@ def get_all_slow(self, method, max_count, values=None, key='items',
125136

126137
items = list(self.get_all_slow(method, max_count, values, key, limit))
127138
return {'count': len(items), key: items}
139+
140+
141+
# Полный код в файле vk_procedures
142+
code_get_all_items = """
143+
var m=%s,n=%s,b="%s",v=n;var c={count:m,offset:v}+%s;var r=API.%s(c),k=r.count,
144+
j=r[b],i=1;while(i<25&&v+m<=k){v=i*m+n;c.offset=v;j=j+API.%s(c)[b];i=i+1;}
145+
return {count:k,items:j,offset:v+m};
146+
""".replace('\n', '')

0 commit comments

Comments
 (0)