diff --git a/main.py b/main.py index ee4a4b3..9974a52 100644 --- a/main.py +++ b/main.py @@ -1,23 +1,5 @@ -import io, sys, os -# Imports the Google Cloud client library -from google.cloud import vision -from google.cloud.vision import types - -# Instantiates a client -client = vision.ImageAnnotatorClient() - -# The name of the image file to annotate -path = os.path.join(sys.path[0], 'DSC_6315.jpg') - -# Loads the image into memory -with io.open(path, 'rb') as image_file: - content = image_file.read() - -image = types.Image(content=content) - -# Performs label detection on the image file -response = client.label_detection(image=image) -labels = response.label_annotations - -print([label.description for label in labels]) \ No newline at end of file +if __name__ == "__main__": + import os + from package.app import run + os.exit(app.run()) \ No newline at end of file diff --git a/package/__pycache__/app.cpython-37.pyc b/package/__pycache__/app.cpython-37.pyc new file mode 100644 index 0000000..f7a99d5 Binary files /dev/null and b/package/__pycache__/app.cpython-37.pyc differ diff --git a/package/app.py b/package/app.py new file mode 100644 index 0000000..69ba3dd --- /dev/null +++ b/package/app.py @@ -0,0 +1,26 @@ +import io, sys, os + +# Imports the Google Cloud client library +from google.cloud import vision +from google.cloud.vision import types + +# Instantiates a client +client = vision.ImageAnnotatorClient() + +def run(): + + # The name of the image file to annotate + path = os.path.join(sys.path[0], 'DSC_6315.jpg') + print(path) + + # Loads the image into memory + with io.open(path, 'rb') as image_file: + content = image_file.read() + + image = types.Image(content=content) + + # Performs label detection on the image file + response = client.label_detection(image=image) + labels = response.label_annotations + + print([label.description for label in labels]) \ No newline at end of file diff --git a/package/xmp.py b/package/xmp.py new file mode 100644 index 0000000..7a5cc0c --- /dev/null +++ b/package/xmp.py @@ -0,0 +1,57 @@ +# from libxmp import file_to_dict +import os, sys, re + +basepath = "E:\\Photography\\Colorado 2019\\" +ext_filter = lambda file : file.endswith('.NEF') +mainPattern = r'\n\s+\n(?: .+<\/rdf:li>\n)*\s+<\/rdf:Bag>\n\s+<\/dc:subject>\n' +subPattern = r'(.*)\n' +subFormatPattern = ' {}\n' + +def getXMP(file, basepath=None): + xmpFile = file.rfind('.') + xmpFile = file[:xmpFile] + '.xmp' + if basepath: + xmpFile = os.path.join(basepath, xmpFile) + return xmpFile + +def writeTags(tags, filename): + fullpath = os.path.join(basepath, getXMP(filename)) + if not os.path.exists(fullpath): + raise FileNotFoundError(f'No XMP file found for {filename}.') + data = open(fullpath, 'r').read() + + # Detect and find the \n \n \n """ + look = data.find('') + 13 + data = data[:look] + addition + data[look:] + match = re.search(mainPattern, data) + + print(os.path.join(basepath, filename)) + print(fullpath) + print('. . .') + + # Get last matching tag + submatch = None + for submatch in re.finditer(subPattern, match.group(0)): + pass + # Calculate very end + spanend = match.span()[0] + (submatch.span()[1] if submatch else 0) + # add tags to end + data = data[:spanend] + ''.join(subFormatPattern.format(tag) for tag in tags) + data[spanend:] + # Write file to disk + open(fullpath, 'w').write( data) + +files = os.listdir(basepath) +print(f'Total Files: {len(files)}') +files = list(filter(ext_filter, files)) +print(f'Total Files after .NEF filter: {len(files)}') + +xmps = [file for file in files if os.path.exists(getXMP(file, basepath=basepath))] +print(f'Total .NEF files with .XMP pair: {len(xmps)}') +print(f'{len(xmps)} x 2 == {len(xmps) * 2}') + +select = files[43] +writeTags(['helpgod', 'ohfuck'], select) +print(select) \ No newline at end of file