mirror of
https://github.com/Dictionarry-Hub/profilarr.git
synced 2026-01-31 06:40:50 +01:00
69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
import os
|
|
import yaml
|
|
from collections import OrderedDict
|
|
from .file_utils import get_next_id, generate_filename, get_current_timestamp
|
|
|
|
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'] = data.get('name', '')
|
|
ordered_data['description'] = data.get('description', '')
|
|
ordered_data['pattern'] = data.get('pattern', '')
|
|
ordered_data['regex101Link'] = 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'] = 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 |