Reputation: 722
Why aren't these methods working as I expect? I can get a line to print right after the method, however, none of the other functionality seems to work.
I'm trying to
Code:
#! /usr/bin/env python3
#This utility attempts to parse the output text files generated by dcp_inspect
#for faster inspection and when attending to multiple DCP inspections.
#dcp_inspect_parse runs on Python3.x
import logging
import os
import re
import sys
from glob import glob
logging.basicConfig(level=logging.DEBUG)
class DcpParser:
"""Parses DCP Inspector output files, and writes summary files to a
directory whose path is supplied at construction."""
def parse(self, dir):
"""Parses all files in the current directory."""
cpl = []
content = []
contentkind = []
container = []
errors = []
package = []
summary = []
mainsound = []
mainpicture = []
encryption = []
duration = []
fsp = []
dimensiontype = []
aspect = []
filesize = [2]
audio = []
cpltype = []
os.chdir(dir)
files = glob('*')
logging.debug("Found files: %s", files)
for file in files:
try:
with open(file) as data:
logging.debug("Opening file: %s", data)
print("Scanning...\t\t\t", file)
for each_line in data:
#self.prints()
self.file_summary()
#self.audio()
except:
pass
def prints(self):
print('Container: \t\t',container.strip())
print('CPL Type: \t\t',cpltype)
print('Duration: \t\t',duration.strip(','))
print('Frame Rate: \t\t',fps)
print('Aspect Ratio: \t\t',aspect.strip(','))
print('Dimension: \t\t',dimensiontype.strip(','))
print('Content Title: \t\t',content.strip(',').strip('""'))
print('Audio for DCP: \t\t', audio)
print('Package size: \t\t',filesize)
print('Encryption status: \t\t',encryption.upper().strip())
print('CPL ID: \t\t', cpl[2])
print('Content Kind: \t\t',contentkind.upper())
print('\n')
print('There are',errors[1],'Errors and',errors[3],'hints for', content.strip(','))
if errors[1] != '0':
print('could be issues\n')
else:
print('This DCP appears to be OK\n')
def file_summary(self):
print('made it to summary')
self.file_audio()
for each_line in data:
if 'summary'in each_line:
summary.extend(each_line.split())
print(summary.extend(each_line.split()))
for x in range(len(summary)):
if 'fps' in summary[x]:
fps = summary[(x-1)]
duration = summary[(x-2)].strip()
elif 'summary:' in summary[x]:
content = summary[(x+1)]
content.strip(',')
elif '2D' in summary[x]:
dimensiontype = summary[(x)]
aspect = summary[(x+1)].strip(',')
elif '3D' in summary[x]:
dimensiontype = summary[(x)]
aspect = summary[(x+1)]
elif 'Errors' in each_line:
errors=(each_line.split())
elif 'Package with total size'in each_line:
if 'Bytes 0' in each_line:
pass
else:
temp =[]
temp.extend(each_line.split())
filesize=(temp.pop()+' '+temp.pop())
def file_audio(self):
print('made it to audio')
self.file_picture()
for each_line in data:
if 'MainSound'in each_line:
if 'audio' in each_line:
m = re.search('([0-9]+)bps', each_line)
if m is None:
bps = 'bps error'
else:
bps = int(m.group(1))
m = re.search('([0-9]+)ch', each_line)
if m is None:
channels = 'channel error'
else:
channels = int(m.group(1))
m = re.search('([0-9]+)kHz', each_line)
if m is None:
bandwidth = 'bandwidth error'
else:
bandwidth = int(m.group(1))
audio = '%ich %ikHz %ibps' % (channels, bandwidth, bps)
def file_picture(self):
print('made it to picture')
for each_line in data:
if 'MainPicture'in each_line:
if 'pictures' in each_line:
temp = []
temp.extend(each_line.split(','))
container = temp[-2]
encryption= temp[-3]
def file_cplId(self):
print('cpl id')
if 'CPL Id:'in each_line:
cpl=(each_line.split())
def file_cplType(self):
if 'CPL type: 'in each_line:
cpltype=(each_line.split())
cpltype = cpltype[2]
def file_contentKind(self):
if 'ContentKind: 'in each_line:
contentkind=(each_line.split())
contentkind = contentkind[1]
def file_contentTitleText(self):
if 'ContentTitleText:'in each_line:
content=(each_line.split(':'))
content = content[1]
if __name__ == '__main__':
print("Input directory name: " + os.getcwd())
default_dir = os.getenv('HOME') + '/Desktop/dcp_output'
prompt = "Please enter the output directory name [" + default_dir + "]: "
dir = input(prompt) or default_dir
print("Output directory name: " + dir)
parser = DcpParser()
parser.parse(dir )
Upvotes: 0
Views: 68
Reputation:
It seems strange to me that none of your variables start with self.
which means that you do not have any class members, all variables are local in the respective method.
Also conveniently you used try except pass
around the main portion of your code which will ignore any error happening. One of these errors would be that you access data
in several methods which is neither a global variable nor assigned to previously in the method.
Remove try except pass
for debug purposes and report what happens.
Upvotes: 2