76 lines
2.3 KiB
Python
76 lines
2.3 KiB
Python
import requests
|
|
import base64
|
|
import json
|
|
import argparse
|
|
import os
|
|
import glob
|
|
|
|
|
|
|
|
# Set up argument parser
|
|
parser = argparse.ArgumentParser(description='Test the /gen_latest_pic endpoint by sending the latest image from a directory.')
|
|
parser.add_argument('directory', type=str, nargs='?', default='.',
|
|
help='Directory to search for the latest image. Defaults to the current directory.')
|
|
args = parser.parse_args()
|
|
|
|
|
|
# The URL of the Flask application endpoint
|
|
url = 'http://127.0.0.1:5000/gen_latest_pic'
|
|
|
|
# Find the latest image in the specified directory
|
|
image_dir = args.directory
|
|
# Add more extensions if needed
|
|
image_extensions = ('*.png', '*.jpg', '*.jpeg', '*.gif', '*.bmp')
|
|
all_images = []
|
|
for ext in image_extensions:
|
|
# Use glob to find files with the current extension
|
|
all_images.extend(glob.glob(os.path.join(image_dir, ext)))
|
|
|
|
if not all_images:
|
|
print(f"Error: No image files found in the directory '{image_dir}'.")
|
|
exit()
|
|
|
|
# Get the latest file by modification time
|
|
try:
|
|
image_path = max(all_images, key=os.path.getmtime)
|
|
print(f"Using latest image: {image_path}")
|
|
except FileNotFoundError:
|
|
print(f"Error: The directory '{image_dir}' does not exist.")
|
|
exit()
|
|
|
|
|
|
# Read the image file in binary mode
|
|
with open(image_path, 'rb') as image_file:
|
|
# Encode the image data in base64
|
|
encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
|
|
|
|
# Prepare the data to be sent in the request
|
|
# The 'pid' is optional, so you can include it or not
|
|
data = {
|
|
'base_image': encoded_string,
|
|
'pid': 'user123' # Optional: you can change or remove this
|
|
}
|
|
|
|
# Set the headers for the request to indicate JSON content
|
|
headers = {
|
|
'Content-Type': 'application/json'
|
|
}
|
|
|
|
try:
|
|
# Send the POST request
|
|
response = requests.post(url, data=json.dumps(data), headers=headers, timeout=60)
|
|
|
|
# Check the response from the server
|
|
if response.status_code == 201:
|
|
print("Request was successful.")
|
|
print("Response JSON:", response.json())
|
|
else:
|
|
print(f"Request failed with status code {response.status_code}")
|
|
try:
|
|
print("Error response:", response.json())
|
|
except json.JSONDecodeError:
|
|
print("Error response could not be decoded as JSON:", response.text)
|
|
|
|
except requests.exceptions.RequestException as e:
|
|
print(f"An error occurred: {e}")
|