Mal 'ne Frage
Freitag, 8.1.2016, 10:17 > daMaxSind hier Webcoder anwesend?
Ich versuche, den schlimm-overheadigen laut.fm-Player da rechts noch mal "in schlank" nach zu coden. Das Ergebnis sieht bisher gar nicht mal so schlecht aus:
http://phpfiddle.org/main/code/z4iu-63hk
Könnt ihr per "Run - F9"-Knopf laufen lassen.
Songtitel, Artist und Playlist werden schon korrekt ausgelesen und im Player angezeigt. Wenn der Titel länger ist als das Display breit, wird automatisch gescrollt, ansonsten bleibt der Text einfach stehen. So weit, so gut.
Aber: die Daten werden nicht aktualisiert, wenn der Song wechselt. Die Funktion updateStationInfo() wird zwar zuverlässig alle 5 Sekunden aufgerufen (hatte ich mit einer Zufallszahl hinter dem Songtitel getestet), aber der aktuelle Titel kommt trotzdem nicht.
Habt ihr eine Ahnung, was ich übersehe?
Tja, file_get_contents wird nicht reloaded. Du vermischt da serverside PHP und clientside JS.
@sergej: ja, irgendwie hatte ich sowas geahnt, aber das muss doch trotzdem irgendwie gehen, der Player da in der Sidebar kanns doch auch.
Schau mal auf eine andere Site von mir ( http://www.pcradio.de ) linke Seite unten.
Diesen kannst du anpassen ( Größe, farbe u.s.w. )
Wenn du die dateien haben willst .......
Würde das alles in JS machen.
$.getJSON('http://api.laut.fm/station/todamax/current_song', function (json_song) {
alert(json_song.title)});
Noch Jquery mit einbinden.
Keine Experte hier aber scheint so zu funktionieren.
function updateStationInfo() {
$.getJSON('http://api.laut.fm/station/todamax/current_song', function (json_song) {
songTitle = json_song.title;
artist = json_song.artist.name;
playlist = json_song.current_playlist.name;
});
}
Jo, so funktioniert es. Benutz halt JQuery, vllt gibts für "$.getJSON" was anderes
Das sieht ja schon ganz gut aus, aber nicht übersehen, dass die Playlist aus einer anderen Quelle kommt. Warte noch ein bisschen, ich bin auch gleich soweit.
Stimmt, hatte ich übersehen.
Analog dazu halt noch die andere URL zur current_playlist abfragen und playlist zuweisen.
btw Warum kein json_encode, wenn du es wieder an JS übergibst ?
Getestet und für gut befunden:
function loadJSON(url, callback) {
var fgc = new XMLHttpRequest();
fgc.overrideMimeType("application/json");
fgc.open('GET', url, true);
fgc.onreadystatechange = function() {
if (fgc.readyState == 4 && fgc.status == "200") {
// Required use of an anonymous callback as .open will NOT return a value but simply returns undefined in asynchronous mode
callback(fgc.responseText);
}
};
fgc.send(null);
}
function updateSongInfo() {
var url = 'http://api.laut.fm/station/todamax/current_song';
loadJSON(url, function(response) {
// Parse JSON string into object
var json_song = JSON.parse(response);
songTitle = json_song.title;
artist = json_song.artist.name;
});
}
function updatePlaylistInfo() {
var url = 'http://api.laut.fm/station/todamax';
loadJSON(url, function(response) {
// Parse JSON string into object
var json_playlist = JSON.parse(response);
playlist = json_playlist.current_playlist.name;
});
}
updateSongInfo();
updatePlaylistInfo();
setInterval(updateRadioDisplay, 30);
setInterval(updateSongInfo, 5000);
setInterval(updatePlaylistInfo, 5000);
Jungs, ihr seid ja der Hammer! Ich bin im Moment zu verkatert, um mir das anzugucken, aber morgen werde ich da einen Blick drauf werfen.
Ihr seid spitze! Danke! *knutsch*
Möglicherweise ist sergejs Lösung die schönere und schnellere da auf JQuery verzichtet wird, dafür ist meine kürzer
@sergej, @riag: ich werde die jquery Variante nehmen, weil jquery in WordPress sowieso am Start ist.
Auch wenn Sergejs Variante zugegebenermaßen die "korrektere" ist. Ihr beiden seid SUPER und gemeinsam sind wir stark! Ich werde das Ding jetzt mal so einbinden und mich dann daran machen, dem Ding noch eine Start/Stop-Funktionalität zu verpassen, damit der Player nicht mehr im Popup aufgehen muss.
@da]v[ax: Jquery war auch meine erste Wahl, aber dann hab ich's gelassen weil Dein Code nun mal natives JS war. Wenn ich das gewusst hätte.
@sergej: