From 24fc45d20beaee3c97102d6ca55c83aad2e87552 Mon Sep 17 00:00:00 2001
From: "borondics.accounts@gmail.com" <borondics@users.noreply.github.com>
Date: Sun, 5 Jan 2025 21:05:11 +0100
Subject: [PATCH] Added a feature to process a single file

---
 tools/tinify_images.py | 37 +++++++++++++++++++++++++------------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/tools/tinify_images.py b/tools/tinify_images.py
index c42f948..407b8da 100644
--- a/tools/tinify_images.py
+++ b/tools/tinify_images.py
@@ -2,16 +2,29 @@
 import pathlib
 import tinify
 import time
-
-
-def tinify_images(path, extensions):
-
-    for file_path in [file for file in pathlib.Path(path).rglob('*')]:
-        if file_path.suffix in extensions:
-            print(f'Compressing image {file_path}')
-            source = tinify.from_file(file_path)
-            source.to_file(file_path)
+import os
+
+
+def tinify_images(target, extensions):
+
+    if os.path.isdir(target):
+        for file_path in [file for file in pathlib.Path(path).rglob('*')]:
+            if file_path.suffix in extensions:
+                print(f'Compressing image {file_path}')
+                source = tinify.from_file(file_path)
+                source.to_file(file_path)
+                time.sleep(0.1)
+    elif os.path.isfile(target):
+        _, file_extension = os.path.splitext(target)
+        print(f"This is a file. {file_extension}")
+        if file_extension in extensions:
+            print(f'Compressing image {target}')
+            source = tinify.from_file(target)
+            source.to_file(target)
             time.sleep(0.1)
+    else:
+        print(f'Your target {target} is neither a file nor a directory.')
+        
 
 
 if __name__ == '__main__':
@@ -20,8 +33,8 @@ def tinify_images(path, extensions):
     parser.add_argument('-k', '--key', type=str, required=True,
                         help='API key')
 
-    parser.add_argument('-p', '--path', type=str, required=True,
-                        help='The directory to search.')
+    parser.add_argument('-t', '--target', type=str, required=True,
+                        help='The directory to search or the file to tinify.')
 
     parser.add_argument('-e', '--extensions', type=str, nargs='*',
                         default=['.png', '.jpg'],
@@ -30,4 +43,4 @@ def tinify_images(path, extensions):
     args = parser.parse_args()
 
     tinify.key = args.key
-    tinify_images(args.path, args.extensions)
+    tinify_images(args.target, args.extensions)