Skip to content

Commit 9c5184e

Browse files
committed
Improve validation and progress logging
1 parent c330427 commit 9c5184e

File tree

9 files changed

+187
-75
lines changed

9 files changed

+187
-75
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ This is a list of parameters you can change in `local_settings.py`.
9090

9191
### Notes
9292

93-
* `OUTPUT_MOVIE` currently will not be processed if the height of the full-page screenshot is >= 10,000px after it is resized to a width of 1280px.
94-
* `OUTPUT_MOVIE` only accepts mp4 format.
93+
* `OUTPUT_MOVIE` currently will not be processed if the height of the full-page screenshot is >= 20,000px after it is resized to a width of 1280px.
94+
* `OUTPUT_MOVIE` currently only accepts mp4 format.
9595

9696
### Example
9797

helpers.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
import re
23
import json
34
import base64
45
from selenium import webdriver
@@ -8,6 +9,77 @@
89
from selenium.webdriver.chrome.options import Options
910

1011

12+
def get_validation(user_input):
13+
14+
message = ""
15+
16+
# Validate url
17+
try:
18+
response = requests.head(user_input["url"])
19+
if response.status_code not in (200, 302):
20+
message += f"¦— url - not valid or not accessible\n"
21+
except:
22+
message += f"¦— url - not valid or not accessible\n"
23+
24+
# Validate wait
25+
if user_input["wait"] > 60:
26+
message += f"¦— wait time not valid\n"
27+
28+
# Validate output dict
29+
for index, key in enumerate(list(user_input.keys())[3:], start=4):
30+
dictionary = user_input[key]
31+
# print(f"{index} — {key}: {dictionary}")
32+
for indx, ky in dictionary.items():
33+
dict = dictionary[indx]
34+
# print(f"{indx}: {dict}")
35+
# Request
36+
if indx == "request":
37+
if dict not in (True, False):
38+
message += f"¦— {key} - request not valid\n"
39+
# Format
40+
elif indx == "format":
41+
if dict not in ("png"):
42+
message += f"¦— {key} - format not valid\n"
43+
# doc_pad_h
44+
elif indx == "doc_pad_h":
45+
if isinstance(dict, int) and (0 < dict < 1000):
46+
pass
47+
else:
48+
message += f"¦— {key} - doc_pad_h not valid\n"
49+
# doc_pad_v
50+
elif indx == "doc_pad_v":
51+
if isinstance(dict, int) and (0 < dict < 1000):
52+
pass
53+
else:
54+
message += f"¦— {key} - doc_pad_v not valid\n"
55+
# doc_fill_color
56+
elif indx == "doc_fill_color":
57+
result = validate_hex_color(dict)
58+
if result == 0:
59+
message += f"¦— {key} - doc_fill_color not valid\n"
60+
# base_stroke_color
61+
elif indx == "base_stroke_color":
62+
result = validate_hex_color(dict)
63+
if result == 0:
64+
message += f"¦— {key} - base_stroke_color not valid\n"
65+
# base_fill_color
66+
elif indx == "base_fill_color":
67+
result = validate_hex_color(dict)
68+
if result == 0:
69+
message += f"¦— {key} - base_fill_color not valid\n"
70+
71+
return message
72+
73+
74+
def validate_hex_color(color):
75+
pattern = r'^#([A-Fa-f0-9]{6})$'
76+
match = re.match(pattern, color)
77+
if match:
78+
return 1
79+
else:
80+
return 0
81+
82+
1183
def get_screenshot(remote_url, wait, directory_path, input):
1284

1385
# Set options

local_settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"output_full": {
3333
"request": True,
3434
"format": "png",
35-
"doc_pad_h": 300,
35+
"doc_pad_h": 30,
3636
"doc_pad_v": 20,
3737
"doc_fill_color": "#FFFFFF",
3838
"base_stroke_color": "#23445D",

output_browser.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ def process_request_browser(blueprint_user, blueprint_system, directory_main, di
99
filename_output_browser_base_svg = "output_browser_base.svg"
1010
filename_output_browser_base_png = "output_browser_base.png"
1111
get_browser_base(blueprint_user, directory_main, filename_output_browser_base_svg, filename_output_browser_base_png)
12-
print("OUTPUT_BROWSER - base - generated.")
12+
# print("OUTPUT_BROWSER - base - generated.")
1313

1414
# Create PNG overlay
1515
filename_input = blueprint_system["filename_large"]
1616
filename_output = filename_output_browser_overlay_png = "output_browser_overlay.png"
1717
new_width = blueprint_system["width_medium"]
1818
height_crop = blueprint_system["medium_height_crop"]
1919
get_screenshot_resized(directory_main, directory_screenshots, filename_input, filename_output, new_width, height_crop)
20-
print("OUTPUT_BROWSER - overlay - generated.")
20+
# print("OUTPUT_BROWSER - overlay - generated.")
2121

2222
# Combine base layer and overlay
2323
base = f"{directory_main}/{filename_output_browser_base_png}"
@@ -26,7 +26,7 @@ def process_request_browser(blueprint_user, blueprint_system, directory_main, di
2626
lng = 64
2727
filename_output_browser_final_temp = "output_browser_temp.png"
2828
get_screenshot_resized_overlaid(base, overlay, lat, lng, directory_main, filename_output_browser_final_temp)
29-
print("OUTPUT_BROWSER - temp - generated.")
29+
# print("OUTPUT_BROWSER - temp - generated.")
3030

3131
# Add padding
3232
right = blueprint_user["doc_pad_h"]
@@ -36,7 +36,7 @@ def process_request_browser(blueprint_user, blueprint_system, directory_main, di
3636
color = blueprint_user["doc_fill_color"]
3737
filename_output_browser_final = "output_browser_final.png"
3838
get_output_padded(directory_main, filename_output_browser_final_temp, filename_output_browser_final, right, left, top, bottom, color)
39-
print("OUTPUT_BROWSER - final - generated.")
39+
# print("OUTPUT_BROWSER - final - generated.")
4040

4141
# Delete temp files
4242
cleanup(directory_main, filename_output_browser_base_png)

output_full.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def process_request_full(blueprint_user, blueprint_system, directory_main, direc
3333
filename_output = filename_output_full_overlay_png = "output_full_overlay.png"
3434
get_output_full_overlay_resized(blueprint_system, directory_main, directory_screenshots, filename_input, filename_output)
3535
get_output_full_overlay_bordered(blueprint_user, directory_main, filename_output)
36-
print("OUTPUT_FULL - overlay - generated.")
36+
# print("OUTPUT_FULL - overlay - generated.")
3737

3838
output_full_base = Image.open(f"{directory_main}/{filename_output_full_base_png}")
3939
output_full_overlay = Image.open(f"{directory_main}/{filename_output_full_overlay_png}")
@@ -57,7 +57,7 @@ def process_request_full(blueprint_user, blueprint_system, directory_main, direc
5757
color = blueprint_user["doc_fill_color"]
5858
filename_output_browser_final = "output_full_final.png"
5959
get_output_padded(directory_main, filename_output_full_temp, filename_output_browser_final, right, left, top, bottom, color)
60-
print("OUTPUT_FULL - final - generated.")
60+
# print("OUTPUT_FULL - final - generated.")
6161

6262
# Delete temp files
6363
cleanup(directory_main, filename_output_full_base_svg)

output_main.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ def process_request_main(blueprint_user, blueprint_system, directory_main, direc
2020
filename_output_main_desktop_base_svg = "output_main_desktop_base.svg"
2121
filename_output_main_desktop_base_png = "output_main_desktop_base.png"
2222
get_main_desktop_final(blueprint_user, directory_main, filename_output_main_desktop_base_svg, filename_output_main_desktop_base_png)
23-
print("OUTPUT_MAIN - desktop - base - generated.")
23+
# print("OUTPUT_MAIN - desktop - base - generated.")
2424

2525
# Create overlay - desktop
2626
filename_input = desktop["filename_large"]
2727
filename_output = filename_output_main_desktop_overlay_png = "output_main_desktop_overlay.png"
2828
new_width = desktop["width_small"]
2929
height_crop = desktop["small_height_crop"]
3030
get_screenshot_resized(directory_main, directory_screenshots, filename_input, filename_output, new_width, height_crop)
31-
print("OUTPUT_MAIN - desktop - overlay - generated.")
31+
# print("OUTPUT_MAIN - desktop - overlay - generated.")
3232

3333
# Combine base and overlay - desktop
3434
base = f"{directory_main}/{filename_output_main_desktop_base_png}"
@@ -37,7 +37,7 @@ def process_request_main(blueprint_user, blueprint_system, directory_main, direc
3737
lng = 74
3838
filename_output_main_desktop_final = "output_main_desktop_final.png"
3939
get_screenshot_resized_overlaid(base, overlay, lat, lng, directory_main, filename_output_main_desktop_final)
40-
print("OUTPUT_MAIN - desktop - final - generated.")
40+
# print("OUTPUT_MAIN - desktop - final - generated.")
4141

4242
# Delete temp files - desktop
4343
cleanup(directory_main, filename_output_main_desktop_base_png)
@@ -52,15 +52,15 @@ def process_request_main(blueprint_user, blueprint_system, directory_main, direc
5252
filename_output_main_laptop_base_svg = "output_main_laptop_base.svg"
5353
filename_output_main_laptop_base_png = "output_main_laptop_base.png"
5454
get_main_laptop_final(blueprint_user, directory_main, filename_output_main_laptop_base_svg, filename_output_main_laptop_base_png)
55-
print("OUTPUT_MAIN - laptop - base - generated.")
55+
# print("OUTPUT_MAIN - laptop - base - generated.")
5656

5757
# Create overlay - laptop
5858
filename_input = laptop["filename_large"]
5959
filename_output = filename_output_main_laptop_overlay_png = "output_main_laptop_overlay.png"
6060
new_width = laptop["width_small"]
6161
height_crop = laptop["small_height_crop"]
6262
get_screenshot_resized(directory_main, directory_screenshots, filename_input, filename_output, new_width, height_crop)
63-
print("OUTPUT_MAIN - laptop - overlay - generated.")
63+
# print("OUTPUT_MAIN - laptop - overlay - generated.")
6464

6565
# Combine base and overlay - laptop
6666
base = f"{directory_main}/{filename_output_main_laptop_base_png}"
@@ -69,7 +69,7 @@ def process_request_main(blueprint_user, blueprint_system, directory_main, direc
6969
lng = 34
7070
filename_output_main_laptop_final = "output_main_laptop_final.png"
7171
get_screenshot_resized_overlaid(base, overlay, lat, lng, directory_main, filename_output_main_laptop_final)
72-
print("OUTPUT_MAIN - laptop - final - generated.")
72+
# print("OUTPUT_MAIN - laptop - final - generated.")
7373

7474
# Delete temp files - laptop
7575
cleanup(directory_main, filename_output_main_laptop_base_png)
@@ -84,15 +84,15 @@ def process_request_main(blueprint_user, blueprint_system, directory_main, direc
8484
filename_output_main_tablet_base_svg = "output_main_tablet_base.svg"
8585
filename_output_main_tablet_base_png = "output_main_tablet_base.png"
8686
get_main_tablet_final(blueprint_user, directory_main, filename_output_main_tablet_base_svg, filename_output_main_tablet_base_png)
87-
print("OUTPUT_MAIN - tablet - base - generated.")
87+
# print("OUTPUT_MAIN - tablet - base - generated.")
8888

8989
# Create overlay - tablet
9090
filename_input = tablet["filename_large"]
9191
filename_output = filename_output_main_tablet_overlay_png = "output_main_tablet_overlay.png"
9292
new_width = tablet["width_small"]
9393
height_crop = tablet["small_height_crop"]
9494
get_screenshot_resized(directory_main, directory_screenshots, filename_input, filename_output, new_width, height_crop)
95-
print("OUTPUT_MAIN - tablet - overlay - generated.")
95+
# print("OUTPUT_MAIN - tablet - overlay - generated.")
9696

9797
# Combine base and overlay - tablet
9898
base = f"{directory_main}/{filename_output_main_tablet_base_png}"
@@ -101,7 +101,7 @@ def process_request_main(blueprint_user, blueprint_system, directory_main, direc
101101
lng = 34
102102
filename_output_main_tablet_final = "output_main_tablet_final.png"
103103
get_screenshot_resized_overlaid(base, overlay, lat, lng, directory_main, filename_output_main_tablet_final)
104-
print("OUTPUT_MAIN - tablet - final - generated.")
104+
# print("OUTPUT_MAIN - tablet - final - generated.")
105105

106106
# Delete temp files - tablet
107107
cleanup(directory_main, filename_output_main_tablet_base_png)
@@ -116,15 +116,15 @@ def process_request_main(blueprint_user, blueprint_system, directory_main, direc
116116
filename_output_main_smartphone_base_svg = "output_main_smartphone_base.svg"
117117
filename_output_main_smartphone_base_png = "output_main_smartphone_base.png"
118118
get_main_smartphone_final(blueprint_user, directory_main, filename_output_main_smartphone_base_svg, filename_output_main_smartphone_base_png)
119-
print("OUTPUT_MAIN - smartphone - base - generated.")
119+
# print("OUTPUT_MAIN - smartphone - base - generated.")
120120

121121
# Create overlay - smartphone
122122
filename_input = smartphone["filename_large"]
123123
filename_output = filename_output_main_smartphone_overlay_png = "output_main_smartphone_overlay.png"
124124
new_width = smartphone["width_small"]
125125
height_crop = smartphone["small_height_crop"]
126126
get_screenshot_resized(directory_main, directory_screenshots, filename_input, filename_output, new_width, height_crop)
127-
print("OUTPUT_MAIN - smartphone - overlay - generated.")
127+
# print("OUTPUT_MAIN - smartphone - overlay - generated.")
128128

129129
# Combine base and overlay - smartphone
130130
base = f"{directory_main}/{filename_output_main_smartphone_base_png}"
@@ -133,7 +133,7 @@ def process_request_main(blueprint_user, blueprint_system, directory_main, direc
133133
lng = 24
134134
filename_output_main_smartphone_final = "output_main_smartphone_final.png"
135135
get_screenshot_resized_overlaid(base, overlay, lat, lng, directory_main, filename_output_main_smartphone_final)
136-
print("OUTPUT_MAIN - smartphone - final - generated.")
136+
# print("OUTPUT_MAIN - smartphone - final - generated.")
137137

138138
# Delete temp files - smartphone
139139
cleanup(directory_main, filename_output_main_smartphone_base_png)
@@ -169,7 +169,7 @@ def process_request_main(blueprint_user, blueprint_system, directory_main, direc
169169
filename_output_main_all_temp = "output_main_all_temp.png"
170170
output_main_all_base.save(f"{directory_main}/{filename_output_main_all_temp}")
171171

172-
print("OUTPUT_MAIN - all - temp - generated.")
172+
# print("OUTPUT_MAIN - all - temp - generated.")
173173

174174

175175
# ################################################## #
@@ -185,7 +185,7 @@ def process_request_main(blueprint_user, blueprint_system, directory_main, direc
185185
filename_output_main_all_final = "output_main_final.png"
186186
get_output_padded(directory_main, filename_output_main_all_temp, filename_output_main_all_final, right, left, top, bottom, color)
187187

188-
print("OUTPUT_MAIN - all - final - generated.")
188+
# print("OUTPUT_MAIN - all - final - generated.")
189189

190190

191191
# ################################################## #

output_mobiles.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ def process_request_mobiles(blueprint_user, blueprint_system, directory_main, di
3333
filename_output_mobiles_tablet_base_svg = "output_mobiles_tablet_base.svg"
3434
filename_output_mobiles_tablet_base_png = "output_mobiles_tablet_base.png"
3535
get_output_mobiles_base(blueprint_user, directory_main, svg_tablet, filename_output_mobiles_tablet_base_svg, filename_output_mobiles_tablet_base_png)
36-
print("OUTPUT_MOBILES - tablet - base - generated.")
36+
# print("OUTPUT_MOBILES - tablet - base - generated.")
3737

3838
# Create overlay - tablet - temp
3939
filename_input = tablet["filename_large"]
4040
filename_output_temp = filename_output_mobiles_tablet_overlay_temp_png = "output_mobiles_tablet_overlay_temp.png"
4141
new_width = tablet["width_medium"]
4242
height_crop = tablet["medium_height_crop"]
4343
get_screenshot_resized(directory_main, directory_screenshots, filename_input, filename_output_temp, new_width, height_crop)
44-
print("OUTPUT_MOBILES - tablet - overlay - generated.")
44+
# print("OUTPUT_MOBILES - tablet - overlay - generated.")
4545

4646
# Create overlay - tablet - final
4747
filename_output_final = filename_output_mobiles_tablet_overlay_final_png = "output_mobiles_tablet_overlay_final.png"
@@ -54,7 +54,7 @@ def process_request_mobiles(blueprint_user, blueprint_system, directory_main, di
5454
lng = 36
5555
filename_output_mobiles_tablet_final = "output_mobiles_tablet_final.png"
5656
get_output_mobiles_overlay_final(base, overlay, lat, lng, directory_main, filename_output_mobiles_tablet_final)
57-
print("OUTPUT_BROWSER - tablet - temp - generated.")
57+
# print("OUTPUT_BROWSER - tablet - temp - generated.")
5858

5959

6060
# ################################################## #
@@ -81,15 +81,15 @@ def process_request_mobiles(blueprint_user, blueprint_system, directory_main, di
8181
filename_output_mobiles_smartphone_base_svg = "output_mobiles_smartphone_base.svg"
8282
filename_output_mobiles_smartphone_base_png = "output_mobiles_smartphone_base.png"
8383
get_output_mobiles_base(blueprint_user, directory_main, svg_smartphone, filename_output_mobiles_smartphone_base_svg, filename_output_mobiles_smartphone_base_png)
84-
print("OUTPUT_MOBILES - smartphone - base - generated.")
84+
# print("OUTPUT_MOBILES - smartphone - base - generated.")
8585

8686
# Create overlay - smartphone - temp
8787
filename_input = smartphone["filename_large"]
8888
filename_output_temp = filename_output_mobiles_smartphone_overlay_temp_png = "output_mobiles_smartphone_overlay_temp.png"
8989
new_width = smartphone["width_medium"]
9090
height_crop = smartphone["medium_height_crop"]
9191
get_screenshot_resized(directory_main, directory_screenshots, filename_input, filename_output_temp, new_width, height_crop)
92-
print("OUTPUT_MOBILES - smartphone - overlay - generated.")
92+
# print("OUTPUT_MOBILES - smartphone - overlay - generated.")
9393

9494
# Create overlay - smartphone - final
9595
filename_output_final = filename_output_mobiles_smartphone_overlay_final_png = "output_mobiles_smartphone_overlay_final.png"
@@ -102,7 +102,7 @@ def process_request_mobiles(blueprint_user, blueprint_system, directory_main, di
102102
lng = 23
103103
filename_output_mobiles_smartphone_final = "output_mobiles_smartphone_final.png"
104104
get_output_mobiles_overlay_final(base, overlay, lat, lng, directory_main, filename_output_mobiles_smartphone_final)
105-
print("OUTPUT_BROWSER - smartphone - temp - generated.")
105+
# print("OUTPUT_BROWSER - smartphone - temp - generated.")
106106

107107

108108
# ################################################## #
@@ -126,7 +126,7 @@ def process_request_mobiles(blueprint_user, blueprint_system, directory_main, di
126126
filename_output_mobiles_all_temp = "output_mobiles_all_temp.png"
127127
output_mobiles_all_base.save(f"{directory_main}/{filename_output_mobiles_all_temp}")
128128

129-
print("OUTPUT_MOBILES- all - temp - generated.")
129+
# print("OUTPUT_MOBILES - all - temp - generated.")
130130

131131

132132
# ################################################## #
@@ -141,7 +141,7 @@ def process_request_mobiles(blueprint_user, blueprint_system, directory_main, di
141141
color = blueprint_user["doc_fill_color"]
142142
filename_output_mobiles_final = "output_mobiles.png"
143143
get_output_padded(directory_main, filename_output_mobiles_all_temp, filename_output_mobiles_final, right, left, top, bottom, color)
144-
print("OUTPUT_MOBILES - final - generated.")
144+
# print("OUTPUT_MOBILES - final - generated.")
145145

146146

147147
# ################################################## #

output_video.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def process_request_video(blueprint_user, blueprint_system, directory_main, dire
1515
new_height = int(blueprint_system["width_large"] * aspect_ratio)
1616

1717
# Set max height limit to 10,000 [TBD]
18-
if new_height >= 10000:
18+
if new_height >= 20000:
1919
return 0
2020

2121
else:
@@ -55,7 +55,7 @@ def process_request_video(blueprint_user, blueprint_system, directory_main, dire
5555
video.duration = total_duration
5656
if not filename_output_video.endswith('.mp4'):
5757
output += '.mp4'
58-
video.write_videofile(f"{directory_main}/{filename_output_video}", fps=26)
58+
video.write_videofile(f"{directory_main}/{filename_output_video}", fps=26, logger=None)
5959

6060
cleanup(directory_main, filename_output_video_clip)
6161
cleanup(directory_main, png_filename)

0 commit comments

Comments
 (0)