mirror of
https://github.com/placeAtlas/atlas.git
synced 2024-09-27 12:39:18 +02:00
Sort image keys and extend to whiteout in formatter
This commit is contained in:
parent
82d7c9d06e
commit
72829f392b
1 changed files with 41 additions and 6 deletions
|
@ -3,6 +3,7 @@
|
||||||
import re
|
import re
|
||||||
import json
|
import json
|
||||||
import traceback
|
import traceback
|
||||||
|
from typing import List
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Examples:
|
Examples:
|
||||||
|
@ -99,7 +100,7 @@ def collapse_links(entry: dict):
|
||||||
subreddit = match.group(2)
|
subreddit = match.group(2)
|
||||||
|
|
||||||
entry["links"]["subreddit"][i] = subreddit
|
entry["links"]["subreddit"][i] = subreddit
|
||||||
|
|
||||||
|
|
||||||
return entry
|
return entry
|
||||||
|
|
||||||
|
@ -112,7 +113,7 @@ def remove_extras(entry: dict):
|
||||||
entry["subreddit"] = re.sub(r'[.,]+$', r'', entry["subreddit"])
|
entry["subreddit"] = re.sub(r'[.,]+$', r'', entry["subreddit"])
|
||||||
|
|
||||||
for key in entry:
|
for key in entry:
|
||||||
if not entry[key] or not isinstance(entry[key], str):
|
if not entry[key] or not isinstance(entry[key], str):
|
||||||
continue
|
continue
|
||||||
# Leading and trailing spaces
|
# Leading and trailing spaces
|
||||||
entry[key] = entry[key].strip()
|
entry[key] = entry[key].strip()
|
||||||
|
@ -157,7 +158,7 @@ def fix_r_caps(entry: dict):
|
||||||
|
|
||||||
if not "description" in entry or not entry['description']:
|
if not "description" in entry or not entry['description']:
|
||||||
return entry
|
return entry
|
||||||
|
|
||||||
entry["description"] = re.sub(r'([^\w]|^)\/R\/', '\1/r/', entry["description"])
|
entry["description"] = re.sub(r'([^\w]|^)\/R\/', '\1/r/', entry["description"])
|
||||||
entry["description"] = re.sub(r'([^\w]|^)R\/', '\1r/', entry["description"])
|
entry["description"] = re.sub(r'([^\w]|^)R\/', '\1r/', entry["description"])
|
||||||
|
|
||||||
|
@ -224,7 +225,7 @@ def convert_website_to_discord(entry: dict):
|
||||||
|
|
||||||
def convert_subreddit_to_website(entry: dict):
|
def convert_subreddit_to_website(entry: dict):
|
||||||
"""
|
"""
|
||||||
Converts the links on "subreddit" to a "website" if needed. This also supports Reddit users (/u/reddit).
|
Converts the links on "subreddit" to a "website" if needed. This also supports Reddit users (/u/reddit).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if "links" in entry and "subreddit" in entry["links"]:
|
if "links" in entry and "subreddit" in entry["links"]:
|
||||||
|
@ -253,7 +254,7 @@ def remove_empty_and_similar(entry: dict):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if "links" in entry:
|
if "links" in entry:
|
||||||
|
|
||||||
keys = list(entry["links"])
|
keys = list(entry["links"])
|
||||||
for key in keys:
|
for key in keys:
|
||||||
small = list(map(lambda x: x.lower(), entry["links"][key]))
|
small = list(map(lambda x: x.lower(), entry["links"][key]))
|
||||||
|
@ -262,6 +263,36 @@ def remove_empty_and_similar(entry: dict):
|
||||||
|
|
||||||
return entry
|
return entry
|
||||||
|
|
||||||
|
def sort_image_keys(entry: dict):
|
||||||
|
"""
|
||||||
|
Alphabetizes comma-separated path and center keys.
|
||||||
|
"""
|
||||||
|
for outer_key in ["path", "center"]:
|
||||||
|
image_keys: List[str] = list(entry[outer_key].keys())
|
||||||
|
for image_key in image_keys:
|
||||||
|
key_split = image_key.split(", ")
|
||||||
|
new_key = ", ".join(sorted(key_split))
|
||||||
|
if new_key != image_key:
|
||||||
|
entry[outer_key][new_key] = entry[outer_key][image_key]
|
||||||
|
del(entry[outer_key][image_key])
|
||||||
|
|
||||||
|
return entry
|
||||||
|
|
||||||
|
def extend_entries_to_whiteout(entry: dict):
|
||||||
|
"""
|
||||||
|
If an entry ends on the final non-whiteout image, extends the image to the last whiteout image where entries cans still be made out.
|
||||||
|
"""
|
||||||
|
END_NORMAL_IMAGE = "164"
|
||||||
|
END_WHITEOUT_IMAGE = "166"
|
||||||
|
for outer_key in ["path", "center"]:
|
||||||
|
image_keys: List[str] = list(entry[outer_key].keys())
|
||||||
|
for image_key in image_keys:
|
||||||
|
if END_NORMAL_IMAGE in image_key:
|
||||||
|
new_key = image_key.replace(END_NORMAL_IMAGE, END_WHITEOUT_IMAGE)
|
||||||
|
entry[outer_key][new_key] = entry[outer_key][image_key]
|
||||||
|
del(entry[outer_key][image_key])
|
||||||
|
|
||||||
|
return entry
|
||||||
|
|
||||||
def validate(entry: dict):
|
def validate(entry: dict):
|
||||||
"""
|
"""
|
||||||
|
@ -273,7 +304,7 @@ def validate(entry: dict):
|
||||||
2: Warnings that may effect user experience when interacting with the entry
|
2: Warnings that may effect user experience when interacting with the entry
|
||||||
3: Errors that make the entry inaccessible or broken.
|
3: Errors that make the entry inaccessible or broken.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return_status = 0
|
return_status = 0
|
||||||
if (not "id" in entry or (not entry['id'] and not entry['id'] == 0)):
|
if (not "id" in entry or (not entry['id'] and not entry['id'] == 0)):
|
||||||
print(f"Wait, no id here! How did this happened? {entry}")
|
print(f"Wait, no id here! How did this happened? {entry}")
|
||||||
|
@ -344,6 +375,10 @@ def print_(*args, **kwargs):
|
||||||
entry = remove_duplicate_points(entry)
|
entry = remove_duplicate_points(entry)
|
||||||
print_("Remove empty items...")
|
print_("Remove empty items...")
|
||||||
entry = remove_empty_and_similar(entry)
|
entry = remove_empty_and_similar(entry)
|
||||||
|
print_("Sorting image keys...")
|
||||||
|
entry = sort_image_keys(entry)
|
||||||
|
print_("Extending entries to whiteout...")
|
||||||
|
entry = extend_entries_to_whiteout(entry)
|
||||||
print_("Validating...")
|
print_("Validating...")
|
||||||
status_code = validate(entry)
|
status_code = validate(entry)
|
||||||
print_("Completed!")
|
print_("Completed!")
|
||||||
|
|
Loading…
Reference in a new issue