mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			
		
			
				
	
	
		
			101 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
| __filename__ = "conversation.py"
 | |
| __author__ = "Bob Mottram"
 | |
| __license__ = "AGPL3+"
 | |
| __version__ = "1.3.0"
 | |
| __maintainer__ = "Bob Mottram"
 | |
| __email__ = "bob@libreserver.org"
 | |
| __status__ = "Production"
 | |
| __module_group__ = "Timeline"
 | |
| 
 | |
| 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,
 | |
|                                post_json_object: {}) -> str:
 | |
|     """Returns the conversation filename
 | |
|     """
 | |
|     if not has_object_dict(post_json_object):
 | |
|         return None
 | |
|     if not post_json_object['object'].get('conversation'):
 | |
|         return None
 | |
|     if not post_json_object['object'].get('id'):
 | |
|         return None
 | |
|     conversation_dir = acct_dir(base_dir, nickname, domain) + '/conversation'
 | |
|     if not os.path.isdir(conversation_dir):
 | |
|         os.mkdir(conversation_dir)
 | |
|     conversation_id = post_json_object['object']['conversation']
 | |
|     conversation_id = conversation_id.replace('/', '#')
 | |
|     return conversation_dir + '/' + conversation_id
 | |
| 
 | |
| 
 | |
| def update_conversation(base_dir: str, nickname: str, domain: str,
 | |
|                         post_json_object: {}) -> bool:
 | |
|     """Ads a post to a conversation index in the /conversation subdirectory
 | |
|     """
 | |
|     conversation_filename = \
 | |
|         _get_conversation_filename(base_dir, nickname, domain,
 | |
|                                    post_json_object)
 | |
|     if not conversation_filename:
 | |
|         return False
 | |
|     post_id = remove_id_ending(post_json_object['object']['id'])
 | |
|     if not os.path.isfile(conversation_filename):
 | |
|         try:
 | |
|             with open(conversation_filename, 'w+',
 | |
|                       encoding='utf-8') as conv_file:
 | |
|                 conv_file.write(post_id + '\n')
 | |
|                 return True
 | |
|         except OSError:
 | |
|             print('EX: update_conversation ' +
 | |
|                   'unable to write to ' + conversation_filename)
 | |
|     elif not text_in_file(post_id + '\n', conversation_filename):
 | |
|         try:
 | |
|             with open(conversation_filename, 'a+',
 | |
|                       encoding='utf-8') as conv_file:
 | |
|                 conv_file.write(post_id + '\n')
 | |
|                 return True
 | |
|         except OSError:
 | |
|             print('EX: update_conversation 2 ' +
 | |
|                   'unable to write to ' + conversation_filename)
 | |
|     return False
 | |
| 
 | |
| 
 | |
| def mute_conversation(base_dir: str, nickname: str, domain: str,
 | |
|                       conversation_id: str) -> None:
 | |
|     """Mutes the given conversation
 | |
|     """
 | |
|     conversation_dir = acct_dir(base_dir, nickname, domain) + '/conversation'
 | |
|     conversation_filename = \
 | |
|         conversation_dir + '/' + conversation_id.replace('/', '#')
 | |
|     if not os.path.isfile(conversation_filename):
 | |
|         return
 | |
|     if os.path.isfile(conversation_filename + '.muted'):
 | |
|         return
 | |
|     try:
 | |
|         with open(conversation_filename + '.muted', 'w+',
 | |
|                   encoding='utf-8') as conv_file:
 | |
|             conv_file.write('\n')
 | |
|     except OSError:
 | |
|         print('EX: unable to write mute ' + conversation_filename)
 | |
| 
 | |
| 
 | |
| def unmute_conversation(base_dir: str, nickname: str, domain: str,
 | |
|                         conversation_id: str) -> None:
 | |
|     """Unmutes the given conversation
 | |
|     """
 | |
|     conversation_dir = acct_dir(base_dir, nickname, domain) + '/conversation'
 | |
|     conversation_filename = \
 | |
|         conversation_dir + '/' + conversation_id.replace('/', '#')
 | |
|     if not os.path.isfile(conversation_filename):
 | |
|         return
 | |
|     if not os.path.isfile(conversation_filename + '.muted'):
 | |
|         return
 | |
|     try:
 | |
|         os.remove(conversation_filename + '.muted')
 | |
|     except OSError:
 | |
|         print('EX: unmute_conversation unable to delete ' +
 | |
|               conversation_filename + '.muted')
 |