mythtv-scripts/python/myth_video_scan.py
2010-12-07 04:38:11 -05:00

75 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#----------------------
import os
import sys
try:
from MythTV import MythVideo, VideoGrabber, MythLog
except:
print 'ERROR: The python bindings are not installed'
sys.exit(-1)
LOG = MythLog('MythVideo Scanner', lstr='general')
mvid = MythVideo()
def format_name(vid):
# returns a string in the format 'TITLE[ - SEASONxEPISODE][ - SUBTITLE]'
s = vid.title
if vid.season:
s += ' - %dx%02d' % (vid.season, vid.episode)
if vid.subtitle:
s += ' - '+vid.subtitle
return s
# Load TV Grabber
try:
TVgrab = VideoGrabber('TV', db=mvid)
except:
print 'ERROR: Cannot find MythVideo TV grabber'
sys.exit(-1)
# Load Movie Grabber
try:
Mgrab = VideoGrabber('Movie', db=mvid)
except:
print 'ERROR: Cannot find MythVideo Movie grabber'
sys.exit(-1)
# pull new/old content list
LOG(LOG.GENERAL, 'Performing scan...')
toadd, todel = mvid.scanStorageGroups(False)
# print list of content to be deleted
if len(todel) > 0:
print '--- Deleting Old Videos ---'
print len(todel),' found'
for vid in todel:
print ' '+format_name(vid)
vid.delete()
# loop through content to add
if len(toadd) > 0:
print '--- Adding New Videos ---'
print len(toadd),' found'
for vid in toadd:
print ' '+format_name(vid),
if vid.subtitle:
matches = TVgrab.sortedSearch(vid.title, vid.subtitle)
else:
matches = Mgrab.sortedSearch(vid.title)
if len(matches) == 0:
print '... no matches, skipped.'
continue
elif len(matches) > 1:
if matches[0].levenshtein > 0:
print '... multiple matches, skipped.'
continue
vid.create()
vid.importMetadata(matches[0])
print '... successful.'