XMLTV / xmltv

Utilities to obtain, generate, and post-process TV listings data in XMLTV format
GNU General Public License v2.0
297 stars 94 forks source link

Alpine Only Includes 3 Grabbers #199

Closed Karl33to closed 1 year ago

Karl33to commented 1 year ago

Hi, Linux newb here, I am trying to setup XMLTV in a Docker Nginx:Alpine container. It seems to install correctly but it doest include all the grabbers - I have tried the same steps on an Ubuntu Desktop VM and can see a full list of grabbers.

XMLTV Version?

1.12-r0

Perl Version

5.36.0-r0

Operating System

Nginx:Alpine

What happened?

On calling tv_find_grabbers only 3 grabbers were found... /usr/bin/tv_grab_it|Italy /usr/bin/tv_grab_na_tvmedia|North America (XMLTVListings.com by TVMedia) /usr/bin/tv_grab_combiner|Combine data from several other grabbers

What did you expect to happen?

Many more tv grabbers to be included, specifically tv_grab_uk_tvguide

Did you see any warnings/errors?

There was one warning on calling "apk add xmltv"

(34/45) Installing perl-xml-sax (1.02-r1) Executing perl-xml-sax-1.02-r1.post-install could not find ParserDetails.ini in /usr/share/perl5/vendor_perl/XML/SAX

What steps are needed to reproduce this issue?

(Please provide the full commands you are running)

  1. apk update
  2. apk upgrade
  3. apk add xmltv
  4. tv_find_grabbers

Please attach your config file below:

dockerfile.txt

Any other information?

I noticed on the Alpine package manager page that only 3 grabbers were listed in the files https://pkgs.alpinelinux.org/contents?branch=edge&name=xmltv&arch=riscv64&repo=community

stefanb2 commented 1 year ago

You are installing the Alpine APK package, which isn't maintained by the XMLTV project, i.e. this is the wrong place to report the problem. I would suggest to file a problem report here.

The build log already indicates part of the problem: dependent Perl packages are missing:

Module JSON seems not to be installed.
Module LWP::Protocol::https seems not to be installed.
Required modules missing, 'make' is unlikely to work
Warning: prerequisite JSON 0 not found.
Warning: prerequisite LWP::Protocol::https 0 not found.
JSON is required.
LWP::Protocol::https is required.

I'm pretty sure that more Perl packages are missing, e.g. HTML::Entities, HTML::TreeBuilder, ...

Closing as INVALID

stefanb2 commented 1 year ago

Looks like Alpine doesn't package HTML::Tree, which means most of the grabbers can't be built, because they rely on HTML::TreeBuilder to parse the scraped HTML to a DOM tree.

stefanb2 commented 1 year ago

This would be a starting point to improve the Alpine package:

Packages to add:

perl-datetime perl-lwp-protocol-https perl-html-parser perl-json perl-json-xs

Build dependencies to add:

perl-app-cpanminus perl-module-build perl-test-fatal

Build step to add before the actual xmltv build (builds missing Perl packages from CPAN):

cpanm HTML::Tree IO::Scalar

With these changes in place I get:

# tv_find_grabbers 
/usr/bin/tv_grab_na_tvmedia|North America (XMLTVListings.com by TVMedia)
/usr/bin/tv_grab_fi_sv|Finland (Swedish)
/usr/bin/tv_grab_combiner|Combine data from several other grabbers
/usr/bin/tv_grab_zz_sdjson|Schedules Direct JSON API
/usr/bin/tv_grab_huro|Hungary/Romania
/usr/bin/tv_grab_ch_search|Switzerland (tv.search.ch)
/usr/bin/tv_grab_fi|Osa 9/10. Asiaohjelma, mikä ...
/usr/bin/tv_grab_na_dtv|North America using www.directv.com
/usr/bin/tv_grab_ar|Argentina
/usr/bin/tv_grab_pt_meo|Portugal
/usr/bin/tv_grab_it|Italy

You get the gist...

stefanb2 commented 1 year ago

I added Alpine Linux 3.17 to the build flows. It currently builds 18 grabbers.

I left out deliberately the grabbers that depend on DVB, CGI or Tk as they don't really make sense in a containerized setup.

Maybe if I have time I'll figure out why SOAP::Lite fails to build, then at least one more grabber would be enabled.