Javascript-Bibliothek zur Benutzung der laut.fm API
JavaScript Other
Clone or download
Latest commit 5a4b7ae Dec 15, 2017
Permalink
Failed to load latest commit information.
bin + tagging script Nov 21, 2011
README.textile "new" forum link Dec 15, 2017
config.ru . more verbose config.ru Nov 30, 2011
lautfm_js_tools.js + 0.9.1 Jan 27, 2017

README.textile

laut.fm Javascript API Tools

Javascript-Bibliothek zur Benutzung der laut.fm API.

Achtung: Beta-Software. Bei Problemen bitte Issue öffnen oder im laut.fm Forum melden.

Features

  • Sämtliche API-Call gehen über CORS (Cross Origin Resource Sharing). Die Unterschiede zwischen den Internet-Explorern und modernen Browsern gleichen die laut.fm API Tools aus.
  • Uhrzeiten werden in Javascript Time-Objekte konvertiert.
  • Einzel-Stations-Infos und Song-Infos können automatisch wiederholt abgerufen werden.
  • Uhrzeit-Unterschiede zwischen Server und Client werden erkannt und die nötigen Offsets automatisch eingerechnet.
  • Ein UI-loser flowplayer wird in einem Player-Objekt bereitgestellt, gesteuert über eine Javascript-Schnittstelle. Es können Songwechsel-Callbacks angegeben werden.
  • Keine weiteren Abhängigkeiten

Convenience

  • Crockfords JSON2.js Bibliothek ist enthalten. Sie stellt im Wesentlich JSON.stringify() und JSON.parse() zur Verfügung.
  • Die Flowplayer Javascript Bibliothek ist enthalten. Sie beinhaltet Javascript-Bridge für den Flowplayer.
  • Der Array-Prototyp wird mit forEach() erweitert. (siehe tutorialspoint.com).
  • Zeiten haben humanTimeShort() und humanTimeLong() für Uhrzeiten ala “12:34” und “12:34:56”.

Über den Javascript-Wrapper bereitgestellt API-Resourcen

CALLBACK_OR_OPTIONS ist die Funktion, mit der jeweils die Antwort verarbeitet werden soll.

Ab Version 0.3.0: Experimentell kann CALLBACK_OR_OPTIONS auch ein Options-Hash sein:

{container:CONTAINER, template:TEMPLATE, callback:CALLBACK}

CONTAINER und TEMPLATE können Dom-Elemente oder HTML IDs sein. TEMPLATE kann auch ein String als Template sein. Ein CALLBACK ist dann optional.

Eine komplette Einbindung des gerade laufenden Songs per Template inklusive Autoupdate sieht dann z.B. so aus:

<div id="song"></div>

<script type="text/html" id="song_template" charset="utf-8">
  <%= this.title %> - <%= this.artist.name %> (<%= this.started_at.humanTimeLong() %> - <%= this.ends_at.humanTimeLong() %>)
</script>

<script type="text/javascript" charset="utf-8">
  laut.fm.station('maxeinsdreissig').current_song({container:'song', template:'song_template'}, true);
</script>

Im Template gibt es zwei Tags: <%= ... %> (für Ausgabe) und <% ... %> für stille Auswertung. Ein Template für die letzen gespielten Songs sieht also z.B. so aus:

<script type="text/html" id="songs_template" charset="utf-8">
  <% this.forEach(function(song){ %>
    <li><%= song.started_at.humanTimeLong() %> <%= song.title %> - <%= song.artist.name %></li>
  <% }); %>
</script>

Allgmeine Resourcen

laut.fm.server_status(CALLBACK_OR_OPTIONS)
laut.fm.letters(CALLBACK_OR_OPTIONS)
laut.fm.genres(CALLBACK_OR_OPTIONS)
laut.fm.station_names(CALLBACK_OR_OPTIONS)
laut.fm.listeners(CALLBACK_OR_OPTIONS)

Stations-Auflistungen

Alle Stations-Auflistungen funktionieren mit Optionen zur Paginierung:

OPTIONS: limit und/oder offset

laut.fm.stations.all(CALLBACK_OR_OPTIONS[, OPTIONS])
laut.fm.stations.letter(LETTER, CALLBACK_OR_OPTIONS[, OPTIONS])
laut.fm.stations.numbers(CALLBACK_OR_OPTIONS[, OPTIONS])
laut.fm.stations.genre(GENRE, CALLBACK_OR_OPTIONS[, OPTIONS])

GENRE muss eins der Genres von laut.fm.genres() sein.

laut.fm.stations.names(NAMES, CALLBACK_OR_OPTIONS)

NAMES müssen Sendernamen sein, als String Komma-separiert oder als Array.

Einzel-Stations-Infos

laut.fm.station('NAME').info(CALLBACK_OR_OPTIONS)
laut.fm.station(NAME).current_song(CALLBACK_OR_OPTIONS)
laut.fm.station(NAME).last_songs(CALLBACK_OR_OPTIONS)
laut.fm.station(NAME).next_artists(CALLBACK_OR_OPTIONS)
laut.fm.station(NAME).playlists(CALLBACK_OR_OPTIONS)
laut.fm.station(NAME).schedule(CALLBACK_OR_OPTIONS)
laut.fm.station(NAME).listeners(CALLBACK_OR_OPTIONS)

Einzel-Stations-Infos mit Auto-Update

Wird den Funktionen info, current_song, last_songs oder next_artists als zweiter parameter ein true übergeben, wird der API-Call und der zugehörige Callback automatisch wiederholt:

laut.fm.station(NAME).current_song(CALLBACK_OR_OPTIONS, true)

Wechselt man zum Beispiel die current_song-Anzeige zwischen mehreren Stationen, kann man das Autoupdate wieder canceln:

var watchedStation = laut.fm.station(NAME1).current_song(CALLBACK_OR_OPTIONS, true);
  // ...
watchedStation.unwatch();
var watchedStation = laut.fm.station(NAME2).current_song(CALLBACK_OR_OPTIONS, true);

Die API-Suche

TODO: Doku

  • laut.fm.search.stations(QUERY)

Der Player

TODO: Doku

  • laut.fm.player

Release History

  • 2017-01-27 0.9.1 https support all over.
  • 2012-10-23 0.8.0 next_arists support. in production on the official laut.fm website.
  • 2012-03-26 0.7.0 added auto updates
  • 2012-03-26 0.6.0 all listeners bug fix
  • 2011-11-23 0.3.0 added experimental templating support. in production on the laut.de website.
  • 2011-11-21 0.2.0 first official release