NAME
Date::Extract::P800Picture - class for extracting the date and the hour from the filename of pictures taken with a Sony-Ericsson P800 camera phone.
VERSION
SYNOPSIS
use Date::Extract::P800Picture;
$filename = "8B360001.JPG"; # 2008-12-04T6:00:00
$parser = new Date::Extract::P800Picture();
$parser = new Date::Extract::P800Picture(filename => $filename);
$datetime = $parser->extract();
$datetime = $parser->extract($filename);
DESCRIPTION
The Sony-Ericsson P800 camera phone stores pictures taken with the camera on the device with a filename consisting of the date and the hour the picture was taken, followed by a four digit number and the .JPG extension. The format of the date and the hour is YMDH, in which the single characters are base 36 to fit a range of about 36 years, 12 months, 31 days and 24 hours since the year 2000 in a case insensitive US-ASCII representation.
SUBROUTINES/METHODS
- Date::Extract::P800Picture->new() =item Date::Extract::P800Picture->new(filename => $filename)
-
Constructs a new Date::Extract::P800Picture object.
- $parser->filename($filename);
-
Sets the filename to extract the date and hour from.
- $obj->extract()
-
Extract date and hour from the string and returns it as DateTime object. Returns undef if no valid date could be extracted.
CONFIGURATION AND ENVIRONMENT
No configuration and environment settings are used.
DEPENDENCIES
L<POSIX>
L<English>
L<DateTime>
L<Readonly>
L<Class::Meta::Express>
L<Class::Meta::Type>
L<Date::Extract::P800Picture::TypeDef>
L<Test::More>
INCOMPATIBILITIES
To avoid ambiguity between more common date notations and the Sony-Ericsson P800's date notation this is a separate module. It's highly unlikely that in any other setting "2000" means the first of January 2002.
DIAGNOSTICS
An error is thrown when a date can't be extracted from the string:
Could not parse year char '%s'
Could not parse month char '%s'
Could not parse day char '%s'
Could not parse hour char '%s'
No date found in filename '%s'
Filename is not set, nothing to extract
BUGS AND LIMITATIONS
Empty subclass test fails, this is probably a Class::Meta::Express issue. The empty subclass can't be empty, it needs at least:
use Class::Meta::Express; class { ctor 'new'; };
Usually the files are transferred from the P800 to other systems in a way that hasn't completely preserved the timestamp of the file, so there is no reliable way to double check the results by comparing the date extracted from the filename with the timestamp of the file.
AUTHOR
Roland van Ipenburg, <ipenburg@xs4all.nl>
LICENSE AND COPYRIGHT
Copyright (C) 2009 by Roland van Ipenburg
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.