скачать аудио файл с textreader.surge.sh с помощью curl - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь отправить запрос скручиваемости на этот сайт: https://textreader.surge.sh/.Я хочу отправить текст, чтобы сервер дал мне аудиофайл этого текста, поскольку это программа преобразования текста в речь.

Кто-нибудь знает, как это написать?

1 Ответ

0 голосов
/ 18 февраля 2019

сначала сделайте запрос HTTP GET для https://textreader.surge.sh/, затем выполните запрос HTTP OPTIONS для https://us-central1-sunlit-context-217400.cloudfunctions.net/streamlabs-tts с пустым телом и заголовками http Access-Control-Request-Method: POST и Access-Control-Request-Headers: content-type и Origin: https://textreader.surge.sh и убедитесь, чтоответ в буквальном смысле ok (enter image description here), затем выполните HTTP-запрос POST к https://us-central1-sunlit-context-217400.cloudfunctions.net/streamlabs-tts с заголовками Referer: https://textreader.surge.sh/ и Content-Type: application/json;charset=utf-8 и Origin: https://textreader.surge.sh, и тело POST содержит данные "text":"<the text you wish spoken here>","voice":"Brian"} закодированный в JSON, ответ выглядит так:

{
    "success": true,
    "speak_url": "https://polly.streamlabs.com/v1/speech?OutputFormat=ogg_vorbis&Text=penis&VoiceId=Brian&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIHKNQTJ7BGLEFVZA/20190218/us-west-2/polly/aws4_request&X-Amz-Date=20190218T112454Z&X-Amz-SignedHeaders=host&X-Amz-Expires=900&X-Amz-Signature=07652663d5024414ae4b4087fa39f9eaa8b912cc04dc7a5d7abecdaed5585396"
}

теперь просто отправьте HTTP-запрос GET на «URL-адрес динамика» с заголовками HTTP Referer: https://textreader.surge.sh/ и Origin: https://textreader.surge.sh, и вот, ответ:Ваше аудио в формате ogg / vorbis (которое в основном похоже на непатентованную версию MP3 без патентов и роялти)

  • Удивительно, но этот веб-сайт вообще не использует куки.

с PHP / hhb_curl это будет выглядеть

<?php
declare (strict_types = 1);
require_once('hhb_.inc.php');
$hc = new hhb_curl('', true);
$hc->exec('https://textreader.surge.sh');
$response = $hc->setopt_array(array(
    CURLOPT_CUSTOMREQUEST => 'OPTIONS',
    CURLOPT_HTTPHEADER => array(
        'Access-Control-Request-Method: POST',
        'Access-Control-Request-Headers: content-type',
    ),
    CURLOPT_URL => 'https://us-central1-sunlit-context-217400.cloudfunctions.net/streamlabs-tts',
))->exec()->getStdOut();
if (trim($response) !== "ok") {
    throw new \LogicException("unexpected response from https://us-central1-sunlit-context-217400.cloudfunctions.net/streamlabs-tts: {$response}");
}
$json = $hc->setopt_array(array(
    CURLOPT_URL => 'https://us-central1-sunlit-context-217400.cloudfunctions.net/streamlabs-tts',
    CURLOPT_CUSTOMREQUEST => null,
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => json_encode(array(
        'text' => 'the text you wish spoken here',
        'voice' => 'Brian'
    )),
    CURLOPT_HTTPHEADER => array(
        'Referer: https://textreader.surge.sh/',
        'Content-Type: application/json;charset=utf-8',
        'Origin: https://textreader.surge.sh'
    )
))->exec()->getStdOut();
//var_dump($json);
$data = json_decode($json, true);
$ogg_vorbis_location = $data['speak_url'];
$ogg_vorbis_binary = $hc->setopt(CURLOPT_HTTPGET, 1)->exec($ogg_vorbis_location)->getStdOut();
file_put_contents("voice.ogg",$ogg_vorbis_binary);
echo "audio saved to voice.ogg.\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...