[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