diff --git a/daemon.py b/daemon.py index b00914c29..e56b8ee14 100644 --- a/daemon.py +++ b/daemon.py @@ -11086,9 +11086,14 @@ class PubServer(BaseHTTPRequestHandler): if ssml_getreq: ssml_filename = \ - acct_dir(base_dir, nickname, domain) + '/postcache/' + \ + acct_dir(base_dir, nickname, domain) + '/outbox/' + \ http_prefix + ':##' + domain_full + '#users#' + nickname + \ '#statuses#' + status_number + '.ssml' + if not os.path.isfile(ssml_filename): + ssml_filename = \ + acct_dir(base_dir, nickname, domain) + '/postcache/' + \ + http_prefix + ':##' + domain_full + '#users#' + \ + nickname + '#statuses#' + status_number + '.ssml' if not os.path.isfile(ssml_filename): self._404() return True @@ -11425,9 +11430,14 @@ class PubServer(BaseHTTPRequestHandler): if ssml_getreq: ssml_filename = \ - acct_dir(base_dir, nickname, domain) + '/postcache/' + \ + acct_dir(base_dir, nickname, domain) + '/outbox/' + \ http_prefix + ':##' + domain_full + '#users#' + nickname + \ '#statuses#' + status_number + '.ssml' + if not os.path.isfile(ssml_filename): + ssml_filename = \ + acct_dir(base_dir, nickname, domain) + '/postcache/' + \ + http_prefix + ':##' + domain_full + '#users#' + \ + nickname + '#statuses#' + status_number + '.ssml' if not os.path.isfile(ssml_filename): self._404() return True diff --git a/inbox.py b/inbox.py index abca8ca0f..cd816268f 100644 --- a/inbox.py +++ b/inbox.py @@ -2282,7 +2282,8 @@ def _receive_announce(recent_posts_cache: {}, nickname, domain, domain_full, post_json_object, person_cache, translate, lookup_actor, - theme_name, system_language) + theme_name, system_language, + 'inbox') try: with open(post_filename + '.tts', 'w+') as ttsfile: ttsfile.write('\n') @@ -4121,7 +4122,7 @@ def _inbox_after_initial(server, inbox_start_time, nickname, domain, domain_full, post_json_object, person_cache, translate, None, theme_name, - system_language) + system_language, boxname) fitness_performance(inbox_start_time, server.fitness, 'INBOX', 'update_speaker', diff --git a/speaker.py b/speaker.py index c1f670e15..6f46506a8 100644 --- a/speaker.py +++ b/speaker.py @@ -302,7 +302,7 @@ def _speaker_endpoint_json(display_name: str, summary: str, return speaker_json -def _ssml_header(system_language: str) -> str: +def _ssml_header(system_language: str, box_name: str) -> str: """Returns a header for an SSML document """ return '\n' + \ @@ -313,14 +313,14 @@ def _ssml_header(system_language: str) -> str: ' version="1.1">\n' + \ ' \n' + \ ' ' + \ - 'inbox\n' + \ + box_name + '\n' + \ ' \n' def _speaker_endpoint_ssml(display_name: str, summary: str, content: str, image_description: str, links: [], language: str, - gender: str) -> str: + gender: str, box_name: str) -> str: """Returns an SSML endpoint for the TTS speaker https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language https://www.w3.org/TR/speech-synthesis/ @@ -342,7 +342,7 @@ def _speaker_endpoint_ssml(display_name: str, summary: str, content = _add_ssm_lemphasis(content) voice_params = 'name="' + display_name + '" gender="' + gender + '"' - return _ssml_header(lang_short) + \ + return _ssml_header(lang_short, box_name) + \ '

\n' + \ ' \n' + \ ' \n' + \ @@ -378,7 +378,7 @@ def get_ssml_box(base_dir: str, path: str, speaker_json['imageDescription'], speaker_json['detectedLinks'], system_language, - gender) + gender, box_name) def speakable_text(base_dir: str, content: str, translate: {}) -> (str, []): @@ -544,7 +544,7 @@ def update_speaker(base_dir: str, http_prefix: str, post_json_object: {}, person_cache: {}, translate: {}, announcing_actor: str, theme_name: str, - system_language: str) -> None: + system_language: str, box_name: str) -> None: """ Generates a json file which can be used for TTS announcement of incoming inbox posts """ @@ -565,6 +565,9 @@ def update_speaker(base_dir: str, http_prefix: str, if not cached_ssml_filename: return cached_ssml_filename = cached_ssml_filename.replace('.html', '.ssml') + if box_name == 'outbox': + cached_ssml_filename = \ + cached_ssml_filename.replace('/postcache/', '/outbox/') gender = None if speaker_json.get('gender'): gender = speaker_json['gender'] @@ -575,7 +578,7 @@ def update_speaker(base_dir: str, http_prefix: str, speaker_json['imageDescription'], speaker_json['detectedLinks'], system_language, - gender) + gender, box_name) try: with open(cached_ssml_filename, 'w+') as fp_ssml: fp_ssml.write(ssml_str) diff --git a/utils.py b/utils.py index 91979df56..dc9abb7ad 100644 --- a/utils.py +++ b/utils.py @@ -1744,6 +1744,7 @@ def delete_cached_html(base_dir: str, nickname: str, domain: str, print('EX: delete_cached_html ' + 'unable to delete cached post file ' + str(cached_post_filename)) + cached_post_filename = cached_post_filename.replace('.html', '.ssml') if os.path.isfile(cached_post_filename): try: @@ -1753,6 +1754,16 @@ def delete_cached_html(base_dir: str, nickname: str, domain: str, 'unable to delete cached ssml post file ' + str(cached_post_filename)) + cached_post_filename = \ + cached_post_filename.replace('/postcache/', '/outbox/') + if os.path.isfile(cached_post_filename): + try: + os.remove(cached_post_filename) + except OSError: + print('EX: delete_cached_html ' + + 'unable to delete cached outbox ssml post file ' + + str(cached_post_filename)) + def _delete_hashtags_on_post(base_dir: str, post_json_object: {}) -> None: """Removes hashtags when a post is deleted diff --git a/webapp_post.py b/webapp_post.py index 314a2e104..e7b95c5b9 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -1698,7 +1698,8 @@ def individual_post_as_html(signing_priv_key_pem: str, nickname, domain, domain_full, post_json_object, person_cache, translate, post_json_object['actor'], - theme_name, system_language) + theme_name, system_language, + box_name) with open(announce_filename + '.tts', 'w+') as ttsfile: ttsfile.write('\n')