Как сделать цикл команд CURL? - PullRequest
0 голосов
/ 14 октября 2019

Я использую сервис Watson Speech-To-Text Lite и пытаюсь найти способ автоматизировать загрузку новых аудиофайлов для транскрибирования. Я очень плохо знаком с Bash, и поэтому мне не ясны даже более элементарные термины - поэтому я нахожу проблему трудной для поиска решения.

Для одного варианта использования я запускаю следующееfile (мой ключ API опущен как 'MY APIKEY')

curl -X POST -u "apikey: MY APIKEY" --header "Content-Type: audio/flac" --data-binary "@audiofile_1.flac" "https://gateway-lon.watsonplatform.net/speech-to-text/api/v1/recognize?model=en-US_BroadbandModel&speaker_labels=true" > C:/Users/outputpath/output_1.txt

Чего я по сути пытаюсь достичь, так это избавиться от необходимости вручную вводить и повторно вводить имена аудиофайлов и выводить их. Поэтому, если бы у меня было три (или более) аудиофайла (т. Е. Audiofile_1, 2 и 3.flac), я хотел бы создать выходной файл, соответствующий каждому аудиофайлу - некоторый псевдо-код, который может помочь объяснить, что я имею в виду

files = [file_1, file_2, file_3]

for file_x in files:
    run curl command
    save as output_x

1 Ответ

1 голос
/ 14 октября 2019

Ты почти понял. Вам просто нужно изучить синтаксис оболочки:

files=("file_1" "file_2" "file_3")

for file_x in "${files[@]}"
do
    curl -X POST -u "apikey: MY APIKEY" --header "Content-Type: audio/flac" --data-binary "@${file_x}" "https://gateway-lon.watsonplatform.net/speech-to-text/api/v1/recognize?model=en-US_BroadbandModel&speaker_labels=true" > "C:/Users/outputpath/${file_x}.txt"
done

Сначала вы создаете массив files со списком файлов. Затем вы перебираете эти файлы и запускаете команду curl для каждого из них.

...