Получить аудио SRC URL-адрес статуса JS - PullRequest
0 голосов
/ 01 февраля 2019

Я передаю аудио на проигрыватель из Soundcloud API.

<audio></aidio>
<source src="soundcloud-track-url"></source>

У меня есть onerror eventListener для <audio> и для <source> тегов.

Если поток не загружается(из тега источника) это вызывает onerror, но я не знаю, как это проверить, потому что предел в день уже достигнут.

Итак, моя логика: if Я получаю ошибку при загрузке src, которую я хочу разделить дальше, if это из-за "ограничений" - сделайте это, if это не из-за "ограничений" - сделайте это.

Еслив течение одного дня Soundcloud API возвращает код ответа HTTP 429 «Too Many Requests».

Как использовать информацию «HTTP 429» для получения ожидаемого результата?

Ответы [ 2 ]

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

Вам необходимо передать атрибут типа event в ваш обработчик ошибок, а затем получить его свойство target, которое указывает на элемент HTML, вызвавший ошибку.

Когда у вас есть сам элемент, легко получить его атрибут src, используя .getAttribute('src').

Получив атрибут src, вы можете fetch проверить его и проверить ошибку.статус для этого запроса.

document.getElementById("mySource").onerror = event => {
    var sourceElement = event.target;
    var audioURL = sourceElement.getAttribute("src");

    fetch(audioURL).then(function(response) {
        alert(response.status);
    });
};

Вот песочница о том, как это будет работать:

https://codepen.io/pghiran/pen/GzWdmg?editors=1010

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

Поскольку вы не предоставили никакой подсказки в своем вопросе, я просто предполагаю, что вы используете AJAX для связи с SoundCloud.

Учитывая это, вам нужно проверить свойство status вВаш xhr (XMLHttpRequest) объект.

xhr.onreadystatechange = function( e ) {

    // `xhr.status` is what you're looking for.
    // you can check if it matches your expected 429 or not 
    if ( xhr.status == 429 && xhr.readyState == 4 ) {

        // do whatever you want

    }

}

Обновление: из-за неправильного использования метода, я бы посоветовал вам прочитать эту же проблему люди и смотрят, как они это решили.

...