· 6 years ago · Jan 08, 2020, 03:09 PM
1import os
2from random import randint
3from requests import *
4import vk
5
6# Указываем ключи доступа, id группы и версию API
7# YANDEX_API_KEY = '***'
8VK_API_ACCESS_TOKEN = '436b22f85a0235bf6cf07cc86e51bc872188cf60abe7775c53974f9d3285d08681e4567bbbe765158a30e'
9VK_API_VERSION = '5.103'
10GROUP_ID = 123
11
12session = vk.Session(access_token=VK_API_ACCESS_TOKEN)
13api = vk.API(session, v=VK_API_VERSION)
14
15# Первый запрос к LongPoll: получаем server и key
16longPoll = api.groups.getLongPollServer(group_id=GROUP_ID)
17server, key, ts = longPoll['server'], longPoll['key'], longPoll['ts']
18
19while True:
20 # Последующие запросы: меняется только ts
21 longPoll = post('%s' % server, data={'act': 'a_check',
22 'key': key,
23 'ts': ts,
24 'wait': 25}).json()
25
26 if longPoll['updates'] and len(longPoll['updates']) != 0:
27 for update in longPoll['updates']:
28 if update['type'] == 'message_new':
29 print(update)
30 # Помечаем сообщение от этого пользователя как прочитанное
31 api.messages.markAsRead(peer_id=update['object']['from_id'])
32 # Запрашиваем имя пользователя
33 name = api.users.get(user_ids=update['object']['from_id'])[0][
34 'first_name']
35 api.messages.send(user_id=update['object']['from_id'],
36 random_id=0,
37 message='Привет, %s 😉' % name)
38
39 # Скачиваем аудиофайл "Привет, %name%" с Яндекс.SpeechKit и загружаем на сервера ВК
40 # with open('audio.mp3', 'wb') as out_stream:
41 # req = get('https://tts.voicetech.yandex.net/generate?text=Привет, %s!&format=opus&lang=ru-RU&speaker=jane&emotion=good&key=%s'%(name, YANDEX_API_KEY), stream = True)
42 # for chunk in req.iter_content(1024):
43 # out_stream.write(chunk)
44 # afile = post(api.docs.getMessagesUploadServer(type = 'audio_message', peer_id = update['object']['from_id'])['upload_url'], files = {'file': open('audio.mp3', 'rb')}).json()['file']
45 # doc = api.docs.save(file = afile, title = 'Voice message')['audio_message']
46 # print(doc)
47
48 # Загружаем картинку на сервера ВК
49 # pfile = post(api.photos.getMessagesUploadServer(peer_id = update['object']['from_id'])['upload_url'], files = {'photo': open('python.jpeg', 'rb')}).json()
50 # photo = api.photos.saveMessagesPhoto(server = pfile['server'], photo = pfile['photo'], hash = pfile['hash'])[0]
51
52 # Отправляем сообщение "Привет, %name%" с аудиосообщением из Яндекс.SpeechKit и картинкой
53
54 # Удаляем файл Яндекс.SpeechKit
55 # os.remove(os.path.join(os.path.abspath(os.path.dirname(__file__)), 'audio.mp3'))
56 # Меняем ts для следующего запроса
57 ts = longPoll['ts']