View on
MetaCPAN is shutting down
For details read Perl NOC. After June 25th this page will redirect to
Paul Jamieson Fenwick > WebService-Idonethis-0.03 > WebService::Idonethis



Annotate this POD

View/Report Bugs
Module Version: 0.03   Source   Latest Release: WebService-Idonethis-0.23


WebService::Idonethis - WebScraping pseudo-API for iDoneThis


version 0.03


    use WebService::Idonethis;

    my $idt = WebService::Idonethis->new(
        user => 'someuser',
        pass => 'somepass',

    my $dones = $idt->get_day("2012-01-01");

    foreach my $item (@$dones) {
        say "* $item->{text}";

    # Submit a new done item.

    $idt->set_done(text => "Drank ALL the coffee!");


This is an extremely bare-bones wrapper around the website that allows retrieving of what was done on a particular day. It's only been tested with personal calendars. Patches are extremely welcome.

This code was motivated by's most excellent (but now defunct) memory service, which would send reminders as to what one was doing a year ago by email.

The idonethis-memories command included in this distribution is a simple proof-of-concept that reimplements this service, and is suitable for running as a cron job.

The idone command included with this distribution allows you to submit new done items from the command line.

Patches are extremely welcome.




Gets the data for a given day. An array will be returned which is a conversation from the JSON data structure used by idonethis. The structure at the time of writing looks like this:

            owner => 'some_user',
            avatar_url => '/site_media/blahblah/foo.png',
            modified => '2012-01-01T15:22:33.12345',
            calendar => {
                short_name => 'some_short_name', # usually owner name
                name => 'personal',
                type => 'PERSONAL',
            created => '2012-01-01T15:22:33.12345',
            done_date => '2012-01-01',
            text => 'Wrote code to frobinate the foobar',
            nicest_name => 'some_user',
            type => 'dailydone',
            id => 12345


    $idt->set_done( text => "Installed WebService::Idonethis" );
    $idt->set_done( date => '2013-01-01', text => "Drank coffee." );

Submits a done item to The date field is optional, but the text field is mandatory. The current date (localtime) will be used if no date is specified.

Returns nothing on success. Throws an exception on failure.


Paul Fenwick <>


This software is copyright (c) 2013 by Paul Fenwick.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: