ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
7   •   Посмотреть все темы

Парсинг файла DJin Lite в status-json'е

 

9
Евгений @Evgeniy_SHibeko
Здравствуйте форумчане, на данный момент используем DJin как вещалку, он выдаёт название текущего+следующего трека в таком стиле:
  1. <?xml version="1.0" encoding="utf-8" ?><ELEM_LIST><ELEM PLAYER_NAME="TRANCESTATION.RU VK.COM/TRSTATION" SCH_ID="0" SCH_NAME="Default" STATUS="playing"><START_TIME>02:58:07</START_TIME><START_DATE>2017-11-04</START_DATE><BLK_TYPE>М</BLK_TYPE><TYPE>М</TYPE><NAME>Don't Forget Me</NAME><ARTIST>Abide</ARTIST><AUTHOR></AUTHOR><ALBUM></ALBUM><DBID></DBID><FILE_NAME>D:\site_radio\music\trance\TR120816_006.mp3</FILE_NAME><DURATION>00:03:45</DURATION></ELEM><ELEM PLAYER_NAME="TRANCESTATION.RU VK.COM/TRSTATION +79789267837" SCH_ID="0" SCH_NAME="Default" STATUS="preloaded"><BLK_TYPE>М</BLK_TYPE><TYPE>М</TYPE><NAME>Safe Inside You</NAME><ARTIST>Rising Star ft. Betsie Larkin</ARTIST><AUTHOR></AUTHOR><ALBUM></ALBUM><DBID></DBID><FILE_NAME>D:\site_radio\music\trance\TR230816_014.mp3</FILE_NAME><DURATION>00:04:39</DURATION></ELEM></ELEM_LIST>

Подскажите, какой вид должен иметь файл status-json.xsl на сервере, чтобы на выходе получилось только артист - название.
По форуму искал, ссылки на годноту мёртвые....
Юзаю Icecast

Отредактировано Evgeniy_SHibeko - 04.11.2017
0
419
gyurgin_ @gyurgin_
Нифига не понятно при чем тут джин.. Тем более json тут при чем если надо онлу текст...
  1. <xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
  2. <xsl:output omit-xml-declaration="yes" method="text" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="no" encoding="UTF-8" /><xsl:strip-space elements="*"/>
  3. <xsl:template match = "/icestats" >
  4. <xsl:for-each select="source">
  5. <xsl:if test="artist"><xsl:value-of select="artist" /> - </xsl:if><xsl:value-of select="title" />
  6. </xsl:for-each>
  7. </xsl:template>
  8. </xsl:stylesheet>

Вот такой файл делаем и в вебрут айскаста, выдаст artist - title.

0
9
Евгений @Evgeniy_SHibeko
Сделал на сервере как сказано, но чуда не случилось - **********

0
245
radio_good @radio_good
спросите в группе у администратора или email vk.com/radioedge данное радио тоже работает на Djin и у них точно есть готовый написанный парсер под xml Djin'a /// может быть подскажут/продадут ..
если этого не случиться, то на фрилансе с пометкой DJin точно найдется исполнитель.

Отредактировано radio_good - 04.11.2017
0
419
gyurgin_ @gyurgin_
Evgeniy.SHibeko пишет:

Сделал на сервере как сказано, но чуда не случилось - **********

Вот что сделали то? Совсем без мозгов, сохраняем под ДРУГИМ именем, например metadata.xsl и обращаемся к нему так:
тут_все как_было/metadata.xsl?mount=/нужный_поток

Отредактировано gyurgin_ - 04.11.2017
0
9
Евгений @Evgeniy_SHibeko
Спокойнее, знал бы как сделать - не спрашивал. Запилил как вы написали второй раз, в отдельном файле, по ссылке всё по-старому **********

0
245
radio_good @radio_good
да откуда ваш icecast знает что такое </ELEM></ELEM_LIST> ? icecast работает со cвоими секциями и блоками xml

Вам нужно вывести название трека из джина на сайт и в плееры сл. чтоль ?
в качестве encoder у вас что работает ?
обратитесь за помощью тем кто работает с джином ... здесь на сайте есть парочка людей ..

можно здесь спросить еще .. vk.com/wall-51940928_33217
+ по-моему на сайте джин-лайт в FAQ есть инфо о том как вывести название титров на сайт
вопрос очень распространенный для джина и новичков )

Отредактировано radio_good - 04.11.2017
0
9
Евгений @Evgeniy_SHibeko
radio_good пишет:


Вам нужно вывести название трека из джина на сайт и в плееры сл. чтоль ?
в качестве encoder у вас что работает ?
обратитесь за помощью тем кто работает с джином ... здесь на сайте есть парочка людей ..

Да, по сути так, чтобы название писалось на отдельную страничку, а с неё уже во все места.
Использую RadioCaster.

0
419
gyurgin_ @gyurgin_
Удалил, смотрим рецепт ниже

Отредактировано gyurgin_ - 10.11.2017
0
9
Евгений @Evgeniy_SHibeko
gyurgin_ пишет:

Да вам xml разобрать всего навсего... Нахрена было тогда про status-json речь заводить, тока запутали всё.
********** сваял пример, код страницы смотрите, там несложно.

Спасибо тебе, добрейший человек!

0
419
gyurgin_ @gyurgin_
Ребят, переношу все свои тесты в другое место, поэтому как бы вкратце, код страницы
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  5. <title>XML LOAD TEST</title>
  6. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  7. <script>
  8. $(document).ready(function() {
  9. function seconds2time(seconds) {
  10. var hours = Math.floor(seconds / 3600);
  11. var minutes = Math.floor((seconds - (hours * 3600)) / 60);
  12. var seconds = seconds - (hours * 3600) - (minutes * 60);
  13. var time = "";
  14. if (hours != 0) {
  15. time = hours + ":";
  16. }
  17. if (minutes != 0 || time !== "") {
  18. minutes = (minutes < 10 && time !== "") ? "0" + minutes : String(minutes);
  19. time += minutes + ":";
  20. }
  21. if (time === "") {
  22. if (seconds === 0) {
  23. time = "";
  24. } else {
  25. time = "0:" + seconds;
  26. }
  27. } else {
  28. time += (seconds < 10) ? "0" + seconds : String(seconds);
  29. }
  30. return time;
  31. }
  32. function time2seconds(str) {
  33. var p = str.split(':'),
  34. s = 0,
  35. m = 1;
  36. while (p.length > 0) {
  37. s += m * parseInt(p.pop(), 10);
  38. m *= 60;
  39. }
  40. return s;
  41. }
  42. function show_metadata() {
  43. var timestamp = new Date().getTime();
  44. $.ajax({
  45. url: 'load_xml.php?' + timestamp,
  46. dataType: 'xml',
  47. success: function(data) {
  48. var xml_node = $('ELEM_LIST', data);
  49. var playing = xml_node.find('ELEM[STATUS="playing"]');
  50. var artist = playing.find('ARTIST').text();
  51. var title = playing.find('NAME').text();
  52. var start_date = playing.find('START_DATE').text();
  53. var start_time = playing.find('START_TIME').text();
  54. var duration = playing.find('DURATION').text();
  55. $.get('server_time.php?' + timestamp, function(server_time) {
  56. $('#contdown').html(time2seconds(duration) + Date.parse(start_date + ' ' + start_time) / 1000 - server_time + time_correction);
  57. });
  58. $('#meta').html(artist + ' - ' + title);
  59. },
  60. error: function(data) {
  61. console.log('Error loading XML data');
  62. }
  63. });
  64. }
  65. var time_correction = 10;
  66. setInterval(function() {
  67. var timer = Math.max(0, parseInt($('#contdown').html()));
  68. if (timer > 0) {
  69. timer--;
  70. } else {
  71. show_metadata();
  72. }
  73. $('#contdown').html(timer);
  74. $('#time').html(seconds2time(timer));
  75. }, 1000);
  76. })
  77. </script>
  78. </head>
  79. <body>
  80. <div id="meta"></div>
  81. <div id="time"></div>
  82. <div id="contdown" style="display:none;">0</div>
  83. </body>
  84. </html>

PHP которые в примере
load_xml.php :
  1. <?php
  2. echo file_get_contents("(path to xml file)?" . time());
  3. ?>

это чтобы не заморачиваться с mixed content, ну понятно ....
server_time.php :
  1. <?php
  2. echo time();
  3. ?>

Это опорное время сервера, тут тоже надеюсь все понятно, берем с xml и отсюда - ну одно должно быть...
В идеале там надо пройти типы до music или что там показывется в джине, плюсануть к duration...
Короче, дальше сами сможете))

0





Согласие на обработку данных на нашем сайте

Продолжая просматривать страницу, вы соглашаетесь с использованием файлов «Cookie» и с Политикой конфиденциальности «Privacy».
Наверху или внизу страницы вы можете изменить валюту и язык по умолчанию. Английская версия сайта ещё находится в доработке и доступна не полностью.