javascript — Icecast json-status.xls, недействительный ответ json с пустым названием песни

Когда мой трек не имеет заголовка в тегах, Icecast показывает - вместо бланка
линия, поэтому я получаю JSON, как это (как пример), и этот JSON не действителен, потому что "title" : - вместо "title" : "-" , Я проверил это здесь — http://jsonlint.com/ Так что я не могу сделать json_decode(), функция возвращает null

 {
"icestats": {
"admin": "admin@admin",
"host": "host.com",
"location": "Moscow",
"server_id": "Icecast 2.4.2",
"server_start": "Fri, 15 May 2015 16:25:24 +0300",
"server_start_iso8601": "2015-05-15T16:25:24+0300",
"source": [
{
"audio_info": "channels=2;samplerate=44100;bitrate=192",
"channels": 2,
"genre": "various",
"listener_peak": 3,
"listeners": 0,
"listenurl": "http://mds.planeset.ru:8000/mds.mp3",
"samplerate": 44100,
"server_description": "Трансляции Модель Для Сборки
музыка",
"server_name": "Модель для сборки - музыка",
"server_type": "audio/mpeg",
"stream_start": "Fri, 15 May 2015 16:25:33 +0300",
"stream_start_iso8601": "2015-05-15T16:25:33+0300",
"title": -,
"dummy": null
},
{
"audio_info": "channels=2;samplerate=44100;bitrate=192",
"channels": 2,
"genre": "various",
"listener_peak": 10,
"listeners": 9,
"listenurl": "http://mds.planeset.ru:8000/mds_voice.mp3",
"samplerate": 44100,
"server_description": "Трансляции Модель Для Сборки -
голос",
"server_name": "Модель для сборки - голос",
"server_type": "audio/mpeg",
"stream_start": "Fri, 15 May 2015 16:25:33 +0300",
"stream_start_iso8601": "2015-05-15T16:25:33+0300",
"title": "Фред Саберхаген - Доброжил",
"dummy": null
}
]
}
}

Это пример JSON, как вы можете видеть в первом случае у меня есть title: - из-за этого я не могу json_decode.

Есть файл xml2json.xslt от Doeke Zanstra https://github.com/doekman/xml2json-xslt на сервере. Этот файл, я думаю, конвертирует xml в json и, возможно, есть способ добавить новое правило для конвертации - в null в пустой title линия, но я не знаю, как я могу это сделать.

0

Решение

Это похоже на ошибку в шаблоне XML to JSON, используемом Icecast (xml2json.xslt). Это не преобразование «-» в строку, возможно, потому что он думает, что это отрицательное число, хотя нет цифры. Я попытаюсь разобраться в этом, если смогу найти исправление. Если кто-то еще хочет сделать джеб и придумает хорошее решение, я был бы благодарен.

Хотелось бы отметить, что ваше утверждение о том, что на вашем треке нет тегов, неверно. Ваше исходное клиентское программное обеспечение, кажется, устанавливает заглавие поле потока в -, Если бы это установить заглавие в пустую строку, то преобразование фактически вернет null, Это связано с тем, что потоковое MP3 ужасно нарушено из-за того, как это было изначально сделано Shoutcast. Для трека нет отдельных полей метаданных, есть только один поле с именем заглавие и различные соглашения, как это используется.

Вы можете проверить это самостоятельно, установив пустую строку. http://mds.planeset.ru:8000/admin/metadata.xsl?song=&mount=%2Fmds.mp3&mode=updinfo&charset=UTF-8

Спасибо за отчет, мы можем только исправить ошибки, о которых мы знаем. (Предпочтительное место для сообщений об ошибках http://trac.xiph.org )

1

Другие решения

Если нет способа получить действительный json, используйте:

$json = str_replace( '"title": -', '"title": null', $json );

заменить "title": - в "title": null прежде чем использовать json_decode(),

1

По вопросам рекламы [email protected]