· 6 years ago · Jan 08, 2020, 03:04 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
12
13session = vk.Session(access_token = VK_API_ACCESS_TOKEN)
14api = vk.API(session, v = VK_API_VERSION)
15
16# Первый запрос к LongPoll: получаем server и key
17longPoll = api.groups.getLongPollServer(group_id = GROUP_ID)
18server, key, ts = longPoll['server'], longPoll['key'], longPoll['ts']
19
20while True:
21 # Последующие запросы: меняется только ts
22 longPoll = post('%s'%server, data = {'act': 'a_check',
23 'key': key,
24 'ts': ts,
25 'wait': 25}).json()
26
27 if longPoll['updates'] and len(longPoll['updates']) != 0:
28 for update in longPoll['updates']:
29 if update['type'] == 'message_new':
30 print(update)
31 # Помечаем сообщение от этого пользователя как прочитанное
32 api.messages.markAsRead(peer_id = update['object']['from_id'])
33 # Запрашиваем имя пользователя
34 name = api.users.get(user_ids = update['object']['from_id'])[0]['first_name']
35 api.messages.send(user_id = update['object']['from_id'], random_id = 0, message = 'Привет, %s 😉'%name)
36'''
37 # Скачиваем аудиофайл "Привет, %name%" с Яндекс.SpeechKit и загружаем на сервера ВК
38 with open('audio.mp3', 'wb') as out_stream:
39 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)
40 for chunk in req.iter_content(1024):
41 out_stream.write(chunk)
42 afile = post(api.docs.getMessagesUploadServer(type = 'audio_message', peer_id = update['object']['from_id'])['upload_url'], files = {'file': open('audio.mp3', 'rb')}).json()['file']
43 doc = api.docs.save(file = afile, title = 'Voice message')['audio_message']
44 print(doc)
45
46 # Загружаем картинку на сервера ВК
47 pfile = post(api.photos.getMessagesUploadServer(peer_id = update['object']['from_id'])['upload_url'], files = {'photo': open('python.jpeg', 'rb')}).json()
48 photo = api.photos.saveMessagesPhoto(server = pfile['server'], photo = pfile['photo'], hash = pfile['hash'])[0]
49'''
50 # Отправляем сообщение "Привет, %name%" с аудиосообщением из Яндекс.SpeechKit и картинкой
51
52
53 # Удаляем файл Яндекс.SpeechKit
54 # os.remove(os.path.join(os.path.abspath(os.path.dirname(__file__)), 'audio.mp3'))
55 # Меняем ts для следующего запроса
56 ts = longPoll['ts']