Ребят, переношу все свои тесты в другое место, поэтому как бы вкратце, код страницы
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>XML LOAD TEST</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
function seconds2time(seconds) {
var hours = Math.floor(seconds / 3600);
var minutes = Math.floor((seconds - (hours * 3600)) / 60);
var seconds = seconds - (hours * 3600) - (minutes * 60);
var time = "";
if (hours != 0) {
time = hours + ":";
}
if (minutes != 0 || time !== "") {
minutes = (minutes < 10 && time !== "") ? "0" + minutes : String(minutes);
time += minutes + ":";
}
if (time === "") {
if (seconds === 0) {
time = "";
} else {
time = "0:" + seconds;
}
} else {
time += (seconds < 10) ? "0" + seconds : String(seconds);
}
return time;
}
function time2seconds(str) {
var p = str.split(':'),
s = 0,
m = 1;
while (p.length > 0) {
s += m * parseInt(p.pop(), 10);
m *= 60;
}
return s;
}
function show_metadata() {
var timestamp = new Date().getTime();
$.ajax({
url: 'load_xml.php?' + timestamp,
dataType: 'xml',
success: function(data) {
var xml_node = $('ELEM_LIST', data);
var playing = xml_node.find('ELEM[STATUS="playing"]');
var artist = playing.find('ARTIST').text();
var title = playing.find('NAME').text();
var start_date = playing.find('START_DATE').text();
var start_time = playing.find('START_TIME').text();
var duration = playing.find('DURATION').text();
$.get('server_time.php?' + timestamp, function(server_time) {
$('#contdown').html(time2seconds(duration) + Date.parse(start_date + ' ' + start_time) / 1000 - server_time + time_correction);
});
$('#meta').html(artist + ' - ' + title);
},
error: function(data) {
console.log('Error loading XML data');
}
});
}
var time_correction = 10;
setInterval(function() {
var timer = Math.max(0, parseInt($('#contdown').html()));
if (timer > 0) {
timer--;
} else {
show_metadata();
}
$('#contdown').html(timer);
$('#time').html(seconds2time(timer));
}, 1000);
})
</script>
</head>
<body>
<div id="meta"></div>
<div id="time"></div>
<div id="contdown" style="display:none;">0</div>
</body>
</html>
PHP которые в примере
load_xml.php :
<?php
echo file_get_contents("(path to xml file)?" . time());
?>
это чтобы не заморачиваться с mixed content, ну понятно ....
server_time.php :
Это опорное время сервера, тут тоже надеюсь все понятно, берем с xml и отсюда - ну одно должно быть...
В идеале там надо пройти типы до music или что там показывется в джине, плюсануть к duration...
Короче, дальше сами сможете))