Download purchased MP3s from Amazon more than one time? Not without intervention from tech support.
I began trying Amazon's MP3 download service recently, and was initially pleased with the results. After purchasing a track I could visit the 'Your Media Library' section of the site and download my previous purchases, even if I was at another computer.
Not anymore.
Amazon will let me pay for the same track twice(albeit with a recently added warning), but there is no longer an option on the site to "redownload" tracks already purchased, _unless_ you contact Amazon's technical support. The following video screenshot displays the warning without any option to download content previously purchased.
This is further complicated by a lacking website implementation of the Amazon MP3 Downloader application, which only works if the Amazon MP3 site sends an 'AMZ' file to download cover art and create Artist\Album folder directory trees. If the site sends you an MP3 file instead of an AMZ, you get the pleasure of creating your Artist\Album folder directory trees manually!
Should you choose to cancel the download after purchasing, the site will not let you try to download the track again unless Customer support triggers a magic bit. And should you receive an MP3 file download prompt instead of an AMZ file that works with the Amazon MP3 Downloader, the whole cycle repeats itself.
At the very least Amazon could allow users an option to default to downloading AMZ files instead of a manual MP3 download.
Allowing users to choose to download AMZ files would have prevented me from attempting to download files to the same computer twice. But there was not a choice. After initiaing a purchase, the MP3 download was initiated, and that was it. I tried leaving the Amazon MP3 Downloader running, reinstalling it, and modifying the browser settings to force AMZ files to open in the Amazon MP3 Downloader instead of the default associated AMZ app(which was already the Amazon MP3 Downloader). Again, if an .MP3 download is already started by the Amazon web site, it's too late to try a second time to get the AMZ file to launch.
This also means accessing your purchased tracks on another computer is no longer a feature. It's been recently yanked.
Amazon was pretty quick to respond to my inquiry, but could they do more?
Here's the text of their response:
Hello from Amazon.com.
Amazon MP3 files are only available for download at the time of purchase. We display information about the items you've purchased from the Amazon MP3 Music Downloads store in Your Media Library so you can keep track of what you've bought and discover similar items that may be available. However, the files are not stored there and cannot be downloaded again after purchase without intervention from Amazon MP3 Support on an exceptional basis. This has always been the case with our downloads.
Because you can only download an MP3 file once upon purchase, we encourage you to make back-up copies of your MP3 Music files to ensure you will always have access.
[info about browser/cookie config removed]
Amazon claims this functionality has never been available. Methinks it has been removed in the last month, because I was able to download tracks more than once that I had purchased via the 'Your Media Library' without contacting support.
Amazon could do more to ensure that their customers receive the digital media purchased. Amazon's customer service has been handled well in other areas... why put the burden on the consumer, when the site can allow multiple downloads of previously purchased content?
Is this a digital iteration of forcing consumers to buy media more than once, similar to moves from VHS to DVD to Blu-Ray?
Nope. It's worse. In this case the consumer's second purchase does not include any additional value. The burdens of data integrity and recoverability are placed upon the consumer. Don't be concerned, because Amazon has a service that can be used for backups, too.
Last night, a close, personal friend sent me e-mail asking me for a "script fu" favor. It would seem that my close, personal friend had somehow acquired a collection of audio files and these files were in a format that his personal media player device would not play. The audio files were encoded in the MPEG-4 Audio (M4A) format and my close, personal friend's personal media player device supports a wide range of formats including FLAC, WAV, Ogg Vorbis, MP3, and perhaps some others I can't remember at the moment. My friend (who is my close, personal friend) asked me if I could "whip something up" that could convert all his files to MP3 format.
What a nice challenge!
For a few moments, I considered tackling this problem with a shell script using time-tested command line utilities like find, sed, and grep, but ultimately, I decided to engage this challenge using Perl.
I chose Perl over shell scripting mostly because the directory tree that needed to be traversed to access all the files had file and directory entries that contained an arbitrary number of whitespace characters and other not-so-friendly-to-shell characters. While I'm sure this could have been accomodated, it didn't seem like fun and I got excited thinking about how this could be handled with Perl.
It's a fun exercise to write Perl scripts that use opendir, readdir, and other standard Perl functions to interact with the host filesystem, but I knew there were some valuable CPAN modules, maybe even some "indistinguishable from magic" modules maintained by Damian Conway, I could use.
The first module I decided to use was File::Find::Rule which provides an alternative interface to File::Find.
use File::Find::Rule; ... my @files = File::Find::Rule->file() ->name('*.m4a') ->in( '/path/to/root/of/files' );
File::Find is somewhat of a relic in terms of how it operates. It doesn't provide any kind of object oriented interface for using it and requires the user to pass subroutine references which isn't very pretty. File::Find::Rule, on the other hand, works relatively nicely.
To convert the files, once we had them in a list, I figured we'd use the veritable bastion of audio versatility that is mplayer and use its built-in ability to construct standalone WAV files from media files. To do this at the command line, use the pcm audio output option and specify a filename:
mplayer -ao pcm:file=myfile.wav someotherfile.m4a
There are a couple quadrillion other options and parameters you could also add, but this is the general gist of it.
After each MPEG-4 audio file is decoded and dumped into a WAV file, we can use lame to encode the WAV to MP3 format.
The lame utility, in its simplest form, works like this:
lame myfile.wav output.mp3
Like mplayer, there are a ridiculous number of options, switches, parameters, chants, and secret handshakes you can provide to make lame do its job faster, slower, on one foot, etc.
One of the, uhm... inconveniences, yeah, of calling other programs from a Perl script is that it isn't easy to tell what's going on or how things went on... or off, or whatever. The same is generally true in a shell scripting environment, but that's not important right now. What is important is that our good man Damian has done a fantastic job of helping make this easier by providing the Perl6::Builtins module to the Perl community. Apparently, this incongruent behavior when calling external applications is not an issue in the long-forthcoming next major version of Perl (Perl 6). Damian has just ported the nice behavior back to Perl 5.
The Perl6::Builtins module gives us a new system function we can use which behaves like a good system function should.
use Perl6::Builtins qw(system); ... system('/usr/bin/mplayer', '-ao', 'pcm:file=/tmp/out.wav', $file) or die "Could not dump $file to WAV: $!";
Using the standard system function, the above code would almost always result in a call to die because the normal exit status of the system call, while sensibly being zero because there are no errors during program execution, means something else entirely to Perl. Instead, Perl detects failure.
With Damian's indistinguishable-from-magic help, sanity is restored.
So, below is the whole script, with some minor things changed to protect the... uhm... lonely.
I'm not proud of the code I wrote to create the destination paths. It works, but not gracefully.
#!/usr/bin/perl use Readonly; use File::Find::Rule; use Perl6::Builtins qw/system/; Readonly my $sourcetree = '/home/friend/audio/Zarry Lotter (Cantonese)'; Readonly my $sourcetree_exp = '\/home\/friend/audio\/Zarry Lotter \(Cantonese\)'; Readonly my $desttree => '/home/friend/audio/zarry_lotter_cantonese_mp3'; my @files = File::Find::Rule->file() ->name('*.m4a') ->in( $sourcetree ); if( ! -d $desttree) { mkdir $desttree || die "Could not make directory: $!"; } foreach my $file (@files) { my $dest = $file; $dest =~ s{$sourcetree_exp}{$desttree}; $dest =~ s{m4a}{mp3}; my @path_components = split /\//, $dest; # Remove common leading components for (1 .. 5) { shift @path_components ; } # Remove filename pop @path_components; my $path = $desttree; foreach my $comp (@path_components) { if(! -d "$path/$comp") { warn "Making directory [$path/$comp]"; mkdir "$path/$comp"; } $path = "$path/$comp"; } # Use mplayer to dump file to WAV system('/usr/bin/mplayer', '-ao', 'pcm:file=/tmp/out.wav', $file) or die "Could not dump $file to WAV: $!"; # Use lame to make an mp3 system('/usr/bin/lame', '/tmp/out.wav', $dest) or die "Could not convert $file to MP3: $!"; }
This week’s Program of the Week is a bit ahead of its release. The package is Codec Buddy, and is currently slated for release in Fedora 8 tomorrow.
Codec Buddy, with a little help from the Fedora and Fluendo development teams has grown into something that could be great. I see Codec Buddy really helping those who want to use and play non-free media sources from within Fedora. If you are currently running rawhide, you probably already know about this, but very soon, many other people will start to understand how Codec Buddy works as well.
One of the goals of the Fedora Project is to be free of any proprietary software. Though I don’t see that many people using Fedora without at least a few proprietary components, media codecs, drivers, etc. Maybe one day…we can always hope.
To that end, I am a big media buff. I regularly watch TV shows and movies that use proprietary codecs. As an example, most people don’t realize that using the reverse engineered DVD encoding provided by DVD Jon could be considered illegal. Fedora doesn’t want to be encumbered by these risks, and truthfully, I don’t blame them one bit. Considering that my backlog of mp3s and DVD rips will require an additional bit of software not normally included with Fedora, I think this is a great software solution. Give the user what they want without compromising the integrity of the project.
Codec Buddy is provided to help the average Joe understand the world of media formats. Its job was originally to provide a short description of why Fedora doesn’t include this in its distribution. Then point to where one might find more information about these formats. Codec Buddy has been altered a little, but attempts to accomplish the same thing using the Fluendo website.
Fluendo is the company that employs many of the individuals that work on the gstreamer project. Its quite a noble project, providing media codecs (installable formats) for many of the audio and video we like to use every day. Its great to have open source companies like Fluendo helping open source grow.
Codec Buddy works by launching a small application when someone tries to access a media codec not currently on the system. For instance, I’ve attempted to play a show I’ve downloaded.
Launch Totem
Open the file
Start the video
As the video attempts to play, a prompt appears, indicating the media isn’t supported. Codec buddy then provides a few options to enable playback for this particular media format.
The available items are MP3 Audio Decoder, MPEG Playback Bundle and MPEG4 Part 2 Video Decoder. By default only the MP3 Audio Decoder, which is also the only codec that will be installed without payment, is checked. The other two codecs are available for a small fee, which helps Fluendo to provide these codecs.
Clicking the “Get Selected” button will immediately start the download of the MP3 Audio Decoder (if it was selected).
A license agreement then appears, make sure to read this and if you agree, click Accept.
Once the agreement is complete, its time to purchase the remaining codecs. Choose Start Web Browser and in a few moments, the Fluendo website should appear. This should allow you to purchase the remaining codecs needed for the video I want to watch.
The Fluendo website has a good list of available codecs beyond the choices available in Codec Buddy.
The purchase will seem similar to many others on the web, add things to the cart, and pay.
Fluendo is a good start. I’m sure there will be many people interested in purchasing these codecs here. However, I believe however, that the biggest problem is that most people can get these codecs for free on Windows, Mac and even other Linux distributions. So far, the thing I feel is missing here is the explanation for why charge for these codecs and who benefits.
Fluendo is a great resource and provides some kick-ass codecs. If there is no explanation as to why we need to pay for something that one can get for free. Potential customers who don’t understand the reasoning behind it might go elsewhere, or worse even, choose another distro or operating system.
I love fedora for the freedom it gives me to choose my path. I love fedora for its focus on making sure things are free and open, both monetarily and in liberty. I love fedora for trying things like Codec Buddy, I want it to succeed. I hope that with a few suggestions, both fedora and Fluendo can make Codec Buddy the informational tool that it was originally intended.
Cheers,
Herlo
Looking for some music to include in a multimedia project, or maybe on a telephone system? These tracks are high quality and royalty-free. The author requires Attribution under a Creative Commons license, and accepts donations.
I enjoyed the African and Celtic tracks - here's one example.





