/** * getRandomSongs * Get random songs matching the given criteria. * Takes the optional size, genre, fromYear, toYear and music folder id in parameters. */ public static function getrandomsongs($input) { self::check_version($input, "1.2.0"); $size = $input['size']; if (!$size) { $size = 10; } $genre = $input['genre']; $fromYear = $input['fromYear']; $toYear = $input['toYear']; $musicFolderId = $input['musicFolderId']; $search = array(); $search['limit'] = $size; $search['random'] = $size; $search['type'] = "song"; $i = 0; if ($genre) { $search['rule_' . $i . '_input'] = $genre; $search['rule_' . $i . '_operator'] = 0; $search['rule_' . $i . ''] = "tag"; ++$i; } if ($fromYear) { $search['rule_' . $i . '_input'] = $fromYear; $search['rule_' . $i . '_operator'] = 0; $search['rule_' . $i . ''] = "year"; ++$i; } if ($toYear) { $search['rule_' . $i . '_input'] = $toYear; $search['rule_' . $i . '_operator'] = 1; $search['rule_' . $i . ''] = "year"; ++$i; } if ($musicFolderId) { if (Subsonic_XML_Data::isArtist($musicFolderId)) { $artist = new Artist(Subsonic_XML_Data::getAmpacheId($musicFolderId)); $finput = $artist->name; $operator = 4; $ftype = "artist"; } else { if (Subsonic_XML_Data::isAlbum($musicFolderId)) { $album = new Album(Subsonic_XML_Data::getAmpacheId($musicFolderId)); $finput = $album->name; $operator = 4; $ftype = "artist"; } else { $finput = intval($musicFolderId); $operator = 0; $ftype = "catalog"; } } $search['rule_' . $i . '_input'] = $finput; $search['rule_' . $i . '_operator'] = $operator; $search['rule_' . $i . ''] = $ftype; ++$i; } if ($i > 0) { $songs = Random::advanced("song", $search); } else { $songs = Random::get_default($size); } $r = Subsonic_XML_Data::createSuccessResponse(); Subsonic_XML_Data::addRandomSongs($r, $songs); self::apiOutput($input, $r); }