Skip to content

Commit c6b6737

Browse files
committed
Add VkAudio.search_iter; Update VkAudio.search
1 parent 5c92183 commit c6b6737

2 files changed

Lines changed: 31 additions & 12 deletions

File tree

vk_api/audio.py

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"""
88

99
import re
10+
from itertools import islice
1011

1112
from bs4 import BeautifulSoup
1213

@@ -165,23 +166,41 @@ def search_user(self, owner_id=None, q=''):
165166
if i['owner_id'] == owner_id
166167
]
167168

168-
def search(self, q='', offset=0):
169+
def search(self, q, count=50):
169170
""" Искать аудиозаписи
170171
172+
:param q: запрос
173+
:param count: количество
174+
"""
175+
176+
return islice(self.search_iter(q), count)
177+
178+
def search_iter(self, q, offset=0):
179+
""" Искать аудиозаписи (генератор)
180+
171181
:param q: запрос
172182
:param offset: смещение
173183
"""
174184

175-
response = self._vk.http.get(
176-
'https://m.vk.com/audio',
177-
params={
178-
'act': 'search',
179-
'q': q,
180-
'offset': offset
181-
}
182-
)
185+
while True:
186+
response = self._vk.http.get(
187+
'https://m.vk.com/audio',
188+
params={
189+
'act': 'search',
190+
'q': q,
191+
'offset': offset
192+
}
193+
)
194+
195+
tracks = scrap_data(response.text, self.user_id)
196+
197+
if not tracks:
198+
break
199+
200+
for track in tracks:
201+
yield track
183202

184-
return scrap_data(response.text, self.user_id)
203+
offset += 50
185204

186205

187206
def scrap_data(html, user_id):

vk_api/tools.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def get_all_iter(self, method, max_count, values=None, key='items',
4242
:param key: ключ элементов, которые нужно получить
4343
:type key: str
4444
45-
:param limit: ограничение на кол-во получаемых элементов,
45+
:param limit: ограничение на количество получаемых элементов,
4646
но может прийти больше
4747
:type limit: int
4848
@@ -127,7 +127,7 @@ def get_all_slow_iter(self, method, max_count, values=None, key='items',
127127
:param key: ключ элементов, которые нужно получить
128128
:type key: str
129129
130-
:param limit: ограничение на кол-во получаемых элементов,
130+
:param limit: ограничение на количество получаемых элементов,
131131
но может прийти больше
132132
:type limit: int
133133

0 commit comments

Comments
 (0)