12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- /* GNU FM -- a free network service for sharing your music listening habits
- Copyright (C) 2009 Free Software Foundation, Inc
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- /**
- * Generates linked data URIs for various concepts including scrobble events,
- * artists, albums and tracks. General technique is to create a dbtune.org
- * URI if we have the appropriate MusicBrainz ID. Otherwise, create a URI
- * based on the scrobble time if known. Lastly, create one based on the libre.fm
- * artist page.
- */
- require_once($install_path . 'data/Server.php');
- function identifierScrobbleEvent ($username, $artist, $track, $album, $time, $mbid = null, $ambid = null, $lmbid = null) {
- if (!($username && $artist && $track && $time)) {
- return null;
- }
- $microhash = substr(md5($artist . '//' . $track), 0, 4);
- return sprintf('%s#%s.%s', Server::getUserURL($username), rawurlencode($time), rawurlencode($microhash));
- }
- function identifierArtist ($username, $artist, $track, $album, $time, $mbid = null, $ambid = null, $lmbid = null) {
- if (!empty($ambid)) {
- return sprintf('http://dbtune.org/musicbrainz/resource/artist/%s', strtolower($ambid));
- }
- $u = identifierScrobbleEvent($username, $artist, $track, $album, $time, $mbid, $ambid, $lmbid) . '.artist';
- if ($u != '.artist') {
- return $u;
- }
- return sprintf('%s#artist', Server::getArtistURL($artist));
- }
- function identifierAlbum ($username, $artist, $track, $album, $time, $mbid = null, $ambid = null, $lmbid = null) {
- if (!empty($lmbid)) {
- return sprintf('http://dbtune.org/musicbrainz/resource/record/%s', strtolower($lmbid));
- }
- $u = identifierScrobbleEvent($username, $artist, $track, $album, $time, $mbid, $ambid, $lmbid) . '.album';
- if ($u != '.album') {
- return $u;
- }
- return sprintf('%s#album', Server::getAlbumURL($artist, $album));
- }
- function identifierTrack ($username, $artist, $track, $album, $time, $mbid = null, $ambid = null, $lmbid = null) {
- if (!empty($mbid)) {
- return sprintf('http://dbtune.org/musicbrainz/resource/track/%s', strtolower($mbid));
- }
- $u = identifierScrobbleEvent($username, $artist, $track, $album, $time, $mbid, $ambid, $lmbid) . '.track';
- if ($u != '.track') {
- return $u;
- }
- return sprintf('%s#track', Server::getTrackURL($artist, $album, $track));
- }
|