Plagger::Plugin::Filter::Thumbnail - use Website thumbnail tool(s) to create alternative image for feeds


Plagger documentation Contained in the Plagger distribution.

Index


Code Index:

NAME

Top

Plagger::Plugin::Filter::Thumbnail - use Website thumbnail tool(s) to create alternative image for feeds

SYNOPSIS

Top

  - module: Filter::Thumbnail

DESCRIPTION

Top

This plugin puts image link to website thumbnail tool when a feed doesn't have proper image set in feed itself (ala rss:image or atom:logo).

For now, it uses http://img.simpleapi.net/ as a default (and only) URL to use with, but it should be configured when there's similar (free) serviced out there.

CONFIG

Top

set_per_entry

With set_per_entry set, it adds each entry thumbnail as entry's icon, in addition to the feed logo. Optional and defaults to 0.

AUTHOR

Top

Tatsuhiko Miyagawa

SEE ALSO

Top

Plagger


Plagger documentation Contained in the Plagger distribution.

package Plagger::Plugin::Filter::Thumbnail;
use strict;
use base qw( Plagger::Plugin );

sub register {
    my($self, $context) = @_;
    $context->register_hook(
        $self,
        'update.feed.fixup'  => \&feed,
    );

    if ($self->conf->{set_per_entry}) {
        $context->register_hook(
            $self,
            'update.entry.fixup' => \&entry,
        );
    }
}

sub feed {
    my($self, $context, $args) = @_;

    # do nothing if there's already feed logo
    return if $args->{feed}->image;

    $context->log(info => "Add thumbnail as image to " . $args->{feed}->link);
    $args->{feed}->image( $self->build_image($args->{feed}->title, $args->{feed}->link) );
}

sub entry {
    my($self, $context, $args) = @_;

    # do nothing if there's already entry icon
    return if $args->{entry}->icon;

    $context->log(info => "Add thumbnail as image to " . $args->{entry}->permalink);
    $args->{entry}->icon( $self->build_image($args->{entry}->title, $args->{entry}->permalink) );
}

sub build_image {
    my($self, $title, $link) = @_;

    # TODO: use other serivces here
    return {
        url    => "http://img.simpleapi.net/small/" . $link,
        title  => $title,
        link   => $link,
        width  => 128,
        height => 128,
    };
}

1;

__END__