#!/bin/bash exec $TIVO_ROOT/tvbin/tivosh << "EOF" ###################################################################### # File: RemoveObsoleteGenres.runme # # Description: Remove old genres that are still floating around # in the client database. # # $$$TIVO COPYRIGHT (Marcel Dubois)$$$ ##################################################################### source /tvlib/tcl/tv/mfslib.tcl set db [dbopen] set gGroupList {} set completeGenreList {} # Open the Genre dataset object and get the list of genre groups try { RetryTransaction { set dsObj [db $db open /DataSet/GenreVersion] set gGroupList [dbobj $dsObj gettarget Data] } } catch errorCode { putlog "Couldn't open the Genre DataSet object" return } if { [llength $gGroupList] == 0 } { putlog "No Genre Groups found in DataSet" return } else { # Open each of the genre groups to get the total list of sub-genres used foreach gGroupId $gGroupList { set gGmajor [lindex [split $gGroupId "/"] 0] # Add the group genre Id to the complete list lappend completeGenreList $gGmajor # Add the children of the group genre to the complete list try { RetryTransaction { set gGroupObj [db $db openid $gGmajor] set gGroupChildren [dbobj $gGroupObj gettarget Child] } } catch errorCode { putlog "Error occured trying to open a genre group" return } foreach gChildId $gGroupChildren { set gCmajor [lindex [split $gChildId "/"] 0] if { [lsearch -exact $completeGenreList $gCmajor] == -1 } { lappend completeGenreList $gCmajor } } } } set count 0 # Iterate through genre directory removing every genre that isn't in the list ForeachMfsFile id value type /Genre "" { if { [lsearch -exact $completeGenreList $id] == -1 } { try { RetryTransaction { set obj [db $db openid $id] set name [dbobj $obj get Name] if { $name != "HD" } { putlog "Obsolete genre : $value $name" incr count dbobj $obj markasrubbish } } } catch errorCode { putlog "Error occured trying to rubbish obsolete genre" return } } } putlog "Total obsolete genres = $count" EOF