80 lines
1.2 KiB
Python
80 lines
1.2 KiB
Python
|
#! /usr/local/python
|
||
|
|
||
|
# Add a cache to each of the files given as command line arguments
|
||
|
|
||
|
|
||
|
# Usage:
|
||
|
#
|
||
|
# Vaddcache [file] ...
|
||
|
|
||
|
|
||
|
# Options:
|
||
|
#
|
||
|
# file ... : file(s) to inspect; default film.video
|
||
|
|
||
|
|
||
|
import sys
|
||
|
sys.path.append('/ufs/guido/src/video')
|
||
|
import VFile
|
||
|
import getopt
|
||
|
|
||
|
|
||
|
# Global options
|
||
|
|
||
|
# None
|
||
|
|
||
|
|
||
|
# Main program -- mostly command line parsing
|
||
|
|
||
|
def main():
|
||
|
opts, args = getopt.getopt(sys.argv[1:], '')
|
||
|
if not args:
|
||
|
args = ['film.video']
|
||
|
sts = 0
|
||
|
for filename in args:
|
||
|
if process(filename):
|
||
|
sts = 1
|
||
|
sys.exit(sts)
|
||
|
|
||
|
|
||
|
# Process one file
|
||
|
|
||
|
def process(filename):
|
||
|
try:
|
||
|
fp = open(filename, 'r+')
|
||
|
vin = VFile.RandomVinFile().initfp(fp, filename)
|
||
|
except IOError, msg:
|
||
|
sys.stderr.write(filename + ': I/O error: ' + `msg` + '\n')
|
||
|
return 1
|
||
|
except VFile.Error, msg:
|
||
|
sys.stderr.write(msg + '\n')
|
||
|
return 1
|
||
|
except EOFError:
|
||
|
sys.stderr.write(filename + ': EOF in video file\n')
|
||
|
return 1
|
||
|
|
||
|
try:
|
||
|
vin.readcache()
|
||
|
hascache = 1
|
||
|
except VFile.Error:
|
||
|
hascache = 0
|
||
|
|
||
|
if hascache:
|
||
|
sys.stderr.write(filename + ': already has a cache\n')
|
||
|
vin.close()
|
||
|
return 1
|
||
|
|
||
|
vin.printinfo()
|
||
|
vin.warmcache()
|
||
|
vin.writecache()
|
||
|
vin.close()
|
||
|
return 0
|
||
|
|
||
|
|
||
|
# Don't forget to call the main program
|
||
|
|
||
|
try:
|
||
|
main()
|
||
|
except KeyboardInterrupt:
|
||
|
print '[Interrupt]'
|