Ejemplo n.º 1
0
 /** Get the most popular tracks on last.fm by country.
  *
  * @param	string	country		A country name, as defined by the ISO 3166-1 country names standard. (Required)
  * @param	string	location	A metro name, to fetch the charts for (must be within the country specified). (Optional)
  * @return	array				An array of Track objects.
  *
  * @static
  * @access	public
  * @throws	Error
  */
 public static function getTopTracks($country, $location = null)
 {
     $xml = CallerFactory::getDefaultCaller()->call('geo.getTopTracks', array('country' => $country, 'location' => $location));
     $tracks = array();
     foreach ($xml->children() as $track) {
         $tracks[] = Track::fromSimpleXMLElement($track);
     }
     return $tracks;
 }
Ejemplo n.º 2
0
 /** A paginated list of all the tracks in a user's library, with play counts and tag counts.
  *
  * @param	string	$user	The user whose library you want to fetch. (Required)
  * @param	integer	$limit	Limit the amount of tracks returned (maximum/default is 50). (Optional)
  * @param	integer	$page	The page number you wish to scan to. (Optional)
  * @return	PaginatedResult	A PaginatedResult object.
  *
  * @static
  * @access	public
  * @throws	Error
  */
 public static function getTracks($user, $limit, $page)
 {
     $xml = CallerFactory::getDefaultCaller()->call('library.getTracks', array('user' => $user, 'limit' => $limit, 'page' => $page));
     $tracks = array();
     foreach ($xml->children() as $track) {
         $tracks[] = Track::fromSimpleXMLElement($track);
     }
     $perPage = Util::toInteger($xml['perPage']);
     return new PaginatedResult(Util::toInteger($xml['totalPages']) * $perPage, (Util::toInteger($xml['page']) - 1) * $perPage, $perPage, $tracks);
 }
Ejemplo n.º 3
0
 /** Get a track chart for a group, for a given date range. If no date range is supplied, it will return the most recent album chart for this group.
  *
  * @param	string	$group	The last.fm group name to fetch the charts of. (Required)
  * @param	integer	$from	The date at which the chart should start from. See {@link de.felixbruns.lastfm.Group#getWeeklyChartList Group::getWeeklyChartList} for more. (Optional)
  * @param	integer	$to		The date at which the chart should end on. See {@link de.felixbruns.lastfm.Group#getWeeklyChartList Group::getWeeklyChartList} for more. (Optional)
  * @return	array			An array of Track objects.
  *
  * @static
  * @access	public
  * @throws	Error
  */
 public static function getWeeklyTrackChart($group, $from = null, $to = null)
 {
     $xml = CallerFactory::getDefaultCaller()->call('group.getWeeklyTrackChart', array('group' => $group, 'from' => $from, 'to' => $to));
     $tracks = array();
     foreach ($xml->children() as $track) {
         $tracks[] = Track::fromSimpleXMLElement($track);
     }
     return $tracks;
 }
Ejemplo n.º 4
0
 /** Create a User object from a SimpleXMLElement.
  *
  * @param	SimpleXMLElement	$xml	A SimpleXMLElement.
  * @return	User						A User object.
  *
  * @static
  * @access	public
  * @internal
  */
 public static function fromSimpleXMLElement(SimpleXMLElement $xml)
 {
     $images = array();
     foreach ($xml->image as $image) {
         $images[Util::toImageType($image['size'])] = Util::toString($image);
     }
     return new User(Util::toString($xml->name), Util::toString($xml->realname), Util::toString($xml->url), Util::toString($xml->lang), Util::toString($xml->country), Util::toInteger($xml->age), Util::toString($xml->gender), Util::toInteger($xml->subscriber), Util::toInteger($xml->playcount), Util::toInteger($xml->playlists), $images, $xml->recenttrack ? Track::fromSimpleXMLElement($xml->recenttrack) : null, Util::toFloat($xml->match), Util::toInteger($xml->weight), Util::toInteger($xml->registered['unixtime']));
 }
Ejemplo n.º 5
0
 /** Search for a track by track name. Returns track matches sorted by relevance.
  *
  * @param	string	$track	The track name in question. (Required)
  * @param	string	$artist	Narrow your search by specifying an artist. (Optional)
  * @param	integer	$limit	Limit the number of tracks returned at one time. Default (maximum) is 30. (Optional)
  * @param	integer	$page	Scan into the results by specifying a page number. Defaults to first page. (Optional)
  * @return	PaginatedResult	A PaginatedResult object.
  *
  * @static
  * @access	public
  * @throws	Error
  */
 public static function search($track, $artist = null, $limit = null, $page = null)
 {
     $xml = CallerFactory::getDefaultCaller()->call('track.search', array('artist' => $artist, 'track' => $track, 'limit' => $limit, 'page' => $page));
     $tracks = array();
     foreach ($xml->trackmatches->children() as $track) {
         $tracks[] = Track::fromSimpleXMLElement($track);
     }
     $opensearch = $xml->children('http://a9.com/-/spec/opensearch/1.1/');
     return new PaginatedResult(Util::toInteger($opensearch->totalResults), Util::toInteger($opensearch->startIndex), Util::toInteger($opensearch->itemsPerPage), $tracks);
 }
Ejemplo n.º 6
0
 /** Get the top tracks tagged by this tag, ordered by tag count.
  *
  * @param	string	$tag	The tag name in question. (Required)
  * @return	array			An array of Track objects.
  *
  * @static
  * @access	public
  * @throws	Error
  */
 public static function getTopTracks($tag)
 {
     $xml = CallerFactory::getDefaultCaller()->call('tag.getTopTracks', array('tag' => $tag));
     $tracks = array();
     foreach ($xml->children() as $track) {
         $tracks[] = Track::fromSimpleXMLElement($track);
     }
     return $tracks;
 }
Ejemplo n.º 7
0
 /** Create a Playlist object from a SimpleXMLElement.
  *
  * @param SimpleXMLElement  $xml  A SimpleXMLElement object.
  * @return  Playlist          A Playlist object.
  *
  * @static
  * @access  public
  * @internal
  */
 public static function fromSimpleXMLElement(SimpleXMLElement $xml)
 {
     $tracks = array();
     if (isset($xml->trackList)) {
         foreach ($xml->trackList->children() as $track) {
             $tracks[] = Track::fromSimpleXMLElement($track);
         }
     }
     return new Playlist(Util::toInteger($xml->id), Util::toString($xml->title), Util::toString($xml->description), Util::toTimestamp($xml->date), Util::toInteger($xml->size), Util::toInteger($xml->duration), Util::toInteger($xml->streamable), Util::toString($xml->creator), Util::toString($xml->url), $tracks);
 }