mirror of https://gitlab.com/bashrc2/epicyon
Function for finding text in file
parent
6404f36b4a
commit
f86560e8da
4
blog.py
4
blog.py
|
@ -17,6 +17,7 @@ from webapp_utils import html_footer
|
|||
from webapp_utils import get_post_attachments_as_html
|
||||
from webapp_utils import edit_text_area
|
||||
from webapp_media import add_embedded_elements
|
||||
from utils import text_in_file
|
||||
from utils import local_actor_url
|
||||
from utils import get_actor_languages_list
|
||||
from utils import get_base_content_from_post
|
||||
|
@ -929,8 +930,7 @@ def path_contains_blog_link(base_dir: str,
|
|||
acct_dir(base_dir, nickname, domain) + '/tlblogs.index'
|
||||
if not os.path.isfile(blog_index_filename):
|
||||
return None, None
|
||||
if '#' + user_ending2[1] + '.' not in open(blog_index_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file('#' + user_ending2[1] + '.', blog_index_filename):
|
||||
return None, None
|
||||
message_id = local_actor_url(http_prefix, nickname, domain_full) + \
|
||||
'/statuses/' + user_ending2[1]
|
||||
|
|
|
@ -28,6 +28,7 @@ from utils import acct_dir
|
|||
from utils import local_actor_url
|
||||
from utils import has_actor
|
||||
from utils import has_object_string_type
|
||||
from utils import text_in_file
|
||||
from posts import get_person_box
|
||||
from session import post_json
|
||||
|
||||
|
@ -71,8 +72,7 @@ def undo_bookmarks_collection_entry(recent_posts_cache: {},
|
|||
else:
|
||||
bookmark_index = post_filename.strip()
|
||||
bookmark_index = bookmark_index.replace('\n', '').replace('\r', '')
|
||||
if bookmark_index not in open(bookmarks_index_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(bookmark_index, bookmarks_index_filename):
|
||||
return
|
||||
index_str = ''
|
||||
try:
|
||||
|
@ -238,8 +238,7 @@ def update_bookmarks_collection(recent_posts_cache: {},
|
|||
acct_dir(base_dir, nickname, domain) + '/bookmarks.index'
|
||||
bookmark_index = post_filename.split('/')[-1]
|
||||
if os.path.isfile(bookmarks_index_filename):
|
||||
if bookmark_index not in open(bookmarks_index_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(bookmark_index, bookmarks_index_filename):
|
||||
try:
|
||||
with open(bookmarks_index_filename, 'r+',
|
||||
encoding='utf-8') as bmi_file:
|
||||
|
|
|
@ -11,6 +11,7 @@ import os
|
|||
from utils import has_object_dict
|
||||
from utils import acct_dir
|
||||
from utils import remove_id_ending
|
||||
from utils import text_in_file
|
||||
|
||||
|
||||
def _get_conversation_filename(base_dir: str, nickname: str, domain: str,
|
||||
|
@ -50,8 +51,7 @@ def update_conversation(base_dir: str, nickname: str, domain: str,
|
|||
except OSError:
|
||||
print('EX: update_conversation ' +
|
||||
'unable to write to ' + conversation_filename)
|
||||
elif post_id + '\n' not in open(conversation_filename,
|
||||
encoding='utf-8').read():
|
||||
elif not text_in_file(post_id + '\n', conversation_filename):
|
||||
try:
|
||||
with open(conversation_filename, 'a+',
|
||||
encoding='utf-8') as conv_file:
|
||||
|
|
|
@ -9,6 +9,7 @@ __module_group__ = "Moderation"
|
|||
|
||||
import os
|
||||
from utils import acct_dir
|
||||
from utils import text_in_file
|
||||
|
||||
|
||||
def add_filter(base_dir: str, nickname: str, domain: str, words: str) -> bool:
|
||||
|
@ -54,7 +55,7 @@ def remove_filter(base_dir: str, nickname: str, domain: str,
|
|||
filters_filename = acct_dir(base_dir, nickname, domain) + '/filters.txt'
|
||||
if not os.path.isfile(filters_filename):
|
||||
return False
|
||||
if words not in open(filters_filename, encoding='utf-8').read():
|
||||
if not text_in_file(words, filters_filename):
|
||||
return False
|
||||
new_filters_filename = filters_filename + '.new'
|
||||
try:
|
||||
|
@ -79,7 +80,7 @@ def remove_global_filter(base_dir: str, words: str) -> bool:
|
|||
filters_filename = base_dir + '/accounts/filters.txt'
|
||||
if not os.path.isfile(filters_filename):
|
||||
return False
|
||||
if words not in open(filters_filename, encoding='utf-8').read():
|
||||
if not text_in_file(words, filters_filename):
|
||||
return False
|
||||
new_filters_filename = filters_filename + '.new'
|
||||
try:
|
||||
|
|
10
follow.py
10
follow.py
|
@ -30,6 +30,7 @@ from utils import get_user_paths
|
|||
from utils import acct_dir
|
||||
from utils import has_group_type
|
||||
from utils import local_actor_url
|
||||
from utils import text_in_file
|
||||
from acceptreject import create_accept
|
||||
from acceptreject import create_reject
|
||||
from webfinger import webfinger_handle
|
||||
|
@ -115,8 +116,7 @@ def _remove_from_follow_base(base_dir: str,
|
|||
' to remove ' + handle + ' from')
|
||||
return
|
||||
accept_deny_actor = None
|
||||
if accept_or_deny_handle not in open(approve_follows_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(accept_or_deny_handle, approve_follows_filename):
|
||||
# is this stored in the file as an actor rather than a handle?
|
||||
accept_deny_nickname = accept_or_deny_handle.split('@')[0]
|
||||
accept_deny_domain = accept_or_deny_handle.split('@')[1]
|
||||
|
@ -317,8 +317,7 @@ def unfollow_account(base_dir: str, nickname: str, domain: str,
|
|||
print('DEBUG: follow file ' + filename + ' was not found')
|
||||
return False
|
||||
handle_to_unfollow_lower = handle_to_unfollow.lower()
|
||||
if handle_to_unfollow_lower not in open(filename,
|
||||
encoding='utf-8').read().lower():
|
||||
if not text_in_file(handle_to_unfollow_lower, filename, False):
|
||||
if debug:
|
||||
print('DEBUG: handle to unfollow ' + handle_to_unfollow +
|
||||
' is not in ' + filename)
|
||||
|
@ -708,8 +707,7 @@ def store_follow_request(base_dir: str,
|
|||
approve_handle = '!' + approve_handle
|
||||
|
||||
if os.path.isfile(approve_follows_filename):
|
||||
if approve_handle not in open(approve_follows_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(approve_handle, approve_follows_filename):
|
||||
try:
|
||||
with open(approve_follows_filename, 'a+',
|
||||
encoding='utf-8') as fp_approve:
|
||||
|
|
|
@ -24,6 +24,7 @@ from utils import get_display_name
|
|||
from utils import delete_post
|
||||
from utils import get_status_number
|
||||
from utils import get_full_domain
|
||||
from utils import text_in_file
|
||||
from filters import is_filtered
|
||||
from context import get_individual_post_context
|
||||
from session import get_method
|
||||
|
@ -70,8 +71,7 @@ def _remove_event_from_timeline(event_id: str,
|
|||
tl_events_filename: str) -> None:
|
||||
"""Removes the given event Id from the timeline
|
||||
"""
|
||||
if event_id + '\n' not in open(tl_events_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(event_id + '\n', tl_events_filename):
|
||||
return
|
||||
with open(tl_events_filename, 'r',
|
||||
encoding='utf-8') as fp_tl:
|
||||
|
@ -760,7 +760,7 @@ def remove_calendar_event(base_dir: str, nickname: str, domain: str,
|
|||
return
|
||||
if '/' in message_id:
|
||||
message_id = message_id.replace('/', '#')
|
||||
if message_id not in open(calendar_filename, encoding='utf-8').read():
|
||||
if not text_in_file(message_id, calendar_filename):
|
||||
return
|
||||
lines = None
|
||||
with open(calendar_filename, 'r', encoding='utf-8') as fp_cal:
|
||||
|
|
10
inbox.py
10
inbox.py
|
@ -18,6 +18,7 @@ from languages import understood_post_language
|
|||
from like import update_likes_collection
|
||||
from reaction import update_reaction_collection
|
||||
from reaction import valid_emoji_content
|
||||
from utils import text_in_file
|
||||
from utils import get_media_descriptions_from_post
|
||||
from utils import get_summary_from_post
|
||||
from utils import delete_cached_html
|
||||
|
@ -2557,8 +2558,7 @@ def populate_replies(base_dir: str, http_prefix: str, domain: str,
|
|||
encoding='utf-8'))
|
||||
if num_lines > max_replies:
|
||||
return False
|
||||
if message_id not in open(post_replies_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(message_id, post_replies_filename):
|
||||
try:
|
||||
with open(post_replies_filename, 'a+',
|
||||
encoding='utf-8') as replies_file:
|
||||
|
@ -2875,7 +2875,7 @@ def _like_notify(base_dir: str, domain: str, onion_domain: str,
|
|||
|
||||
like_file = account_dir + '/.newLike'
|
||||
if os.path.isfile(like_file):
|
||||
if '##sent##' not in open(like_file).read():
|
||||
if not text_in_file('##sent##', like_file):
|
||||
return
|
||||
|
||||
liker_nickname = get_nickname_from_actor(actor)
|
||||
|
@ -2937,7 +2937,7 @@ def _reaction_notify(base_dir: str, domain: str, onion_domain: str,
|
|||
|
||||
reaction_file = account_dir + '/.newReaction'
|
||||
if os.path.isfile(reaction_file):
|
||||
if '##sent##' not in open(reaction_file, encoding='utf-8').read():
|
||||
if not text_in_file('##sent##', reaction_file):
|
||||
return
|
||||
|
||||
reaction_nickname = get_nickname_from_actor(actor)
|
||||
|
@ -4816,7 +4816,7 @@ def _receive_follow_request(session, session_onion, session_i2p,
|
|||
print('Updating followers file: ' +
|
||||
followers_filename + ' adding ' + approve_handle)
|
||||
if os.path.isfile(followers_filename):
|
||||
if approve_handle not in open(followers_filename).read():
|
||||
if not text_in_file(approve_handle, followers_filename):
|
||||
group_account = \
|
||||
has_group_type(base_dir,
|
||||
message_json['actor'], person_cache)
|
||||
|
|
|
@ -16,6 +16,7 @@ from utils import remove_domain_port
|
|||
from utils import get_port_from_domain
|
||||
from utils import get_user_paths
|
||||
from utils import acct_dir
|
||||
from utils import text_in_file
|
||||
from threads import thread_with_trace
|
||||
from session import create_session
|
||||
|
||||
|
@ -115,7 +116,7 @@ def _approve_follower_handle(account_dir: str, approve_handle: str) -> None:
|
|||
"""
|
||||
approved_filename = account_dir + '/approved.txt'
|
||||
if os.path.isfile(approved_filename):
|
||||
if approve_handle not in open(approved_filename).read():
|
||||
if not text_in_file(approve_handle, approved_filename):
|
||||
try:
|
||||
with open(approved_filename, 'a+') as approved_file:
|
||||
approved_file.write(approve_handle + '\n')
|
||||
|
@ -280,8 +281,7 @@ def manual_approve_follow_request(session, session_onion, session_i2p,
|
|||
# update the followers
|
||||
print('Manual follow accept: updating ' + followers_filename)
|
||||
if os.path.isfile(followers_filename):
|
||||
if approve_handle_full not in open(followers_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(approve_handle_full, followers_filename):
|
||||
try:
|
||||
with open(followers_filename, 'r+',
|
||||
encoding='utf-8') as followers_file:
|
||||
|
|
|
@ -34,6 +34,7 @@ from utils import get_status_number
|
|||
from utils import clear_from_post_caches
|
||||
from utils import dangerous_markup
|
||||
from utils import local_actor_url
|
||||
from utils import text_in_file
|
||||
from inbox import store_hash_tags
|
||||
from session import create_session
|
||||
|
||||
|
@ -46,7 +47,7 @@ def _update_feeds_outbox_index(base_dir: str, domain: str,
|
|||
index_filename = base_path + '/outbox.index'
|
||||
|
||||
if os.path.isfile(index_filename):
|
||||
if post_id not in open(index_filename, encoding='utf-8').read():
|
||||
if not text_in_file(post_id, index_filename):
|
||||
try:
|
||||
with open(index_filename, 'r+') as feeds_file:
|
||||
content = feeds_file.read()
|
||||
|
|
|
@ -10,6 +10,7 @@ __module_group__ = "Calendar"
|
|||
import os
|
||||
from utils import remove_domain_port
|
||||
from utils import acct_dir
|
||||
from utils import text_in_file
|
||||
|
||||
|
||||
def _notify_on_post_arrival(base_dir: str, nickname: str, domain: str,
|
||||
|
@ -30,8 +31,7 @@ def _notify_on_post_arrival(base_dir: str, nickname: str, domain: str,
|
|||
handle = following_nickname + '@' + following_domain
|
||||
|
||||
# check that you are following this handle
|
||||
if handle + '\n' not in open(following_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(handle + '\n', following_filename):
|
||||
print('WARN: ' + handle + ' is not in ' + following_filename)
|
||||
return
|
||||
|
||||
|
|
|
@ -62,6 +62,7 @@ from utils import get_user_paths
|
|||
from utils import get_group_paths
|
||||
from utils import local_actor_url
|
||||
from utils import dangerous_svg
|
||||
from utils import text_in_file
|
||||
from session import create_session
|
||||
from session import get_json
|
||||
from webfinger import webfinger_handle
|
||||
|
@ -1207,7 +1208,7 @@ def _remove_tags_for_nickname(base_dir: str, nickname: str,
|
|||
continue
|
||||
if not os.path.isfile(tag_filename):
|
||||
continue
|
||||
if match_str not in open(tag_filename, encoding='utf-8').read():
|
||||
if not text_in_file(match_str, tag_filename):
|
||||
continue
|
||||
lines = []
|
||||
with open(tag_filename, 'r', encoding='utf-8') as fp_tag:
|
||||
|
@ -1358,8 +1359,7 @@ def is_person_snoozed(base_dir: str, nickname: str, domain: str,
|
|||
snoozed_filename = acct_dir(base_dir, nickname, domain) + '/snoozed.txt'
|
||||
if not os.path.isfile(snoozed_filename):
|
||||
return False
|
||||
if snooze_actor + ' ' not in open(snoozed_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(snooze_actor + ' ', snoozed_filename):
|
||||
return False
|
||||
# remove the snooze entry if it has timed out
|
||||
replace_str = None
|
||||
|
@ -1428,8 +1428,7 @@ def person_unsnooze(base_dir: str, nickname: str, domain: str,
|
|||
snoozed_filename = account_dir + '/snoozed.txt'
|
||||
if not os.path.isfile(snoozed_filename):
|
||||
return
|
||||
if snooze_actor + ' ' not in open(snoozed_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(snooze_actor + ' ', snoozed_filename):
|
||||
return
|
||||
replace_str = None
|
||||
with open(snoozed_filename, 'r', encoding='utf-8') as snoozed_file:
|
||||
|
|
6
posts.py
6
posts.py
|
@ -32,6 +32,7 @@ from webfinger import webfinger_handle
|
|||
from httpsig import create_signed_header
|
||||
from siteactive import site_is_active
|
||||
from languages import understood_post_language
|
||||
from utils import text_in_file
|
||||
from utils import get_media_descriptions_from_post
|
||||
from utils import valid_hash_tag
|
||||
from utils import get_audio_extensions
|
||||
|
@ -968,7 +969,7 @@ def _update_hashtags_index(base_dir: str, tag: {}, new_post_id: str) -> None:
|
|||
tags_filename)
|
||||
else:
|
||||
# prepend to tags index file
|
||||
if tagline not in open(tags_filename, encoding='utf-8').read():
|
||||
if not text_in_file(tagline, tags_filename):
|
||||
try:
|
||||
with open(tags_filename, 'r+', encoding='utf-8') as tags_file:
|
||||
content = tags_file.read()
|
||||
|
@ -990,8 +991,7 @@ def _add_schedule_post(base_dir: str, nickname: str, domain: str,
|
|||
|
||||
index_str = event_date_str + ' ' + post_id.replace('/', '#')
|
||||
if os.path.isfile(schedule_index_filename):
|
||||
if index_str not in open(schedule_index_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(index_str, schedule_index_filename):
|
||||
try:
|
||||
with open(schedule_index_filename, 'r+',
|
||||
encoding='utf-8') as schedule_file:
|
||||
|
|
|
@ -12,6 +12,7 @@ from utils import locate_post
|
|||
from utils import load_json
|
||||
from utils import save_json
|
||||
from utils import has_object_dict
|
||||
from utils import text_in_file
|
||||
|
||||
|
||||
def question_update_votes(base_dir: str, nickname: str, domain: str,
|
||||
|
@ -74,8 +75,7 @@ def question_update_votes(base_dir: str, nickname: str, domain: str,
|
|||
except OSError:
|
||||
print('EX: unable to write voters file ' + voters_filename)
|
||||
else:
|
||||
if reply_json['actor'] not in open(voters_filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file(reply_json['actor'], voters_filename):
|
||||
# append to the voters file
|
||||
try:
|
||||
with open(voters_filename, 'a+',
|
||||
|
|
4
roles.py
4
roles.py
|
@ -13,6 +13,7 @@ from utils import save_json
|
|||
from utils import get_status_number
|
||||
from utils import remove_domain_port
|
||||
from utils import acct_dir
|
||||
from utils import text_in_file
|
||||
|
||||
|
||||
def _clear_role_status(base_dir: str, role: str) -> None:
|
||||
|
@ -28,8 +29,7 @@ def _clear_role_status(base_dir: str, role: str) -> None:
|
|||
if not filename.endswith(".json"):
|
||||
continue
|
||||
filename = os.path.join(base_dir + '/accounts/', filename)
|
||||
if '"' + role + '"' not in open(filename,
|
||||
encoding='utf-8').read():
|
||||
if not text_in_file('"' + role + '"', filename):
|
||||
continue
|
||||
actor_json = load_json(filename)
|
||||
if not actor_json:
|
||||
|
|
9
tests.py
9
tests.py
|
@ -54,6 +54,7 @@ from follow import clear_followers
|
|||
from follow import send_follow_request_via_server
|
||||
from follow import send_unfollow_request_via_server
|
||||
from siteactive import site_is_active
|
||||
from utils import text_in_file
|
||||
from utils import convert_published_to_local_timezone
|
||||
from utils import convert_to_snake_case
|
||||
from utils import get_sha_256
|
||||
|
@ -3467,10 +3468,10 @@ def test_client_to_server(base_dir: str):
|
|||
|
||||
assert os.path.isfile(bob_followers_filename)
|
||||
assert os.path.isfile(alice_following_filename)
|
||||
assert 'alice@' + alice_domain + ':' + str(alice_port) \
|
||||
not in open(bob_followers_filename, encoding='utf-8').read()
|
||||
assert 'bob@' + bob_domain + ':' + str(bob_port) \
|
||||
not in open(alice_following_filename, encoding='utf-8').read()
|
||||
test_str = 'alice@' + alice_domain + ':' + str(alice_port)
|
||||
assert not text_in_file(test_str, bob_followers_filename)
|
||||
test_str = 'bob@' + bob_domain + ':' + str(bob_port)
|
||||
assert not text_in_file(test_str, alice_following_filename)
|
||||
assert valid_inbox(bob_dir, 'bob', bob_domain)
|
||||
assert valid_inbox_filenames(bob_dir, 'bob', bob_domain,
|
||||
alice_domain, alice_port)
|
||||
|
|
6
utils.py
6
utils.py
|
@ -40,13 +40,17 @@ INVALID_CHARACTERS = (
|
|||
)
|
||||
|
||||
|
||||
def text_in_file(text: str, filename: str) -> bool:
|
||||
def text_in_file(text: str, filename: str, case_sensitive: bool = True) -> bool:
|
||||
"""is the given text in the given file?
|
||||
"""
|
||||
if not case_sensitive:
|
||||
text = text.lower()
|
||||
try:
|
||||
with open(filename, 'r', encoding='utf-8') as file:
|
||||
content = file.read()
|
||||
if content:
|
||||
if not case_sensitive:
|
||||
content = content.lower()
|
||||
if text in content:
|
||||
return True
|
||||
except OSError:
|
||||
|
|
Loading…
Reference in New Issue