mirror of
https://github.com/Dictionarry-Hub/profilarr.git
synced 2026-01-28 13:30:56 +01:00
70 lines
2.5 KiB
Python
70 lines
2.5 KiB
Python
import os
|
|
import yaml
|
|
from collections import OrderedDict
|
|
from .file_utils import get_next_id, generate_filename, get_current_timestamp, sanitize_input
|
|
|
|
REGEX_DIR = 'regex_patterns'
|
|
|
|
def save_regex(data):
|
|
ordered_data = OrderedDict()
|
|
if 'id' in data and data['id'] != 0:
|
|
ordered_data['id'] = data['id']
|
|
else:
|
|
ordered_data['id'] = get_next_id(REGEX_DIR)
|
|
|
|
ordered_data['name'] = sanitize_input(data.get('name', ''))
|
|
ordered_data['description'] = sanitize_input(data.get('description', ''))
|
|
ordered_data['pattern'] = sanitize_input(data.get('pattern', ''))
|
|
ordered_data['regex101Link'] = sanitize_input(data.get('regex101Link', ''))
|
|
|
|
if ordered_data['id'] != 0: # Existing regex
|
|
existing_data = load_regex(ordered_data['id'])
|
|
if existing_data:
|
|
ordered_data['date_created'] = existing_data.get('date_created', get_current_timestamp())
|
|
else:
|
|
ordered_data['date_created'] = get_current_timestamp()
|
|
else: # New regex
|
|
ordered_data['date_created'] = get_current_timestamp()
|
|
|
|
ordered_data['date_modified'] = get_current_timestamp()
|
|
ordered_data['tags'] = [sanitize_input(tag) for tag in data.get('tags', [])]
|
|
|
|
filename = generate_filename(REGEX_DIR, ordered_data['id'], ordered_data['name'])
|
|
with open(filename, 'w') as file:
|
|
for key, value in ordered_data.items():
|
|
if key in ['description', 'date_created', 'date_modified', 'regex101Link']:
|
|
file.write(f"{key}: '{value}'\n")
|
|
elif key == 'tags':
|
|
file.write('tags:\n')
|
|
for tag in value:
|
|
file.write(f'- {tag}\n')
|
|
else:
|
|
file.write(f'{key}: {value}\n')
|
|
|
|
return ordered_data
|
|
|
|
|
|
def load_regex(id):
|
|
files = [f for f in os.listdir(REGEX_DIR) if f.startswith(f"{id}_") and f.endswith('.yml')]
|
|
if files:
|
|
filename = os.path.join(REGEX_DIR, files[0])
|
|
with open(filename, 'r') as file:
|
|
data = yaml.safe_load(file)
|
|
return data
|
|
return None
|
|
|
|
def load_all_regexes():
|
|
regexes = []
|
|
for filename in os.listdir(REGEX_DIR):
|
|
if filename.endswith('.yml'):
|
|
with open(os.path.join(REGEX_DIR, filename), 'r') as file:
|
|
data = yaml.safe_load(file)
|
|
regexes.append(data)
|
|
return regexes
|
|
|
|
def delete_regex(id):
|
|
files = [f for f in os.listdir(REGEX_DIR) if f.startswith(f"{id}_") and f.endswith('.yml')]
|
|
if files:
|
|
os.remove(os.path.join(REGEX_DIR, files[0]))
|
|
return True
|
|
return False |