NAME
Flickr::Upload::Dopplr - Flickr::Upload subclass to assign location information using Dopplr
SYNOPSIS
use Flickr::Upload::Dopplr;
my %dp_args = ('auth_token' => 'JONES!!!!',
'tagify' => 'delicious');
my %fl_args = ('key' => 'OH HAI',
'secret' => 'OH NOES',,
'dopplr' => \%dp_args);
my $uploadr = Flickr::Upload::Dopplr->new(\%fl_args);
my $photo_id = $uploadr->upload('photo' => "/path/to/photo",
'auth_token' => 'O RLY');
DESCRIPTION
Flickr::Upload subclass to assign location information using Dopplr.
Specifically, the package will query Dopplr for the current location of the user associated with $dopplr_authtoken and assign the following tags for the name of the city a machinetag representing the Geonames.org ID for that city.
If the package is able to query a photo's EXIF data and read the DateTimeOriginal field that value will be used to query Dopplr for your location on that day.
It will also try to resolve a corresponding Flickr Places ID for the Geonames city ID returned by Dopplr. For example, Geonames ID 5391959 becomes San Francisco, California, United States which becomes Flickr Places ID kH8dLOubBZRvX_YZ.
(Or in machinetag-speak, places:locality=kH8dLOubBZRvX_YZ)
If, when the photo is uploaded, the Dopplr API thinks that it is a "travel day" another machine tag (dopplr:trip=) will be added containing the numeric identifier for that trip.
If an upload is successful, the package will attempt to assign latitude and longitude information for the photo with a Flickr accuracy of 11 (or "city").
ERROR HANDLING
Flickr::Upload::Dopplr subclasses Error.pm to catch and throw exceptions. Although this is still a mostly un-Perl-ish way of doing things, it seemed like the most sensible way to handle the variety of error cases. I don't love it but we'll see.
This means that the library will throw fatal exceptions and you will need to code around it using either eval or - even better - try and catch blocks.
There are four package specific exception handlers :
This is the only exception handler that defines its own additional
methods. They are :
* error_code
The numeric error code returned by the Flickr API.
* error_message
The textual error message returned by the Flickr API.
CAVEATS
PACKAGE METHODS
__PACKAGE__->new(\%args)
All the same arguments required by the Flickr::Upload constructor plus
the following :
A valid Dopplr API authentication token.
An optional flag to format tags for cities, specific to a
service. Valid services are :
* delicious
City names are lower-cased and spaces are removed.
* flickr
City names are wrapped in double-quotes if they contain
spaces.
The default value is flickr
Returns a Flickr::Upload::Dopplr object.
OBJECT METHODS YOU SHOULD CARE ABOUT
$obj->upload(%args)
Nothing you wouldn't pass the Flickr::Upload upload method. Except the
async flag which is not honoured yet. I'm working on it.
In additional, you may pass an optional geo parameter. It must be a hash reference with the following keys :
If this is not defined then your default viewing settings for geo
data will be left in place.
Returns a photo ID!
VERSION
0.3
DATE
$Date: 2008/03/13 16:35:15 $
AUTHOR
Aaron Straup Cope <ascope@cpan.org>
SEE ALSO
Flickr::API
Flickr::Upload
Net::Dopplr
Error
<http://www.aaronland.info/weblog/2007/08/24/aware/#reduced>
<http://laughingmeme.org/2008/01/18/flickr-place-ids/>
BUGS
Please report all bugs via http://rt.cpan.org/
LICENSE
Copyright (c) 2007-2008 Aaron Straup Cope. All Rights Reserved.
This is free software. You may redistribute it and/or modify it under the same terms as Perl itself.