#!/usr/bin/python import csv,sys,os,shutil,ast,json,hashlib,pprint reference_rows = [] referenceSequences = './' with open('sequences.csv') as csv_reference: reference = csv.reader(csv_reference, delimiter=',') reference_header = next(reference) for row in reference: reference_rows.append(row) # get total number of rows print("Total no. of rows: %d"%(reference.line_num)) for j in range(reference.line_num-1): sequence = reference_rows[j][0] # read sequence file sequencefile1 = sequence + '.json' sequencefile = referenceSequences + reference_rows[j][2] + '/' + sequencefile1 # do some plausibility checks filename = reference_rows[j][2] + '/' + reference_rows[j][6] if os.path.isfile(filename): datasize = os.path.getsize(filename) if reference_rows[j][16] == "8": bit = 8 else: bit = 16 bytesize = int((int(reference_rows[j][29]) * int(reference_rows[j][10]) * int(reference_rows[j][11]) * 1.5 * bit)/8) if (bytesize == datasize): print((bytesize == datasize), j, reference.line_num, sequence, datasize, reference_rows[j][3], float(reference_rows[j][29])/float(reference_rows[j][17])) else: print((bytesize == datasize), j, reference.line_num, sequence, datasize, bytesize, reference_rows[j][29], int(8*datasize/(int(reference_rows[j][10]) * int(reference_rows[j][11]) * 1.5 * bit))) # writing if os.path.isfile(sequencefile): with open(sequencefile) as json_file: data = json.load(json_file) data["Sequence"]["Name"] = reference_rows[j][0] data["Sequence"]["TR26.955"] = reference_rows[j][1] data["Properties"]["duration"] = float(reference_rows[j][3]) data["Sequence"]["Background"] = reference_rows[j][4] data["Sequence"]["Scenario"] = reference_rows[j][5] data["Sequence"]["URI"] = reference_rows[j][6] if (reference_rows[j][7] == ''): md5_hash = hashlib.md5() with open(filename,"rb") as f: # Read and update hash in chunks of 4K for byte_block in iter(lambda: f.read(4096),b""): md5_hash.update(byte_block) data["Sequence"]["md5"] = md5_hash.hexdigest() print(data["Sequence"]["md5"]) else: data["Sequence"]["md5"] = reference_rows[j][7] data["Sequence"]["size"] = datasize data["Sequence"]["thumbnail"] = reference_rows[j][8] data["Sequence"]["preview"] = reference_rows[j][9] data["Properties"]["width"] = int(reference_rows[j][10]) data["Properties"]["height"] = int(reference_rows[j][11]) data["Properties"]["format"] = reference_rows[j][12] data["Properties"]["packing"] = reference_rows[j][13] data["Properties"]["scan"] = reference_rows[j][14] data["Properties"]["subsampling"] = reference_rows[j][15] data["Properties"]["bitDepth"] = int(reference_rows[j][16]) data["Properties"]["frameRate"] = float(reference_rows[j][17]) data["Properties"]["colourPrimaries"] = reference_rows[j][18] data["Properties"]["transferCharacteristics"] = reference_rows[j][19] data["Properties"]["matrixCoefficients"] = reference_rows[j][20] data["Properties"]["videoFullRangeFlag"] = reference_rows[j][21] data["Properties"]["chromaSampleLocType"] = reference_rows[j][22] data["Properties"]["sampleAspectRatio"] = reference_rows[j][23] if int(reference_rows[j][24]) == 1: data["Properties"]["HDRmasterDisplay"] = reference_rows[j][25] data["Properties"]["HDRmaxCLL"] = reference_rows[j][26] data["Properties"]["HDRmaxFALL"] = reference_rows[j][27] data["Properties"]["startFrame"] = int(reference_rows[j][28]) data["Properties"]["frameCount"] = int(reference_rows[j][29]) data["copyRight"] = reference_rows[j][30] data["Contact"]["Name"] = reference_rows[j][31] data["Contact"]["Company"] = reference_rows[j][32] data["Contact"]["e-mail"] = reference_rows[j][33] data["Contact"]["generation"] = reference_rows[j][34] with open(sequencefile, 'w') as outfile: json.dump(data, outfile, sort_keys=False, indent=4)