forked from khabdrick/wordpress-directus
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
extract-image.py
73 lines (54 loc) · 2.4 KB
/
extract-image.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import json
import requests
import os
# Replace with the path to your JSON file
json_file_path = "WP-data.json"
# Simulated function to upload an image to Directus and return the new image URL
def upload_to_directus(image_url):
# This is where you'd upload the image to Directus using its API.
# Below is a simulated Directus URL for demonstration purposes.
print(image_url)
image_content = requests.get(image_url).content
temp_image_path = "temp_image.jpg" # Temporary file path for the downloaded image
with open(temp_image_path, "wb") as file:
file.write(image_content)
headers = {"Authorization": "Bearer bqqTDS73DBsxPDUC9c0m5-xULZPAqeL3"}
files = {
"file": open(
temp_image_path, "rb"
) # Open the temporary file to include in the request
}
directus_upload_url = "https://your.directus.app/files"
print(f"Uploading image to Directus: {directus_upload_url}")
response = requests.post(directus_upload_url, files=files, headers=headers)
response_str = response.json()
directus_image_id = response_str["data"]["id"]
# Cleanup: remove the temporary image file
os.remove(temp_image_path)
# Construct the Directus image URL from the response
directus_image_url = f"https://your.directus.app/assets/{directus_image_id}"
print(f"Directus Image URL: {directus_image_url}")
return directus_image_url
# Load JSON data from the file
with open(json_file_path, "r") as file:
data = json.load(file)
# Iterate through each post in the JSON data
for post in data:
content = post["Content"]
# Check if there is an image in the content
if '<img src="' in content:
# Extract the image URL
start_index = content.index('<img src="') + 10
end_index = content.index('"', start_index)
image_url = content[start_index:end_index]
# Upload the image to Directus and get the new URL
new_image_url = upload_to_directus(image_url)
print(new_image_url)
# Replace the old image URL with the new one in the content
post["Content"] = content.replace(image_url, new_image_url)
# Output the modified JSON data to a new file or print it out
output_file_path = "modified_WP-data.json"
with open(output_file_path, "w") as file:
json.dump(data, file, indent=4)
# Print a message to indicate completion
print("The JSON data has been updated with Directus image URLs.")