Getting started
This commit is contained in:
parent
8773df571f
commit
edae4b9fdc
3 changed files with 45 additions and 17 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Pipfile*
|
|
@ -1,3 +1,3 @@
|
||||||
# EXIF2txt
|
# EXIF2txt
|
||||||
|
|
||||||
Write EXIF metadata to text file,.
|
Write EXIF metadata to text file.
|
59
exif2txt.py
59
exif2txt.py
|
@ -1,4 +1,8 @@
|
||||||
# Write EXIF metadata to text file for pelican.photos plugin.
|
# 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
|
#import os
|
||||||
from os import listdir
|
from os import listdir
|
||||||
|
@ -11,6 +15,33 @@ from PIL.ExifTags import TAGS
|
||||||
from fraction import Fraction
|
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
|
# The first two functions are borrowed from github user @jpstroop
|
||||||
# https://gist.github.com/jpstroop/58a21d02370c8ba34dc8f0fdd4206d70
|
# https://gist.github.com/jpstroop/58a21d02370c8ba34dc8f0fdd4206d70
|
||||||
|
|
||||||
|
@ -32,10 +63,18 @@ def get_exif(image_path):
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
return None
|
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.
|
#Creates a text file with some exif meta data.
|
||||||
def write_exif_file(directory):
|
def write_exif_file(directory):
|
||||||
# Open the exif.txt file, create if it doesn't exist, in the current folder.
|
# 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):
|
for file in os.listdir(directory):
|
||||||
|
|
||||||
|
@ -48,7 +87,7 @@ def write_exif_file(directory):
|
||||||
os.path.join(file) + ': ' +
|
os.path.join(file) + ': ' +
|
||||||
str(image.get('Model')) +
|
str(image.get('Model')) +
|
||||||
' with a ' + str(image.get('LensModel')) +
|
' 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')) +
|
'f/' + str(image.get('FNumber')) +
|
||||||
' at ISO-' + str(image.get('ISOSpeedRatings')) +
|
' at ISO-' + str(image.get('ISOSpeedRatings')) +
|
||||||
'\n'
|
'\n'
|
||||||
|
@ -58,20 +97,8 @@ def write_exif_file(directory):
|
||||||
txt.close()
|
txt.close()
|
||||||
return None
|
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
|
# 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:
|
for subdirectory in subdirectories:
|
||||||
print(os.path.join(root, subdirectory))
|
print(os.path.join(root, subdirectory))
|
||||||
write_exif_file(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')
|
|
Loading…
Reference in a new issue