Форум программистов, компьютерный форум CyberForum.ru

Python: Сети

Войти
Регистрация
Восстановить пароль
 
Dikoobraz
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 19
#1

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

06.02.2017, 20:27. Просмотров 164. Ответов 1
Метки нет (Все метки)

Доброго времени суток.
Я пишу программу и для её реализации мне необходимо, чтобы она делала запрос на гугл сервер и возвращала мне ответ. Код который мне нужен я нашел на хабре, но он для 2 питона, а мне необходимо сделать это в 3-ем. Вероятно подскажите как изменить его или посоветуете, где почитать информацию о запросах. Пробовал вникнуть в requests, но не могу найти связи.
Сам код:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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


Заранее спасибо.

Добавлено через 31 минуту
Взял часть кода из SpeechRecognition, получается что-то такое:
Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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)
 
    # obtain audio transcription results
    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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2017, 20:27     Изменение кода запроса с Python 2 на Python 3
Посмотрите здесь:

Программы на Python, сайты с использованием PHP/Python/SQL/HTML+CSS+JS
Python Python socket telnet, потоки и ответ сервера
Python Написать скрипт на языке Python
Функции python совместимость с с telnetlib Python
Получение и изменение ip адреса Python
Python Windows socket server python + socket client js
Как в Python 3 получить icmp пакет Python
Python Сокеты Python
Python Python подключение по ssh с автоматическим вводом пароля
HTTP. Python 27 Python
Python Парсинг Ajax Python

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dondublon
1186 / 873 / 101
Регистрация: 17.03.2012
Сообщений: 5,877
Записей в блоге: 5
07.02.2017, 10:07     Изменение кода запроса с Python 2 на Python 3 #2
Цитата Сообщение от Dikoobraz Посмотреть сообщение
IndentationError: unindent does not match any outer indentation level
Ругается на отступы. Отступы в 2-м и 3-м устроены одинаково, так что, видимо, поменялось что-то ещё.

Цитата Сообщение от Dikoobraz Посмотреть сообщение
но он для 2 питона, а мне необходимо сделать это в 3-ем. Вероятно подскажите как изменить его или посоветуете, где почитать информацию о запросах.
В третьем питоне, в недрах requests, произошла замена, там, где была строка, теперь байты. Вероятно, дело в этом.
Yandex
Объявления
07.02.2017, 10:07     Изменение кода запроса с Python 2 на Python 3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru