Version 21 (modified by anonymous, 6 years ago)

--

Shepherd FAQ

Here you can find answers to some of the most frequently asked questions about Shepherd... If you have a question not answered on this page, feel free to add the question into this page yourself (with no answer) - or, better yet, post the question to the mailing-list and then edit the question and answer into this Wiki page!

About Shepherd?

What is Shepherd?

Shepherd is an attempt to reconcile many different tv_grab_au scripts and make one cohesive reliable data set.

How does it work?

It works by calling a series of scripts that grab data from a large variety of sources, and then analysing the resulting XML data sets and determining which of the many is the most reliable. Postprocessors are used to augment the data sets with additional information (e.g. movie information from http://www.imdb.com, HDTV programming from http://www.dba.org.au etc.).

When switching between data sources, Shepherd's reconciler also tries to ensure that programme names are consistent. e.g. if you're used to recording a programme called "House" yet a different data source names it as "House, M.D.", Shepherd is smart enough to remember the original name and substitute it. No configuration is necessary to enable this; it happens automatically.

Shepherd is designed to be future proof, never requiring manual intervention once initially installed and configured. Shepherd will automatically update itself with fixes, enhancements and additional plugin components as and when they become available.

The shepherd_logic wiki page contains a more complete technical description of the various stages of Shepherd and how it works.

How can I get help or ask a few questions?

Feel free to join our mailing list by sending an email with "subscribe shepherd <email>" in the body to majordomo@…. Once you've joined, you can post to the list by emailing shepherd@….

Can I contribute?

Absolutely. Shepherd is a community project and is the result of countless contributors. If you wish to enhance some functionality within Shepherd (e.g. write a new postprocessor), implement some new fancy reconciling logic, implement a new grabber or just help out in answering questions or contributing to Wiki documentation, feel free to help!

Which operating systems does Shepherd support?

In theory, Shepherd (and its underlying components) will run on any operating system that supports Perl, as all scripts are currently written in Perl.

In practice, the developers all use Linux and MythTV, and that is what is known to work.

No effort has been put into making Shepherd work under Microsoft Windows or Windows Media Centre Edition, although it really shouldn't be too hard to get that working if anyone was motivated enough to do so.

Is Shepherd legal?

Some of the grabbers used by Shepherd read web sites that say they don't want their data used in PVRs, but that doesn't mean it's illegal. Shepherd doesn't copy or distribute data, but rather allows individuals at home to read it via their PVRs. It operates in the same manner as a browser, sending HTTP requests and formatting the resultant HTML for display in a manner appropriate to the user.

Installing Shepherd

How do I install Shepherd?

See the Installation page.

How important is it to install the optional Perl modules?

Some of Shepherd's grabbers require additional Perl modules to be installed, without which they won't function. They are listed as "optional" because Shepherd does not rely on any individual grabber to do its job; instead it draws on as many or as few of its available grabbers as necessary to acquire guide data for the time period and channels you want.

Sometimes Shepherd can do this with a single grabber. More commonly, it employes multiple grabbers and combines their results.

Generally speaking, Shepherd can perform very well even if some of its grabbers are disabled or unsupported (i.e. missing modules). However, it will probably perform more efficiently, reliably, and possibly more accurately if you can enable all of its grabbers.

Using Shepherd

How well is Shepherd working?

A summary of Shepherd's performance can be viewed by:

~/.shepherd/tv_grab_au --status

In particular, note the last line, which tells you the percentage of wanted data it acquired. If it's less than 100.00%, Shepherd wasn't able to completely data for all your channels over the next 7 days. If you haven't enabled all of Shepherd's grabbers, you will probably benefit from doing this.

If Shepherd is grabbing 100% of wanted data, then enabling additional grabbers may be unnecessary. However, doing so will still improve Shepherd's ability to tolerate a grabber failure, may allow it to run faster and use less bandwidth, and may improve its data quality.

Is there a log file somewhere?

Yes, in the log/ subdirectory of your Shepherd installation (usually ~/.shepherd/log/).

Can I make Shepherd always use a particular grabber?

Yes, with the "--grabwith <grabber(s)>" option. This will make Shepherd run the specified grabber(s) first, and then any others as needed to fill any holes remaining in the data. For example:

~/.shepherd/tv_grab_au --grabwith oztivo,sbsnews_website

Note that the task of determining efficient grabber selection is usually best left to Shepherd. Using this option may make your Shepherd slower, more bandwidth-hungry, and return less rich data.

Can I set some default options?

If you want Shepherd to always be called as if it was sent a particular command-line option, you can use:

~/.shepherd/tv_grab_au --component-set shepherd:<option>

For example, this would make Shepherd always run as if called with the option "--grabwith=abc_website":

~/.shepherd/tv_grab_au --component-set shepherd:grabwith=abc_website

If you want to add multiple options they all need to be set with one command otherwise the final command will override any previously set commands. For example to add both "--notquiet" and "--grabwith=abc_website" :

~/.shepherd/tv_grab_au --component-set shepherd:notquiet:grabwith=abc_website

Can I grab more than 7 days of data?

Yes, although it's a little kludgy at the moment. Some grabbers / data sources support more than 7 days of data: abc_website offers up to 28 days of ABC & ABC2, while southerncross_website can do 7-18 days of Southern Cross/TEN in some regions.

You can enable this via the component setting:

~/.shepherd/tv_grab_au --component-set abc_website:do_extra_days:1

This instructs the abc_website grabber to fetch extra days. However, it does not guarantee that Shepherd will ever call that grabber. If the extra days is especially important to you, you could also ensure that abc_website is always run:

~/.shepherd/tv_grab_au --component-set shepherd:grabwith=abc_website

Note that as mentioned above, this restricts Shepherd's ability to fetch the best possible data in the most efficient way.

You can disable the setting by:

~/.shepherd/tv_grab_au --component-set abc_website:do_extra_days:0

Can I specify different configuration files for Shepherd to use?

No. Shepherd always expects to use the same configuration file (usually ~/.shepherd/shepherd.conf). If this is a problem for you, please let us know.

My high definition (HD) channels are missing programs?

You must setup standard definition (SD) channels for the HD channels to be populated. The HD channels are only populated with known HD programs. The idea is to have both SD and HD, and increase the priorty of HD channels, so programs record as HD when available. Some stations do upscaling from SD to HD; you could record the HD version but the SD version is at least half the size for the same detail. Also some stations run a program of sceniary in a loop; if you recorded their HD channel you would miss your program. If you want all programs populated on the HD channel, use the SD xmlids for the HD channels. If any programs are missing from the HD channels and are known to be HD, please let us known on our mail list.

Some of my guide data looks wrong. How can I diagnose the problem?

Because Shepherd employs many different grabbers, the first step is to figure out where the dodgy data came from. If you're interested in a particular time, you can use the "--ancestry" option to see how Shepherd put together guide data for a particular time. For example, to look at the ancestry of data for next Tuesday from 10:30pm - 11pm:

~/.shepherd/tv_grab_au --ancestry "tuesday 10:30pm+30"

This will print out relevant guide data obtained during Shepherd's last successful run from each component. What you want to do is find the earliest point at which the timestamps are wrong.

  • If the data looks wrong in a grabber, it's either a problem with the grabber itself or the grabber's data source.
  • If the data looks fine in the grabber, but is bad in the output of a reconciler, postprocessor, or Shepherd itself, it's a Shepherd problem.

Either way, armed with this information you should be able to get further help from the mailing list.

Shepherd works when I run it from the command-line, but not automatically via mythfilldatabase.

Make sure you've created the symbolic link from tv_grab_au to Shepherd, and that the following command points to your Shepherd executable:

ls -l `which tv_grab_au`

If it points somewhere else--for example, if you have an old tv_grab_au script from a previous grabber in /usr/local/bin/--you should delete/replace this with the symlink to Shepherd.

Further information may be gleaned by running mythfilldatabase from the command-line and looking for any error messages between the "-----Start/End of XMLTV output----" lines.

When mythfilldatabase runs (SVN release of mythtv, mythtv 0.21 and later), I can't see what Shepherd is doing

Starting with MythTV 0.21 and SVN release around February 2007, mythfilldatabase (by default) adds '--quiet' onto the command-line when calling the tv_grab_au script. To negate this, you can use Shepherd's "--notquiet" option. You can make this a default by:

~/.shepherd/tv_grab_au --component-set shepherd:notquiet

To disable this, use:

~/.shepherd/tv_grab_au --component-set shepherd:

How can I prevent mythfilldatabase adding unwanted channels to my video sources?

Make sure mythfilldatabase (not Shepherd) is invoked with the "--update" option, so it will not add any missing channels to your video sources. (This can be an issue if you have video sources that receive different sets of channels.)

My guide data is listed against the wrong channels inside MythTV.

It's important that the XMLTV IDs you assigned to channels in Shepherd match those you assigned in MythTV. It doesn't matter what each XMLTV ID is, just that they match. For example, if in the mythtv-setup Channel Editor you have "ABC Melbourne" set to an XMLTV ID of "abc.free.au", you should also specify this as the XMLTV ID for the ABC channel in Shepherd:

tv_grab_au --configure

Which timezone should I set MythTV to? Auto, None, +1000..?

Usually it doesn't matter. Shepherd will look up MythTV's timezone setting, compare this to your system clock, and adjust show times as necessary to make sure everything lines up.

If however you're running Shepherd on a different box to MythTV, or are having timezone issues, it may be helpful to set your MythTV timezone to "None."

Also, you're timezone should be the same as the region you've set shepherd too.

The following commands executed the same way shepherd is, should give an idea if your timezone is set correctly. The date and time printed should be your local time and not UTC.

perl -e 'use POSIX; print POSIX::strftime("%z %x %X %Z\n", localtime(time));'
date "+%z %x %X %Z"

Debian's timezone can be changed with 'tzconfig' run as root.

The TZ environment variable could also be set to correct any differences. Add in ~/.profile (to make it user specific), /etc/profile (to make it machine wide) or whereever your timezone setting already is and then log off and back in to pick up the change. For example:

TZ="Australia/Brisbane" 
export TZ