WWW::Shorten::Bitly - Interface to shortening URLs using http://bitly.com
$Revision: 1.17 $
WWW::Shorten::Bitly provides an easy interface for shortening URLs using http://bitly.com. In addition to shortening URLs, you can pull statistics that bitly.com gathers regarding each shortened WWW::Shorten::Bitly uses XML::Simple to convert the xml response and JSON::Any to convert JSON responses for the meta info and click stats to create a hashref of the results.
WWW::Shorten::Bitly provides two interfaces. The first is the common makeashorterlink and makealongerlink that WWW::Shorten provides. However, due to the way the bitly.com API works, additional arguments are required. The second provides a better way of retrieving additional information and statistics about a bitly.com URL.
makeashorterlink
makealongerlink
use WWW::Shorten::Bitly;
my $url = "http://www.example.com";
my $tmp = makeashorterlink($url, 'MY_BITLY_USERNAME', 'MY_BITLY_API_KEY'); my $tmp1 = makealongerlink($tmp, 'MY_BITLY_USERNAME', 'MY_BITLY_API_KEY');
or
my $url = "http://www.example.com"; my $bitly = WWW::Shorten::Bitly->new(URL => $url, USER => "my_user_id", APIKEY => "my_api_key");
$bitly->shorten(URL => $url); print "shortened URL is $bitly->{bitlyurl}\n";
$bitly->expand(URL => $bitly->{bitlyurl}); print "expanded/original URL is $bitly->{longurl}\n";
my $info = $bitly->info(); say "Title of the page is " . $info->{title}; say "Created by " . $info->{created_by};
my $clicks = $bitly->clicks(); say "Total number of clicks received: " . $clicks->{user_clicks}; say "Total number of global clicks received are: " . $clicks->{global_clicks};
Please remember to check out http://code.google.com/p/bitly-api/wiki/ApiDocumentation#/v3/info for more details on V3 of the Bitly.com API
http://code.google.com/p/bitly-api/wiki/ApiDocumentation#/v3/info
Create a new bitly.com object using your bitly.com user id and bitly.com api key.
my $bitly = WWW::Shorten::Bitly->new(URL => "http://www.example.com/this_is_one_example.html", USER => "bitly_user_id", APIKEY => "bitly_api_key");
to use bitly.com's new j.mp service, just construct the bitly object like this: my $bitly = WWW::Shorten::Bitly->new(URL => "http://www.example.com/this_is_one_example.html", USER => "bitly_user_id", APIKEY => "bitly_api_key", jmp => 1);
The function makeashorterlink will call the bitly.com API site passing it your long URL and will return the shorter bitly.com version.
bitly.com requires the use of a user id and API key to shorten links.
j.mp is not currently supported for makeashorterlink
The function makealongerlink does the reverse. makealongerlink will accept as an argument either the full bitly.com URL or just the bitly.com identifier. bitly.com requires the use of a user name and API Key when using the API.
If anything goes wrong, then the function will return undef.
undef
j.mp is not currently supported for makealongerlink
Shorten a URL using http://bitly.com. Calling the shorten method will return the shortened URL but will also store it in bitly.com object until the next call is made.
my $url = "http://www.example.com"; my $shortstuff = $bitly->shorten(URL => $url);
print "biturl is " . $bitly->{bitlyurl} . "\n"; or print "biturl is $shortstuff\n";
Expands a shortened bitly.com URL to the original long URL.
Get info about a shortened bitly.com URL. By default, the method will use the value that's stored in $bitly->{bitlyurl}. To be sure you're getting info on the correct URL, it's a good idea to set this value before getting any info on it.
$bitly->{bitlyurl} = "http://bitly.com/jmv6"; my $info = $bitly->info();
say "Title of the page is " . $info->{title}; say "Created by " . $info->{created_by};
Get click thru information for a shortened bitly.com URL. By default, the method will use the value that's stored in $bitly->{bitlyurl}. To be sure you're getting info on the correct URL, it's a good idea to set this value before getting any info on it.
$bitly->{bitlyurl} = "http://bitly.com/jmv6"; my $clicks = $bitly->clicks();
say "Total number of clicks received: " . $clicks->{user_clicks}; say "Total number of global clicks received are: " . $clicks->{global_clicks};
Gets the module version number
Returns an array of hashes
my @ref = $bitly->referrers(); say "Referrers for " . $bitly->{bitlyurl}; foreach my $r (@ref) { foreach my $f (@{$r}) { say $f->{clicks} . ' from ' . $f->{referrer}; } }
Returns an array of hashesh
my @countries = $bitly->countries(); foreach my $r (@countries) { foreach my $f (@{$r}) { say $f->{clicks} . ' from ' . $f->{country}; } }
my @c = $bitly->clicks_by_day(); say "Clicks by Day for " . $bitly->{bitlyurl}; foreach my $r (@c) { foreach my $f (@{$r}) { say $f->{clicks} . ' on ' . $f->{day_start}; } }
day_start is the timecode as specified by Bitly.com. You can use the following to turn it into a DateTime Object
use DateTime; $dt = DateTime->from_epoch( epoch => $epoch );
Returns the URL for the QR Code
For any given a bitly user login and apiKey, you can validate that the pair is active.
Will return true or false whether the URL specified is a Bitly Pro Domain
my $bpd = $bitly->bitly_pro_domain(url => 'http://nyti.ms'); say "This is a Bitly Pro Domain: " . $bpd;
my $bpd2 = $bitly->bitly_pro_domain(url => 'http://example.com'); say "This is a Bitly Pro Domain: " . $bpd2;
This part of the Bitly APi isn't being implemented because it's virtually impossible to know exactly which minute a clicks is attributed to. ya know, network lag, etc. I'll implement this when Bitly puts some sort of a time code into the results.
$HOME/.bitly or _bitly on Windows Systems.
You may omit USER and APIKEY in the constructor if you set them in the .bitly config file on separate lines using the syntax:
USER=username APIKEY=apikey
Pankaj Jain, <pjain at cpan.org>
<pjain at cpan.org>
Please report any bugs or feature requests to bug-www-shorten-bitly at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=WWW-Shorten-Bitly. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-www-shorten-bitly at rt.cpan.org
You can find documentation for this module with the perldoc command.
perldoc WWW::Shorten::Bitly
You can also look for information at:
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=WWW-Shorten-Bitly
AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/WWW-Shorten-Bitly
CPAN Ratings
http://cpanratings.perl.org/d/WWW-Shorten-Bitly
Search CPAN
http://search.cpan.org/dist/WWW-Shorten-Bitly/
<mizar.jp@gmail.com>
<pedwards@cpan.org
<joerg@joergmeltzer.de>
<thai@thaiandhien.com>
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
perl, WWW::Shorten, http://bitly.com.
To install WWW::Shorten::Bitly, copy and paste the appropriate command in to your terminal.
cpanm
cpanm WWW::Shorten::Bitly
CPAN shell
perl -MCPAN -e shell install WWW::Shorten::Bitly
For more information on module installation, please visit the detailed CPAN module installation guide.