Replace file operations with functions

main
bashrc 2026-04-25 21:28:44 +01:00
parent f2606ef419
commit 9ae07571a7
1 changed files with 55 additions and 61 deletions

View File

@ -51,6 +51,9 @@ from utils import is_yggdrasil_address
from formats import get_image_extensions
from petnames import get_pet_name
from session import download_image
from data import load_string
from data import save_string
from data import append_string
MUSIC_SITES = ('soundcloud.com', 'bandcamp.com', 'resonate.coop')
@ -276,12 +279,11 @@ def dangerous_css(filename: str, allow_local_network_access: bool) -> bool:
if not os.path.isfile(filename):
return False
content = None
try:
with open(filename, 'r', encoding='utf-8') as fp_css:
content = fp_css.read().lower()
except OSError:
print('EX: unable to read css file ' + filename)
content = load_string(filename,
'EX: unable to read css file ' + filename)
if content is None:
content = ''
content = content.lower()
if not content:
return False
@ -330,12 +332,11 @@ def switch_words(base_dir: str, nickname: str, domain: str, content: str,
acct_dir(base_dir, nickname, domain) + '/replacewords.txt'
if not os.path.isfile(switch_words_filename):
return content
try:
with open(switch_words_filename, 'r',
encoding='utf-8') as fp_words:
rules = fp_words.readlines()
except OSError:
print('EX: unable to read switches ' + switch_words_filename)
rules_str = load_string(switch_words_filename,
'EX: unable to read switches ' +
switch_words_filename)
if rules_str:
rules = rules_str.split('\n')
for line in rules:
replace_str = remove_eol(line)
@ -426,12 +427,10 @@ def _update_common_emoji(base_dir: str, emoji_content: str) -> None:
common_emoji_filename = data_dir(base_dir) + '/common_emoji.txt'
common_emoji = None
if os.path.isfile(common_emoji_filename):
try:
with open(common_emoji_filename, 'r',
encoding='utf-8') as fp_emoji:
common_emoji = fp_emoji.readlines()
except OSError:
print('EX: unable to load common emoji file')
common_emoji_str = load_string(common_emoji_filename,
'EX: unable to load common emoji file')
if common_emoji_str:
common_emoji = common_emoji_str.split('\n')
if common_emoji:
new_common_emoji: list[str] = []
emoji_found = False
@ -452,22 +451,17 @@ def _update_common_emoji(base_dir: str, emoji_content: str) -> None:
if not emoji_found:
new_common_emoji.append(str(1).zfill(16) + ' ' + emoji_content)
new_common_emoji.sort(reverse=True)
try:
with open(common_emoji_filename, 'w+',
encoding='utf-8') as fp_emoji:
for line in new_common_emoji:
fp_emoji.write(line + '\n')
except OSError:
print('EX: error writing common emoji 1')
text = ''
for line in new_common_emoji:
text += line + '\n'
if not save_string(text, common_emoji_filename,
'EX: error writing common emoji 1'):
return
else:
line = str(1).zfill(16) + ' ' + emoji_content + '\n'
try:
with open(common_emoji_filename, 'w+',
encoding='utf-8') as fp_emoji:
fp_emoji.write(line)
except OSError:
print('EX: error writing common emoji 2')
if not save_string(line, common_emoji_filename,
'EX: error writing common emoji 2'):
return
@ -1274,11 +1268,10 @@ def _load_auto_tags(base_dir: str, nickname: str, domain: str) -> []:
filename = acct_dir(base_dir, nickname, domain) + '/autotags.txt'
if not os.path.isfile(filename):
return []
try:
with open(filename, 'r', encoding='utf-8') as fp_tags:
return fp_tags.readlines()
except OSError:
print('EX: unable to read auto tags ' + filename)
fp_tags_str = load_string(filename,
'EX: unable to read auto tags ' + filename)
if fp_tags_str:
return fp_tags_str.split('\n')
return []
@ -1419,12 +1412,13 @@ def load_dogwhistles(filename: str) -> {}:
if not os.path.isfile(filename):
return {}
dogwhistle_lines: list[str] = []
try:
with open(filename, 'r', encoding='utf-8') as fp_dogwhistles:
dogwhistle_lines = fp_dogwhistles.readlines()
except OSError:
print('EX: unable to load dogwhistles from ' + filename)
dogwhistle_lines_str = \
load_string(filename,
'EX: unable to load dogwhistles from ' + filename)
if dogwhistle_lines_str is None:
return {}
if dogwhistle_lines_str:
dogwhistle_lines = dogwhistle_lines_str.split('\n')
separators = ('->', '=>', ',', ';', '|', '=')
dogwhistles = {}
for line in dogwhistle_lines:
@ -1502,13 +1496,11 @@ def add_html_tags(base_dir: str, http_prefix: str,
if '@' in words:
if os.path.isfile(following_filename):
following: list[str] = []
try:
with open(following_filename, 'r',
encoding='utf-8') as fp_foll:
following = fp_foll.readlines()
except OSError:
print('EX: add_html_tags unable to read ' +
following_filename)
following_str = load_string(following_filename,
'EX: add_html_tags unable to read ' +
following_filename)
if following_str:
following = following_str.split('\n')
for handle in following:
pet = get_pet_name(base_dir, nickname, domain, handle)
if pet:
@ -2145,8 +2137,10 @@ def import_emoji(base_dir: str, import_filename: str, session) -> None:
return
emoji_dict = load_json(base_dir + '/emoji/default_emoji.json')
added = 0
with open(import_filename, "r", encoding='utf-8') as fp_emoji:
lines = fp_emoji.readlines()
lines_str = load_string(import_filename,
'EX: import_emoji failed ' + import_filename)
if lines_str:
lines = lines_str.split('\n')
for line in lines:
if ', ' not in line:
continue
@ -2290,12 +2284,12 @@ def remove_script(content: str, log_filename: str,
write_type: str = 'a+'
if os.path.isfile(log_filename):
write_type = 'w+'
try:
with open(log_filename, write_type,
encoding='utf-8') as fp_log:
fp_log.write(log_str)
except OSError:
print('EX: cannot append to svg script log')
if write_type == 'a+':
append_string(log_str, log_filename,
'EX: cannot append to svg script log')
else:
save_string(log_str, log_filename,
'EX: cannot save to svg script log')
content = content.replace(text, '')
return content
@ -2448,11 +2442,11 @@ def _load_auto_cw(base_dir: str, nickname: str, domain: str) -> []:
auto_cw_filename = acct_dir(base_dir, nickname, domain) + '/autocw.txt'
if not os.path.isfile(auto_cw_filename):
return []
try:
with open(auto_cw_filename, 'r', encoding='utf-8') as fp_auto:
return fp_auto.read().split('\n')
except OSError:
print('EX: unable to load auto cw file ' + auto_cw_filename)
fp_auto_str = load_string(auto_cw_filename,
'EX: unable to load auto cw file ' +
auto_cw_filename)
if fp_auto_str:
return fp_auto_str.split('\n')
return []