| Net-Amazon documentation | Contained in the Net-Amazon distribution. |
Net::Amazon::Property::DigitalMusicTrack- Class for MP3 downloads on amazon.com
use Net::Amazon;
# ...
if($resp->is_success()) {
for my $prop ($resp->properties) {
print join("/", $_->artists(), " ",
$_->title(), " ",
$_->year(), " ";
$_->running_time(), " ";
}
Net::Amazon::Property::DigitalMusicTrack is derived from
Net::Amazon::Property and on top of the all-purpose
methods the base class provides, it offers specialized accessors for
popular digital music track parameters.
Returns a list of the artists. There's also a artist() method
which just returns the first artist.
Returns the binding of the digital music track, such as MP3 Download.
Returns the genre as a string.
Returns the music label as a string.
Returns the manufacturer as a string.
Returns the publisher as a string.
Returns the release date as a string formatted YYYY-MM-DD.
Returns the studio as a string.
Returns the title as a string.
Returns the track sequence number of this song from its released CD.
Running time of this track in seconds.
Initializes an object by passing a hash of hashes structure containing
the XML data returned from the service. Usually, this is just used by
Net::Amazon internally to initialize objects for on backcoming
data.
Check out Net::Amazon::Property for all-purpose accessors, like
year, OurPrice, ListPrice, etc.
Christopher Boumenot, <boumenot+na@gmail.com>
Copyright 2009 by Christopher Boumenot <boumenot+na@gmail.com>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Net-Amazon documentation | Contained in the Net-Amazon distribution. |
###################################################################### package Net::Amazon::Property::DigitalMusicTrack; ###################################################################### use warnings; use strict; use base qw(Net::Amazon::Property); __PACKAGE__->make_accessor($_) for qw( binding genre label manufacturer publisher release_date studio title track_sequence running_time); __PACKAGE__->make_array_accessor($_) for qw(artists); ################################################## sub new { ################################################## my($class, %options) = @_; my $self = $class->SUPER::new(%options); bless $self, $class; # Bless into this class if(exists $options{xmlref}) { $self->init_via_xmlref($options{xmlref}); } return $self; } ################################################## sub artist { ################################################## my($self, $nameref) = @_; # Only return the first artist return ($self->artists($nameref))[0]; } ################################################## sub init_via_xmlref { ################################################## my($self, $xmlref) = @_; $self->SUPER::init_via_xmlref($xmlref); my $ref = $xmlref->{ItemAttributes}; # It could either be a Creator (and?)/or an Artist my @artists; for my $artist (@{$ref->{Creator}}) { push @artists, $artist->{content}; } for my $artist (@{$ref->{Artist}}) { push @artists, $artist; } $self->artists(\@artists); $self->binding($ref->{Binding}); $self->genre($ref->{Genre}); $self->label($ref->{Label}); $self->manufacturer($ref->{Manufcaturer}); $self->publisher($ref->{Publisher}); $self->release_date($ref->{ReleaseDate}); $self->running_time($ref->{RunningTime}->{content}); $self->studio($ref->{Studio}); $self->title($ref->{Title}); $self->track_sequence($ref->{TrackSequence}); my $year = 0; if (defined $ref->{ReleaseDate}) { $year = (split(/\-/, $ref->{ReleaseDate}))[0]; } $self->year($year); } ################################################## sub as_string { ################################################## my($self) = @_; return join('/', $self->artists) . ", " . '"' . $self->title. '"' . ", " . $self->year . ", " . $self->_best_effort_price() . ", " . $self->Asin; } 1; __END__