[mythtv-users] find orphans.py question

Raymond Wagner raymond at wagnerrp.com
Wed Apr 13 19:06:44 UTC 2011

On 4/13/2011 14:41, Warpme wrote:
> use DBI;

You should be using the MythTV module, rather than direct database 
access.  It will read the necessary config files to find the database, 
and fall back to UPnP detection if the config files do not exist.

> &dir_lookup("SELECT data FROM settings WHERE value='RecordFilePrefix' 
> AND hostname=(?)");

This hasn't been used since 0.19.  Does it still need checking?

> my $q = "SELECT title, subtitle, description, starttime, endtime, 
> chanid, basename FROM recorded WHERE hostname=(?) 

Limiting yourself to a specific hostname can be dangerous.  In 
situations with multiple backends using shared storage, one backend 
would see recordings from another as an orphaned file.

>             my $sql = sprintf "DELETE FROM oldrecorded WHERE title 
> LIKE \"%s\" AND subtitle LIKE \"%s\" AND description LIKE \"%s\" LIMIT 
> 1", $title, $subtitle, $description;
>             my $sql = sprintf "DELETE FROM recorded WHERE basename 
> LIKE \"%s\" LIMIT 1",$basename;
>                 my $sql = sprintf "UPDATE oldrecorded SET duplicate = 
> 0 where title = \"%s\" and starttime = \"%s\" and chanid = \"%s\"",

You should be using MythProto calls for all of these.  There is a 
_whole_ lot more to removing a recording from the database than just 
removing its entry in `recorded`.  All of these should be accompanied by 
a call to rerun the scheduler.

>                         unlink "$this_dir/$this_file";

Again, you should be using MythProto calls for this.  Unlinking a file 
on an ext3 filesystem has some serious implications, and can result in 
the damaging of in-progress recordings.  Using the MythProto call to 
delete the file will allow it to follow the slow delete setting.

More information about the mythtv-users mailing list