Getting started

This commit is contained in:
Jeff MacKinnon 2022-10-25 18:01:06 -03:00
parent 8773df571f
commit edae4b9fdc
3 changed files with 45 additions and 17 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
Pipfile*

View file

@ -1,3 +1,3 @@
# EXIF2txt
Write EXIF metadata to text file,.
Write EXIF metadata to text file.

View file

@ -1,4 +1,8 @@
# Write EXIF metadata to text file for pelican.photos plugin.
# The original version of this was 100% hard coded script, this version takes arguments to allow you to do more with it as a single install.
# The original is here - https://gist.github.com/Jeffmackinnon/92c747b30a873129a28cddacfc61fbe1
import argparse # The library that will parse the arguments.
#import os
from os import listdir
@ -11,6 +15,33 @@ from PIL.ExifTags import TAGS
from fraction import Fraction
# Parser
parser = argparse.ArguemntParser( prog='exif2txt',
usage='%(prog)s [options] path',
allow_abbrev=False,
description='Write EXIF metadata to text file.',
epilog='it\'s my first public CLI python script, please be kind.',
)
parser.add_argument('Path',
metavar='path',
type=str,
help='top level path for with the images'
)
#
# Need to add the parser for what information we want to add for each
#
# Execute parse_args()
args = parser.parse_args()
input_path = args.Path
# Test to make sure that the Path given is valid.
if not os.path.isdir(input_path):
print('The path specified does not exist')
sys.exit()
# The first two functions are borrowed from github user @jpstroop
# https://gist.github.com/jpstroop/58a21d02370c8ba34dc8f0fdd4206d70
@ -32,10 +63,18 @@ def get_exif(image_path):
except AttributeError:
return None
# This is from J0el - https://gist.github.com/Jeffmackinnon/92c747b30a873129a28cddacfc61fbe1?permalink_comment_id=4185193#gistcomment-4185193
def exposure(ExposureTime):
try:
return( str(Fraction('ExposureTime')))
except:
return('None')
#Creates a text file with some exif meta data.
def write_exif_file(directory):
# Open the exif.txt file, create if it doesn't exist, in the current folder.
txt = open(directory+'/exif.txt', 'w')
txt = open(directory +'/exif.txt', 'w')
for file in os.listdir(directory):
@ -48,7 +87,7 @@ def write_exif_file(directory):
os.path.join(file) + ': ' +
str(image.get('Model')) +
' with a ' + str(image.get('LensModel')) +
' - ' + str(image.get('ExposureTime')) + 's, ' + # I want to change this to fractions, but it works for now.
' - ' + str(image.get(exposure(ExposureTime))) + 's, ' + # I want to change this to fractions, but it works for now.
'f/' + str(image.get('FNumber')) +
' at ISO-' + str(image.get('ISOSpeedRatings')) +
'\n'
@ -58,20 +97,8 @@ def write_exif_file(directory):
txt.close()
return None
# The directory of the source photos, the same as PHOTO_LIBRARY in pelicanconf.py
# I run this in a WSL instance, but pelican is run on the host windows machine, hence the sample directory
dir = '/mnt/c/Users/jeff/Pictures'
# This walks through the directories and for each it calls the write exif file function
for root, subdirectories, files in os.walk(dir):
for root, subdirectories, files in os.walk(input_path):
for subdirectory in subdirectories:
print(os.path.join(root, subdirectory))
write_exif_file(os.path.join(root, subdirectory))
# This is from J0el - https://gist.github.com/Jeffmackinnon/92c747b30a873129a28cddacfc61fbe1?permalink_comment_id=4185193#gistcomment-4185193
def exposure(ExposureTime):
try:
return( str(Fraction('ExposureTime')))
except:
return('None')