diff options
Diffstat (limited to 'lib/gcstar/GCPlugins/GCstar/GCAmazonCommon.pm')
| -rw-r--r-- | lib/gcstar/GCPlugins/GCstar/GCAmazonCommon.pm | 132 | 
1 files changed, 132 insertions, 0 deletions
diff --git a/lib/gcstar/GCPlugins/GCstar/GCAmazonCommon.pm b/lib/gcstar/GCPlugins/GCstar/GCAmazonCommon.pm new file mode 100644 index 0000000..a9ecd80 --- /dev/null +++ b/lib/gcstar/GCPlugins/GCstar/GCAmazonCommon.pm @@ -0,0 +1,132 @@ +package GCPlugins::GCstar::GCAmazonCommon; + +################################################### +# +#  Copyright 2005-2010 Christian Jodar +# +#  This file is part of GCstar. +# +#  GCstar is free software; you can redistribute it and/or modify +#  it under the terms of the GNU General Public License as published by +#  the Free Software Foundation; either version 2 of the License, or +#  (at your option) any later version. +# +#  GCstar is distributed in the hope that it will be useful, +#  but WITHOUT ANY WARRANTY; without even the implied warranty of +#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +#  GNU General Public License for more details. +# +#  You should have received a copy of the GNU General Public License +#  along with GCstar; if not, write to the Free Software +#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +# +################################################### + +use strict; + +use GCPlugins::GCPluginsBase; + +{ +    package GCPlugins::GCstar::GCPluginAmazonCommon; + +    sub text +    { +        my ($self, $origtext) = @_; +        return 0 if ($self->{parsingEnded}); + +        if ($self->{parsingList}) +        { +            if ( +                (($self->{inside}->{b}) +                || ($self->{inside}->{span}) +                || ($self->{inside}->{label})) +               ) +            { +                my $suffix = $self->{suffix}; +                if ((($suffix =~ /^co/) && ($origtext =~ /Sort by/)) +                 || (($suffix eq 'fr' ) && ($origtext =~ /Trier par/)) +                 || (($suffix eq 'de' ) && ($origtext =~ /Sortieren nach/))) +                { +                    $self->{beginParsing} = 1; +                    return 1; +                } +            } +        } +         +        return 0; +    } + +    sub extractImage +    { +        my ($self, $attr) = @_; +        my $url = $attr->{src}; +        return 'http://images.amazon.com/images/'.$1.'/'.$2.$3.'MZZZZZZZ.'.$5 +            if ($url =~ m%^http://.*?images[.-]amazon\.com/images/(P)/([A-Z0-9]*)(\.[0-9]+\.)?[-A-Za-z0-9_.,]*?ZZZZZZZ(.*?)\.(jpg|gif)%); +        return 'http://images.amazon.com/images/'.$1.'/'.$2.'.'.$3 +            if ($url =~ m%^http://.*?images[.-]amazon\.com/images/(I|G)/([-\%A-Z0-9a-z+]*)\._.*?_\.(jpg|gif)%); +        if ($attr->{id} eq 'prodImage') +        { +            $url =~ s/_AA[0-9]*_//; +            return $url; +        } +        return ''; +    } + +    sub isEAN +    { +        my ($self, $value) = @_; +         +        my $l = length($value); +        return 1 +            if ($l == 8) +            || ($l == 13) +            || ($l == 15) +            || ($l == 18); +        return 0; +    } + +    sub isItemUrl +    { +        my ($self, $url) = @_; +        return $1 +            if (($url =~ m|/dp/[A-Z0-9]*/sr=([0-3]-[0-9]*)/qid=[0-9]*|) +             || ($url =~ m|/dp/[A-Z0-9]*/ref=(?:sr\|pd)_([a-z0-9_]*)/[0-9]*|) +             || ($url =~ m|/dp/[A-Z0-9]*/ref=(?:sr\|pd)_([a-z0-9_]*)/[0-9]*|)); +        return undef; +    } + +    sub getSearchUrl +    { +        my ($self, $word) = @_; +        return "http://www.amazon.".$self->{suffix}."/gp/search/?redirect=true&search-alias=".$self->{searchType}."&keywords=$word"; +    } +     +    sub getItemUrl +    { +        my ($self, $url) = @_; +        return $url if $url; +        return 'http://www.amazon.'.$self->{suffix}; +    } + +    sub getAuthor +    { +        return 'Tian'; +    } + +    sub preProcess +    { +        my ($self, $html) = @_; +        if ($self->{parsingList}) +        { +            $html =~ s|<span\s+class="srTitle">([^<]*)</span>|<srTitle>$1</srTitle>|gim; +            $html =~ s|<td class="otherEditions">.*?</td>||gim; +        } +        else +        { +            $html =~ s|<a\s*href="/exec/obidos/ASIN/[0-9/\${}]*">([^<]*)</a>|$1|gim; +        } +        return $html; +    } +} + +1;  | 
