NAME
WWW::TinySong - Get free music links from tinysong.com
SYNOPSIS
use WWW::TinySong qw(tinysong);
my $ua = WWW::TinySong::ua;
$ua->timeout(10);
$ua->env_proxy;
for(tinysong("we are the champions")) {
printf("%s", $_->{song});
printf(" by %s", $_->{artist}) if $_->{artist};
printf(" on %s", $_->{album}) if $_->{album};
printf(" <%s>\n", $_->{url});
}
DESCRIPTION
tinysong.com is a web app that can be queried for a song and returns a tiny URL, allowing you to listen to the song for free online and share it with friends. WWW::TinySong is a Perl interface to this service, allowing you to programmatically search its underlying database. (Yes, for those who are curious, the module currently works by scraping.)
FUNCTIONS
The module defines the functions described below. tinysong
implements the main functionality of this module and is the only function that may be imported. The others are utility functions.
- WWW::TinySong::tinysong( QUERY_STRING [, LIMIT ])
-
Searches tinysong.com for QUERY_STRING, giving up to LIMIT results. LIMIT defaults to 10 if not
defined
. Returns an array in list context or the top result in scalar context. Return elements are hashrefs with keysqw(album artist song url)
. Their values will be the empty string if not given by the website. Here's a quick script to demonstrate:#!/usr/bin/perl use WWW::TinySong qw(tinysong); use Data::Dumper; print Dumper tinysong("a hard day's night", 3);
...and its output on my system at the time of this writing:
$VAR1 = { 'album' => 'A Hard Day\'s Night', 'artist' => 'The Beatles', 'song' => 'A Hard Day\'s Night', 'url' => 'http://tinysong.com/21q3' }; $VAR2 = { 'album' => 'A Hard Day\'s Night', 'artist' => 'The Beatles', 'song' => 'And I Love Her', 'url' => 'http://tinysong.com/2i03' }; $VAR3 = { 'album' => 'A Hard Day\'s Night', 'artist' => 'The Beatles', 'song' => 'If I Fell', 'url' => 'http://tinysong.com/21q4' };
- WWW::TinySong::ua( [ USER_AGENT ] )
-
Returns the user agent object used for all retrievals, first setting it to USER_AGENT if it's specified. Defaults to a
new
LWP::UserAgent. You can customize this object as in the "SYNOPSIS".If you decide to replace the user agent altogether, you don't have to use a LWP::UserAgent: the only requirement is that the object you use can
get
a URL and return a response object. - WWW::TinySong::service( [ URL ] )
-
Returns the web address of the service used by this module, first setting it to URL if it's specified. Defaults to http://tinysong.com/.
BE NICE TO THE SERVERS
Please don't abuse the servers. If you anticipate making a large number of requests, don't make them too frequently. There are several CPAN modules that can help you make sure your code is nice. Try, for example, LWP::RobotUA as the user agent:
use WWW::TinySong qw(tinysong);
use LWP::RobotUA;
my $ua = LWP::RobotUA->new('my-nice-robot/0.1', 'me@example.org');
WWW::TinySong::ua($ua);
# tinysong() should now be well-behaved
SEE ALSO
http://tinysong.com/, LWP::UserAgent, LWP::RobotUA
BUGS
Please report them: http://rt.cpan.org/Public/Dist/Display.html?Name=WWW-TinySong
AUTHOR
Miorel-Lucian Palii, <mlpalii@gmail.com>
COPYRIGHT AND LICENSE
Copyright (C) 2009 by Miorel-Lucian Palii
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.