[mythtv] How do you delete the database except for recorded videos

Brent Borghese mythtv-dev@snowman.net
Thu Jan 2 02:15:35 EST 2003


> Will this allow me to rebuild the recorded video  database from the
> video files stored on the hard disk if I decide to just delete the whole
> database and start over?

Yes, it will help you do that.   

But, you will not have the name of the shows.   When you go to play, it 
will have the channel, date, time and the name will be: ???

It is possible to lookup the info, but with no database that would not 
work.

That is why I think there should be a XML file with each video file.   
Then if you delete your database and have a script to put things back in 
after a upgrade.

Brent



> On Wed, 2003-01-01 at 17:49, Brent Borghese wrote:
> > > I have multiple entries of the same show listed in Fix Recording
> > > conflicts( a show conflicting with itself).  Is there a way to delete
> > > this section of the database?  I want to keep the listing of the current
> > > videos recorded in the hard drive of course.  Thanks
> >
> > Here is a shell script that will check the database and your video store
> > to make sure they are in sync.
> >
> > It has only been tested on the current CVS!
> >
> > What the script does so far:
> > - Makes sure all DB entries have a video file on disk
> > - Makes sure all video files have DB entries
> > - If there are missing DB entries or missing files, it will display the
> >   mysql command that will fix it.
> >
> > You will need to run it as root or what ever user has access to the myth
> > database.
> >
> > For now it does not check for duplicate DB entries.
> >
> > Brent
> >
> > ----
> >

> > #!/bin/bash
> > store=$(mysql -D mythconverg --batch -s -e "select * from settings 
;"|grep RecordFilePrefix|awk '{ print $2 }')
> > mysql -D mythconverg --batch -s -e "select * from recorded ;"|awk '{ 
print $1 "_" $2 "_" $3 ".nuv" }'|sort>/tmp/flist.txt
> > cd $store
> > find . -name "*.nuv"|awk -F/ '{print $2}'|sort|grep -v ringbuf 
>/tmp/flist2.txt
> > diff /tmp/flist.txt /tmp/flist2.txt|egrep "[<>]">/tmp/flist3.txt
> > cat /tmp/flist3.txt|sed -e 's/</No File found for DB entery:/'|sed -e 
's/>/No DB entery for file:/'>/tmp/flist4.txt
> >
> > # Get the number of video files in the store
> > fileCount=$(cat /tmp/flist2.txt|wc -l)
> >
> > # Get the number of video files in the DB
> > fileDBCount=$(cat /tmp/flist.txt|wc -l)
> > echo Total number of files found     : $fileCount
> > echo Total number of DB entries found: $fileDBCount
> > echo Checking to make sure things match.
> > if [ $(cat /tmp/flist4.txt|wc -l) != "0" ] ; then
> >    echo "Here is a list of problems found"
> >    cat /tmp/flist4.txt
> > fi
> > # get the number of missing DB entries
> > touch /tmp/NoDB.txt
> > for line in $(cat /tmp/flist3.txt|grep ">"|awk '{ print $2 }') ;
> >    do echo $line >/tmp/line.txt ;
> >       cat /tmp/line.txt |awk -v qq="'" -F "[_.]" '{ print "mysql -D 
mythconverg --batch -s -e \"insert into recorded values (" qq $1 qq "," qq $2 
qq "," qq $3 qq "," qq "???" qq "," qq "???" qq "," qq "???" qq ") ;\""  
}'>/tmp/NoDB.txt
> > done
> > NoDBCount=$(cat /tmp/NoDB.txt|wc -l)
> > if [ $NoDBCount != "0" ]; then
> >    echo
> >    echo "Commands to fix: No DB entery"
> >    echo "----------------------------"
> >    cat /tmp/NoDB.txt
> >    echo Or to free up disk space you can do:
> >    for line in $(cat /tmp/flist3.txt|grep ">"|awk '{ print $2 }') ;
> >       do echo $line >/tmp/line.txt ;
> >         cat /tmp/line.txt |awk -v store=$store -F "[_.]" '{ print "rm -f 
" store "/" $1 "_" $2 "_" $3 ".nuv" }'
> >    done
> > else
> >    echo All Files have DB entries
> > fi
> >
> > # Get the number of missing files
> > touch /tmp/NoFile.txt
> > for line in $(cat /tmp/flist3.txt|grep "<"|awk '{ print $2 }') ;
> >    do echo $line >/tmp/line.txt ;
> >       cat /tmp/line.txt |awk -F "[_.]" '{ print "mysql -D mythconverg 
--batch -s -e \"delete from recorded where chanid=" $1 " and starttime=" $2 " 
and endtime=" $3 " ;\""  }'>/tmp/NoFile.txt
> > done
> > NoFileCount=$(cat /tmp/NoFile.txt|wc -l)
> > if [ $NoFileCount != "0" ]; then
> >    echo
> >    echo "Commands to fix: No File found for DB entery"
> >    echo "--------------------------------------------"
> >    cat /tmp/NoFile.txt
> > else
> >    echo All DB entries have a file in the store.
> > fi
> >
> > rm -f /tmp/flist.txt /tmp/flist2.txt /tmp/flist3.txt /tmp/flist4.txt 
/tmp/NoDB.txt /tmp/NoFile.txt
> >
> >


> _______________________________________________
> mythtv-dev mailing list
> mythtv-dev@snowman.net
> http://www.snowman.net/mailman/listinfo/mythtv-dev




More information about the mythtv-dev mailing list