Skip to content

Commit 157048a

Browse files
committed
Merge pull request #17 from python273/dev
Обновление версии до 6.0
2 parents ddeb4a8 + e98524f commit 157048a

13 files changed

Lines changed: 204 additions & 93 deletions

README.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
vk_api
22
======
33

4-
**vk_api** - модуль для использования API сайта ВКонтакте (vk.com). Пример смотрите в файле [example.py](https://github.com/python273/vk_api/blob/master/example.py)
4+
**vk_api** - модуль для написания скриптов для сайта vk.com (Вконтакте) с использованием API. Примеры в папке [examples](./examples) (python3)
55

66
Python 2 / 3
77

8-
С вопросами или советами можете [написать автору в ВК](https://vk.com/im?sel=183433824).
8+
С вопросами, пожеланиями, благодарностями [пишите сюда](https://vk.com/im?sel=183433824).
99

1010
Установка
1111
------------
1212
$ pip install vk_api
13-
14-
Для работы необходим модуль [Requests](https://github.com/kennethreitz/requests)
15-
16-
$ pip install requests

examples/capthca_handle.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# -*- coding: utf-8 -*-
2+
3+
"""
4+
@author: Kirill Python
5+
@contact: https://vk.com/python273
6+
"""
7+
8+
import vk_api
9+
10+
11+
def captcha_handler(captcha):
12+
key = input("Enter Captcha {0}: ".format(captcha.get_url())).strip()
13+
14+
# Пробуем снова отправить запрос с капчей
15+
return captcha.try_again(key)
16+
17+
18+
def main():
19+
""" Пример: обработка капчи """
20+
21+
login, password = 'python@vk.com', 'mypassword'
22+
vk = vk_api.VkApi(
23+
login, password,
24+
captcha_handler=captcha_handler # function for handle captcha
25+
)
26+
27+
try:
28+
vk.authorization()
29+
except vk_api.AuthorizationError as error_msg:
30+
print(error_msg)
31+
return
32+
33+
# some code
34+
# ...
35+
36+
if __name__ == '__main__':
37+
main()

examples/get_full_wall.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# -*- coding: utf-8 -*-
2+
3+
"""
4+
@author: Kirill Python
5+
@contact: https://vk.com/python273
6+
"""
7+
8+
import vk_api
9+
10+
11+
def main():
12+
""" Пример: получение всех постов со стены """
13+
14+
login, password = 'python@vk.com', 'mypassword'
15+
vk = vk_api.VkApi(login, password)
16+
17+
try:
18+
vk.authorization()
19+
except vk_api.AuthorizationError as error_msg:
20+
print(error_msg)
21+
return
22+
23+
tools = vk_api.VkTools(vk)
24+
25+
wall = tools.get_all('wall.get', 100, {'owner_id': '183433824'})
26+
print('Posts count:', wall['count'])
27+
28+
if wall['count']:
29+
print('First post:', wall['items'][0], '\n')
30+
31+
if wall['count'] > 1:
32+
print('Last post:', wall['items'][-1])
33+
34+
if __name__ == '__main__':
35+
main()

example.py renamed to examples/simple_example.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
"""
44
@author: Kirill Python
5-
@contact: http://vk.com/python273
6-
@license Apache License, Version 2.0, see LICENSE file
7-
8-
Copyright (C) 2014
5+
@contact: https://vk.com/python273
96
"""
107

118
import vk_api
@@ -15,21 +12,21 @@ def main():
1512
""" Пример получения последнего сообщения со стены """
1613

1714
login, password = 'python@vk.com', 'mypassword'
15+
vk = vk_api.VkApi(login, password)
1816

1917
try:
20-
vk = vk_api.VkApi(login, password) # Авторизируемся
18+
vk.authorization()
2119
except vk_api.AuthorizationError as error_msg:
22-
print(error_msg) # В случае ошибки выведем сообщение
23-
return # и выйдем
20+
print(error_msg)
21+
return
2422

2523
values = {
2624
'count': 1 # Получаем только один пост
2725
}
2826
response = vk.method('wall.get', values) # Используем метод wall.get
2927

3028
if response['items']:
31-
# Печатаем текст последнего поста со стены
32-
print(response['items'][0]['text'])
29+
print(response['items'][0])
3330

3431
if __name__ == '__main__':
3532
main()

examples/upload_photo.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# -*- coding: utf-8 -*-
2+
3+
"""
4+
@author: Kirill Python
5+
@contact: https://vk.com/python273
6+
"""
7+
8+
import vk_api
9+
10+
11+
def main():
12+
""" Пример: загрузка фото """
13+
14+
login, password = 'python@vk.com', 'mypassword'
15+
vk = vk_api.VkApi(login, password)
16+
17+
try:
18+
vk.authorization()
19+
except vk_api.AuthorizationError as error_msg:
20+
print(error_msg)
21+
return
22+
23+
upload = vk_api.VkUpload(vk)
24+
photo = upload.photo( # Подставте свои данные
25+
'D:/downloads/tube.jpg',
26+
album_id=200851098,
27+
group_id=74030368
28+
)
29+
30+
vk_url = 'https://vk.com/photo{}_{}'.format(
31+
photo[0]['owner_id'], photo[0]['id']
32+
)
33+
34+
print(photo, '\nLink: ', vk_url)
35+
36+
if __name__ == '__main__':
37+
main()

jconfig/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
"""
44
@author: Kirill Python
5-
@contact: http://vk.com/python273
5+
@contact: https://vk.com/python273
66
@license Apache License, Version 2.0, see LICENSE file
77
8-
Copyright (C) 2014
8+
Copyright (C) 2015
99
"""
1010

1111
__author__ = 'Kirill Python'
1212
__version__ = '1.2'
13-
__email__ = 'siberianpython@gmail.com'
13+
__email__ = 'python273@ya.ru'
1414
__contact__ = 'https://vk.com/python273'
1515

1616

jconfig/jconfig.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
"""
44
@author: Kirill Python
5-
@contact: http://vk.com/python273
5+
@contact: https://vk.com/python273
66
@license Apache License, Version 2.0, see LICENSE file
77
8-
Copyright (C) 2014
8+
Copyright (C) 2015
99
"""
1010

1111
import os

setup.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,22 @@
66
@contact: http://vk.com/python273
77
@license Apache License, Version 2.0, see LICENSE file
88
9-
Copyright (C) 2014
9+
Copyright (C) 2015
1010
'''
1111

1212
from distutils.core import setup
13+
14+
1315
setup(
1416
name='vk_api',
15-
version='5.2',
17+
version='6.0',
1618
author='Kirill Python',
17-
author_email='siberianpython@gmail.com',
19+
author_email='python273@ya.ru',
1820
url='https://github.com/python273/vk_api',
19-
description='Module to use API vk.com',
21+
description='Module for writing scripts for vk.com (vkontakte)',
2022
download_url='https://github.com/python273/vk_api/archive/master.zip',
2123
license='Apache License, Version 2.0, see LICENSE file',
2224

2325
packages=['vk_api', 'jconfig'],
26+
install_requires=['requests'],
2427
)

vk_api/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
"""
44
@author: Kirill Python
5-
@contact: http://vk.com/python273
5+
@contact: https://vk.com/python273
66
@license Apache License, Version 2.0, see LICENSE file
77
8-
Copyright (C) 2014
8+
Copyright (C) 2015
99
"""
1010

1111
__author__ = 'Kirill Python'
12-
__version__ = '5.2'
13-
__email__ = 'siberianpython@gmail.com'
12+
__version__ = '6.0'
13+
__email__ = 'python273@ya.ru'
1414
__contact__ = 'https://vk.com/python273'
1515

1616
import sys

vk_api/vk_api.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
"""
44
@author: Kirill Python
5-
@contact: http://vk.com/python273
5+
@contact: https://vk.com/python273
66
@license Apache License, Version 2.0, see LICENSE file
77
8-
Copyright (C) 2014
8+
Copyright (C) 2015
99
"""
1010

1111
import jconfig
@@ -32,13 +32,16 @@ class VkApi(object):
3232
def __init__(self, login=None, password=None, number=None, sec_number=None,
3333
token=None,
3434
proxies=None, captcha_handler=None, config_filename=None,
35-
api_version='5.24', app_id=2895443, scope=2097151):
35+
api_version='5.33', app_id=2895443, scope=2097151):
3636
"""
3737
:param login: Логин ВКонтакте
3838
:param password: Пароль ВКонтакте
39-
:param number: Номер для проверке безопасности (указывать, если
40-
в качестве логина используется не номер)
41-
:param sec_number:
39+
:param number: Номер для проверки безопасности (указывать, если
40+
в качестве логина используется не номер)
41+
:param sec_number: Часть номера, которая проверяется при проверке
42+
безопасности (указывать, если точно известно, что
43+
вводить и если автоматическое получение кода из
44+
номера работает не корректно)
4245
4346
:param token: access_token
4447
:param proxies: proxy server
@@ -47,7 +50,7 @@ def __init__(self, login=None, password=None, number=None, sec_number=None,
4750
:param captcha_handler: Функция для обработки капчи
4851
:param config_filename: Расположение config файла
4952
50-
:param api_version: Версия API (default: '5.21')
53+
:param api_version: Версия API (default: '5.33')
5154
:param app_id: Standalone-приложение (default: 2895443)
5255
:param scope: Запрашиваемые права (default: 2097151)
5356
"""
@@ -72,8 +75,8 @@ def __init__(self, login=None, password=None, number=None, sec_number=None,
7275
self.http = requests.Session()
7376
self.http.proxies = proxies # Ставим прокси
7477
self.http.headers = { # Притворимся браузером
75-
'User-agent': 'Mozilla/5.0 (Windows NT 6.1; rv:31.0)'
76-
' Gecko/20100101 Firefox/31.0'
78+
'User-agent': 'Mozilla/5.0 (Windows NT 6.1; rv:38.0) '
79+
'Gecko/20100101 Firefox/38.0'
7780
}
7881

7982
self.last_request = 0.0
@@ -83,7 +86,9 @@ def __init__(self, login=None, password=None, number=None, sec_number=None,
8386
CAPTCHA_ERROR_CODE: captcha_handler or self.captcha_handler
8487
}
8588

86-
if login and password:
89+
def authorization(self):
90+
""" Полная авторизация с получением токена """
91+
if self.login and self.password:
8792
self.sid = self.settings['remixsid']
8893
self.token = self.settings['access_token']
8994

@@ -262,6 +267,7 @@ def need_validation_handler(self, error):
262267
pass
263268

264269
def http_handler(self, error):
270+
""" Handle connection errors """
265271
pass
266272

267273
def method(self, method, values=None, captcha_sid=None, captcha_key=None):
@@ -298,8 +304,8 @@ def method(self, method, values=None, captcha_sid=None, captcha_key=None):
298304
if delay > 0:
299305
time.sleep(delay)
300306

301-
response = self.http.post(url, values)
302307
self.last_request = time.time()
308+
response = self.http.post(url, values)
303309

304310
if response.ok:
305311
response = response.json()
@@ -471,7 +477,7 @@ def get_url(self):
471477
"""
472478

473479
if not self.url:
474-
self.url = 'http://api.vk.com/captcha.php?sid={}'.format(self.sid)
480+
self.url = 'https://api.vk.com/captcha.php?sid={}'.format(self.sid)
475481

476482
return self.url
477483

0 commit comments

Comments
 (0)