4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Python】requestsでwavファイルをPOSTする【POST】

Last updated at Posted at 2019-12-12

初めに

音声認識APIをHeroku上にアップしたのですが、
wavファイルをどうしたらpostして、受け取り側も取得できるのか、
文献が少なく試行錯誤したので、メモとしてのこしておきます。

keyとかuserid, passなどはセキュリティ対策です。

サーバー側

from flask import Flask, request, abort
import soundfile as sf
from io import BytesIO
import os

app = Flask(__name__)

@app.route("/webapp", methods=['POST'])
def webapp():
    webaccesskey = request.headers["KEY"]
    webaccesspassword = request.headers["PWD"]
    if webaccesskey == "ok" and webaccesspassword == "foapkun":
        try:
            if request.args.get("TYPE") == "wav_message":
                user_id = request.args.get("USERID")
                key = request.args.get("KEY")
                valid = checker(user_id, key)
                if valid == True:
                    wavdata = request.files["file"].stream
                    audio_data, samplerate = sf.read(BytesIO(wavdata.read()))
                    #ここに入れたい処理
        except:
            abort(400)
    else:
        abort(400)
    return 'OK'

def checker(user_id, key):
    valid = False
    if user_id == "user_id":
        if key == "key":
            valid = True
    return valid


if __name__ == "__main__":
    port = int(os.getenv("PORT", 5000))
    app.run(host="0.0.0.0", port=port)

requests側

import requests

class Message:
    def __init__(self):
        self.accessURL = "http://localhost:5000/webapp"
        self.accesskey = "ok"
        self.accessPASSWORD = "qiita"

    def put_wav(self, user_id, key):
        self.headers = {"KEY": self.accesskey, "PWD": self.accessPASSWORD}
        self.payload = {"TYPE": "wav_message", "USERID": user_id, "KEY": key}
        fileName = 'test.wav'
        files = {'file': open(fileName, 'rb')}
        r = requests.post(self.accessURL, headers=self.headers, params=self.payload, files=files)
        print(r.text)

if __name__ == "__main__":
    message = Message()
    message.put_wav(user_id="user_id", key="key")
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?