[mythtv-users] Mythvideo - tvtomb

Ryszard ryszard99 at gmail.com
Fri Dec 10 14:29:46 UTC 2004


so, to avoid any issues with copyright, we'll call this a command line
browser for tvtome, in the spirit of lynx, except dedicated to tvtome:

DISCLAIMER: Not fully tested, but works for me
-----------------8<------------------------------------------
package TVTome;

use strict;
use Carp;
use LWP::Simple;
use HTML::TokeParser;

sub new {
    my $pkg = shift;

    my $self = bless { }, $pkg;

    return $self;
}

sub _findResults {
    my $self = shift;
    my $content = shift;
    my $parser = HTML::TokeParser->new(\$content);

    my ($tag, @list);

    while ($tag = $parser->get_token()) {
        if ($parser->get_text =~ 'Show search for') {
            while ($tag = $parser->get_tag()){

                if ($tag->[0] eq 'a') {
                    my $startcrap = '<a href="';
                    my $endcrap = '">';
                    $tag->[3] =~ s/$startcrap//g;
                    $tag->[3] =~ s/$endcrap//g;

                    push @list, {show => $parser->get_text(), url=>$tag->[3]};
                }
                last if ($parser->get_text =~ /Here are some hints/);

            }
        }
    }

    return \@list;

}

sub _getEPs {
    my $self = shift;
    my $content = shift;
    my $parser = HTML::TokeParser->new(\$content);

    my ($tag, @list);
    while ($tag = $parser->get_token()) {

        if ($parser->get_text =~ 'Season') {
            while ($tag = $parser->get_tag('tr')){

                # Episode number
                $parser->get_tag('td');
                my $epno = $parser->get_text;

                $parser->get_tag('td');
                my $no = $parser->get_text;

                $parser->get_tag('td');
                my $seasonep = $parser->get_text;

                $parser->get_tag('td');
                my $airdate = $parser->get_text;

                my $tag = $parser->get_tag('a');
                my $startcrap = '<a href="';
                my $endcrap = '">';
                $tag->[3] =~ s/$startcrap//g;
                $tag->[3] =~ s/$endcrap//g;

                my $epname = $parser->get_text;
                my $epurl = $tag->[3];

                push @list, {
                             epno     => $epno,
                             no       => $no,
                             seasonep => $seasonep,
                             airdate  => $airdate,
                             epname   => $epname,
                             epurl    => $epurl,
                            }
            }
         }

    }

    return \@list;

}

sub _getSynopsis {
    my $self = shift;
    my $content = shift;
    my $parser = HTML::TokeParser->new(\$content);

    my ($tag, $synopsis);
    while ($tag = $parser->get_token()) {
        if ($parser->get_text =~ 'Synopsis') {
            $parser->get_tag('tr');
            $parser->get_tag();
            $synopsis .=$parser->get_text();
            while ($tag->[0] ne 'td') {
                $tag = $parser->get_tag();
                my $text = $parser->get_text();
                $synopsis .= $text if (defined $text && length($text) > 0);
            }
        }

    }
    return \$synopsis;
}

sub find {
    my $self = shift;
    my %args = @_;

    croak "Must supply show!" unless (defined $args{show});

    $args{show}=~s/\s/%20/g;

    my $url = 'http://www.tvtome.com/tvtome/servlet/Search?searchType=show&searchString='.$args{show};

    my $content = get($url) or carp "can't connect to server";

    return $self->_findResults($content);
}

sub getEPList {
    my $self = shift;
    my %args = @_;

    croak "Must supply url!" unless (defined $args{url});

    my $url = 'http://www.tvtome.com/'.$args{url}.'eplist.html';
    my $content = get($url) or carp "can't connect to server";

    return $self->_getEPs($content);


}

sub getSynopsis {
    my $self = shift;
    my %args = @_;

    croak "Must supply url!" unless (defined $args{url});

    my $url = 'http://www.tvtome.com/'.$args{url};
    my $content = get($url) or carp "can't connect to server";

    return $self->_getSynopsis($content);

}


1
-----------------8<------------------------------------------


On Fri, 10 Dec 2004 10:26:34 +1100, Alistair Osborne
<alistair.osborne at gmail.com> wrote:
> Check out the Meedio forums, I believe they have one there for Meedio
> that uses TvTome.
> 
> 
> 
>


More information about the mythtv-users mailing list