浏览代码

:truck: Split one functionality by script

DricomDragon 1 月之前
父节点
当前提交
b5c0d94a9d
共有 2 个文件被更改,包括 54 次插入13 次删除
  1. 53 0
      exifScripts/exif_offset.py
  2. 1 13
      exifScripts/exif_shift.py

+ 53 - 0
exifScripts/exif_offset.py

@@ -0,0 +1,53 @@
+#!/usr/bin/python3
+
+import sys
+import piexif as x
+import datetime as dt
+
+offset = '+02:00'
+print('Override offset with', offset)
+
+if len(sys.argv) < 1:
+    print(sys.argv[0], 'img1.jpg img2.jpg')
+    quit()
+
+def codesOfLabelsContaining(value: str):
+    codes = []
+    for (k, v) in x.TAGS['Exif'].items():
+        if value in v['name']:
+            codes.append(k)
+    return codes
+
+timeCodes = codesOfLabelsContaining('Time')
+offsetCodes = codesOfLabelsContaining('OffsetTime')
+
+filenames = sys.argv[1:]
+
+
+def describeExif(exif):
+    for k in timeCodes:
+        if k in exif.keys():
+            print('Exif[', k, ']=', exif[k], '->', x.TAGS['Exif'][k]['name'])
+        else:
+            print('Exif[', k, ']=', '?', '->', x.TAGS['Exif'][k]['name'])
+
+
+def overrideOffset(exifDict):
+    e = exifDict['Exif']
+    offsetBytes = offset.encode()
+    for k in offsetCodes:
+        print('Exif[', k, ']=', e[k], '->', offsetBytes, ':', x.TAGS['Exif'][k]['name'])
+        e[k] = offsetBytes
+
+    return exifDict
+
+
+for filename in filenames:
+    print(filename)
+    exifDict = x.load(filename)
+    describeExif(exifDict['Exif'])
+    exifDict = overrideOffset(exifDict)
+    describeExif(exifDict['Exif'])
+    exifBytes = x.dump(exifDict)
+    x.insert(exifBytes, filename)
+    print()

+ 1 - 13
exifScripts/exif_shift.py

@@ -8,7 +8,7 @@ shift = dt.timedelta(hours = 1, minutes = 6)
 print('Shift exif date time by', shift)
 
 if len(sys.argv) < 1:
-    print('shift img1.jpg img2.jpg')
+    print(sys.argv[0], 'img1.jpg img2.jpg')
     quit()
 
 def codesOfLabelsContaining(value: str):
@@ -20,7 +20,6 @@ def codesOfLabelsContaining(value: str):
 
 timeCodes = codesOfLabelsContaining('Time')
 dateTimeCodes = codesOfLabelsContaining('DateTime')
-offsetCodes = codesOfLabelsContaining('OffsetTime')
 
 filenames = sys.argv[1:]
 
@@ -59,22 +58,11 @@ def shiftDateTime(exifDict):
     return exifDict
 
 
-def overrideOffset(exifDict, offset: str):
-    e = exifDict['Exif']
-    offsetBytes = offset.encode()
-    for k in offsetCodes:
-        print('Exif[', k, ']=', e[k], '->', offsetBytes, ':', x.TAGS['Exif'][k]['name'])
-        e[k] = offsetBytes
-
-    return exifDict
-
-
 for filename in filenames:
     print(filename)
     exifDict = x.load(filename)
     describeExif(exifDict['Exif'])
     exifDict = shiftDateTime(exifDict)
-    exifDict = overrideOffset(exifDict, '+02:00')
     describeExif(exifDict['Exif'])
     exifBytes = x.dump(exifDict)
     x.insert(exifBytes, filename)