Показать сообщение отдельно
  #1 (permalink)  
Старый 09.05.2020, 12:00
Новичок на форуме
Отправить личное сообщение для vengenz0 Посмотреть профиль Найти все сообщения от vengenz0
 
Регистрация: 09.05.2020
Сообщений: 2

Парсинг названия аудиопотока из XSL
Всем привет! Я ньюфаг, и понемногу пытаюсь изучать JS на примере чужого кода. У меня есть рабочий код для вывода названия трека на jQuery, но теперь я хочу обойтись без jQuery. В поисках наткнулся на этот код:

function getTitle(){
    if(typeof meta.title != "undefined"){
        return meta.title;
    } else {
        return defaultSongTitle
    }
}

var radioMetaUpdated = new Event('radioMetaUpdated');

audio.addEventListener('playing', function () {
    console.log('plays');
    chrome.browserAction.setIcon({
        path: {"38": 'pause.png'}
    });

    if (metaRefreshTimer !== null) {
        clearInterval(metaRefreshTimer);
        console.log('clearInterval');
    }
    function refreshMeta() {
        function reqListener() {
            var new_meta = JSON.parse(this.responseText);
            new_meta.title = new_meta.artist + ' - ' + new_meta.track;
            if (new_meta.title != getTitle()){
                meta = new_meta;
                audio.dispatchEvent(radioMetaUpdated);
                chrome.browserAction.setTitle({"title": new_meta.title});
                gaSendEvent('User', 'listening', new_meta.title);
            }
        }

        var oReq = new XMLHttpRequest();
        oReq.addEventListener("load", reqListener);
        oReq.open("GET", "http://api.radioskovoroda.com:3000/api/stream/current/radio");
        oReq.send();
    }
    refreshMeta();
    metaRefreshTimer = setInterval(refreshMeta, 5000);
});


Проблема в том, что этот код отлично работает для "своего" аудиопотока, ведь у него данные о композиции хранятся в переменных "artist" и "track", но когда я его пытаюсь приладить под нужды моего (в котором данные о композиции хранятся в одной переменной "title"), то все ломается и не работает:

function getTitle(){
    if(typeof meta.title != "undefined"){
        return meta.title;
    } else {
        return defaultSongTitle
    }
}

var radioMetaUpdated = new Event('radioMetaUpdated');

audio.addEventListener('playing', function () {
    console.log('plays');
    chrome.browserAction.setIcon({
        path: {"38": 'pause.png'}
    });

    if (metaRefreshTimer !== null) {
        clearInterval(metaRefreshTimer);
        console.log('clearInterval');
    }
    function refreshMeta() {
        function reqListener() {
            var new_meta = JSON.parse(this.responseText);
            new_meta.title = new_meta[0].title;
            if (new_meta.title != getTitle()){
                meta = new_meta;
                audio.dispatchEvent(radioMetaUpdated);
                chrome.browserAction.setTitle({"title": new_meta.title});
                gaSendEvent('User', 'listening', new_meta.title);
            }
        }

        var oReq = new XMLHttpRequest();
        oReq.addEventListener("load", reqListener);
        oReq.open("GET", "http://live.sovaradio.ru:8000/stream");
        oReq.send();
    }
    refreshMeta();
    metaRefreshTimer = setInterval(refreshMeta, 5000);
});


Неделю уже бьюсь
Заранее большое спасибо!

Последний раз редактировалось vengenz0, 09.05.2020 в 12:04.
Ответить с цитированием