Exemplo n.º 1
0
 /**
  * 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);
 }