Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 6, 2017 21:19:50

Firsak
Зарегистрирован: 2017-02-06
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение кода запроса с Python 2 на Python 3

Доброго времени суток.
Я пишу программу и для её реализации мне необходимо, чтобы она делала запрос на гугл сервер и возвращала мне ответ. Код который мне нужен я нашел на хабре, но он для 2 питона, а мне необходимо сделать это в 3-ем. Вероятно подскажите как изменить его.
Сам код:

 def Send():
    global ANSWER
    url = 'https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-EN'
    flac=open('output.flac',"rb").read()
    header = {'Content-Type' : 'audio/x-flac; rate=16000'}
    req = urllib2.Request(url, flac, header)
    data = urllib2.urlopen(req)
    a = data.read()
    ANSWER = eval(a)
    if ANSWER['status'] == 5:
        print 'Sorry, I do not understand you.'
        ANSWER = 0
 
    else:
     ANSWER = ANSWER['hypotheses'][0]['utterance']
     print ANSWER
    return ANSWER

Импортирую:
 import pyaudio
import wave
import requests
import os

Взял часть кода из SpeechRecognition, получается что-то такое:
 def Send(LANG, key=None):
    if key is None: 
        key = "AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw"
    url = 'https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang='+LANG
    flac = open('D:\project\output.flac',"rb").read()
    header = {'Content-Type' : 'audio/x-flac; rate=16000'}
    
    request = Request(url, data=flac, header)
 
    try:
        response = urlopen(request, timeout=self.operation_timeout)
    except HTTPError as e:
        raise RequestError("recognition request failed: {}".format(e.reason))
    except URLError as e:
        raise RequestError("recognition connection failed: {}".format(e.reason))
    response_text = response.read().decode("utf-8")
 
    actual_result = []
    for line in response_text.split("\n"):
        if not line: continue
        result = json.loads(line)["result"]
        if len(result) != 0:
            actual_result = result[0]
            break
    
    return actual_result


Но видимо не до конца правильно, так как выдает ошибку

File “D:\project\prj.py”, line 54
flac = open('D:\project\output.flac',“rb”).read()
^
IndentationError: unindent does not match any outer indentation level

Подскажите, что и как изменить, может что добавить.
Заранее спасибо.

Отредактировано Firsak (Фев. 6, 2017 21:22:41)

Офлайн

#2 Фев. 7, 2017 09:03:26

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Изменение кода запроса с Python 2 на Python 3

Отступ в строке flac = open('D:\project\output.flac',“rb”).read() неправаильный, проверьте содержимое исходника, в приведенном коде в том месте вроде отступы допустимы и не должны приводить к ошибке.

Офлайн

#3 Фев. 7, 2017 09:21:33

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Изменение кода запроса с Python 2 на Python 3

scidam
отступы допустимы и не должны приводить к ошибке.
Скорее всего автор намешал пробелов с табами



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version