mirror of https://gitlab.com/bashrc2/epicyon
Handle ssml files in outbox
parent
3bc6d13022
commit
bdf61e0a60
14
daemon.py
14
daemon.py
|
@ -11086,9 +11086,14 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
|
|
||||||
if ssml_getreq:
|
if ssml_getreq:
|
||||||
ssml_filename = \
|
ssml_filename = \
|
||||||
acct_dir(base_dir, nickname, domain) + '/postcache/' + \
|
acct_dir(base_dir, nickname, domain) + '/outbox/' + \
|
||||||
http_prefix + ':##' + domain_full + '#users#' + nickname + \
|
http_prefix + ':##' + domain_full + '#users#' + nickname + \
|
||||||
'#statuses#' + status_number + '.ssml'
|
'#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):
|
if not os.path.isfile(ssml_filename):
|
||||||
self._404()
|
self._404()
|
||||||
return True
|
return True
|
||||||
|
@ -11425,9 +11430,14 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
|
|
||||||
if ssml_getreq:
|
if ssml_getreq:
|
||||||
ssml_filename = \
|
ssml_filename = \
|
||||||
acct_dir(base_dir, nickname, domain) + '/postcache/' + \
|
acct_dir(base_dir, nickname, domain) + '/outbox/' + \
|
||||||
http_prefix + ':##' + domain_full + '#users#' + nickname + \
|
http_prefix + ':##' + domain_full + '#users#' + nickname + \
|
||||||
'#statuses#' + status_number + '.ssml'
|
'#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):
|
if not os.path.isfile(ssml_filename):
|
||||||
self._404()
|
self._404()
|
||||||
return True
|
return True
|
||||||
|
|
5
inbox.py
5
inbox.py
|
@ -2282,7 +2282,8 @@ def _receive_announce(recent_posts_cache: {},
|
||||||
nickname, domain, domain_full,
|
nickname, domain, domain_full,
|
||||||
post_json_object, person_cache,
|
post_json_object, person_cache,
|
||||||
translate, lookup_actor,
|
translate, lookup_actor,
|
||||||
theme_name, system_language)
|
theme_name, system_language,
|
||||||
|
'inbox')
|
||||||
try:
|
try:
|
||||||
with open(post_filename + '.tts', 'w+') as ttsfile:
|
with open(post_filename + '.tts', 'w+') as ttsfile:
|
||||||
ttsfile.write('\n')
|
ttsfile.write('\n')
|
||||||
|
@ -4121,7 +4122,7 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
nickname, domain, domain_full,
|
nickname, domain, domain_full,
|
||||||
post_json_object, person_cache,
|
post_json_object, person_cache,
|
||||||
translate, None, theme_name,
|
translate, None, theme_name,
|
||||||
system_language)
|
system_language, boxname)
|
||||||
fitness_performance(inbox_start_time,
|
fitness_performance(inbox_start_time,
|
||||||
server.fitness,
|
server.fitness,
|
||||||
'INBOX', 'update_speaker',
|
'INBOX', 'update_speaker',
|
||||||
|
|
17
speaker.py
17
speaker.py
|
@ -302,7 +302,7 @@ def _speaker_endpoint_json(display_name: str, summary: str,
|
||||||
return speaker_json
|
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
|
"""Returns a header for an SSML document
|
||||||
"""
|
"""
|
||||||
return '<?xml version="1.0"?>\n' + \
|
return '<?xml version="1.0"?>\n' + \
|
||||||
|
@ -313,14 +313,14 @@ def _ssml_header(system_language: str) -> str:
|
||||||
' version="1.1">\n' + \
|
' version="1.1">\n' + \
|
||||||
' <metadata>\n' + \
|
' <metadata>\n' + \
|
||||||
' <dc:title xml:lang="' + system_language + '">' + \
|
' <dc:title xml:lang="' + system_language + '">' + \
|
||||||
'inbox</dc:title>\n' + \
|
box_name + '</dc:title>\n' + \
|
||||||
' </metadata>\n'
|
' </metadata>\n'
|
||||||
|
|
||||||
|
|
||||||
def _speaker_endpoint_ssml(display_name: str, summary: str,
|
def _speaker_endpoint_ssml(display_name: str, summary: str,
|
||||||
content: str, image_description: str,
|
content: str, image_description: str,
|
||||||
links: [], language: str,
|
links: [], language: str,
|
||||||
gender: str) -> str:
|
gender: str, box_name: str) -> str:
|
||||||
"""Returns an SSML endpoint for the TTS speaker
|
"""Returns an SSML endpoint for the TTS speaker
|
||||||
https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language
|
https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language
|
||||||
https://www.w3.org/TR/speech-synthesis/
|
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)
|
content = _add_ssm_lemphasis(content)
|
||||||
voice_params = 'name="' + display_name + '" gender="' + gender + '"'
|
voice_params = 'name="' + display_name + '" gender="' + gender + '"'
|
||||||
return _ssml_header(lang_short) + \
|
return _ssml_header(lang_short, box_name) + \
|
||||||
' <p>\n' + \
|
' <p>\n' + \
|
||||||
' <s xml:lang="' + language + '">\n' + \
|
' <s xml:lang="' + language + '">\n' + \
|
||||||
' <voice ' + voice_params + '>\n' + \
|
' <voice ' + voice_params + '>\n' + \
|
||||||
|
@ -378,7 +378,7 @@ def get_ssml_box(base_dir: str, path: str,
|
||||||
speaker_json['imageDescription'],
|
speaker_json['imageDescription'],
|
||||||
speaker_json['detectedLinks'],
|
speaker_json['detectedLinks'],
|
||||||
system_language,
|
system_language,
|
||||||
gender)
|
gender, box_name)
|
||||||
|
|
||||||
|
|
||||||
def speakable_text(base_dir: str, content: str, translate: {}) -> (str, []):
|
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: {},
|
post_json_object: {}, person_cache: {},
|
||||||
translate: {}, announcing_actor: str,
|
translate: {}, announcing_actor: str,
|
||||||
theme_name: 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
|
""" Generates a json file which can be used for TTS announcement
|
||||||
of incoming inbox posts
|
of incoming inbox posts
|
||||||
"""
|
"""
|
||||||
|
@ -565,6 +565,9 @@ def update_speaker(base_dir: str, http_prefix: str,
|
||||||
if not cached_ssml_filename:
|
if not cached_ssml_filename:
|
||||||
return
|
return
|
||||||
cached_ssml_filename = cached_ssml_filename.replace('.html', '.ssml')
|
cached_ssml_filename = cached_ssml_filename.replace('.html', '.ssml')
|
||||||
|
if box_name == 'outbox':
|
||||||
|
cached_ssml_filename = \
|
||||||
|
cached_ssml_filename.replace('/postcache/', '/outbox/')
|
||||||
gender = None
|
gender = None
|
||||||
if speaker_json.get('gender'):
|
if speaker_json.get('gender'):
|
||||||
gender = speaker_json['gender']
|
gender = speaker_json['gender']
|
||||||
|
@ -575,7 +578,7 @@ def update_speaker(base_dir: str, http_prefix: str,
|
||||||
speaker_json['imageDescription'],
|
speaker_json['imageDescription'],
|
||||||
speaker_json['detectedLinks'],
|
speaker_json['detectedLinks'],
|
||||||
system_language,
|
system_language,
|
||||||
gender)
|
gender, box_name)
|
||||||
try:
|
try:
|
||||||
with open(cached_ssml_filename, 'w+') as fp_ssml:
|
with open(cached_ssml_filename, 'w+') as fp_ssml:
|
||||||
fp_ssml.write(ssml_str)
|
fp_ssml.write(ssml_str)
|
||||||
|
|
11
utils.py
11
utils.py
|
@ -1744,6 +1744,7 @@ def delete_cached_html(base_dir: str, nickname: str, domain: str,
|
||||||
print('EX: delete_cached_html ' +
|
print('EX: delete_cached_html ' +
|
||||||
'unable to delete cached post file ' +
|
'unable to delete cached post file ' +
|
||||||
str(cached_post_filename))
|
str(cached_post_filename))
|
||||||
|
|
||||||
cached_post_filename = cached_post_filename.replace('.html', '.ssml')
|
cached_post_filename = cached_post_filename.replace('.html', '.ssml')
|
||||||
if os.path.isfile(cached_post_filename):
|
if os.path.isfile(cached_post_filename):
|
||||||
try:
|
try:
|
||||||
|
@ -1753,6 +1754,16 @@ def delete_cached_html(base_dir: str, nickname: str, domain: str,
|
||||||
'unable to delete cached ssml post file ' +
|
'unable to delete cached ssml post file ' +
|
||||||
str(cached_post_filename))
|
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:
|
def _delete_hashtags_on_post(base_dir: str, post_json_object: {}) -> None:
|
||||||
"""Removes hashtags when a post is deleted
|
"""Removes hashtags when a post is deleted
|
||||||
|
|
|
@ -1698,7 +1698,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
||||||
nickname, domain, domain_full,
|
nickname, domain, domain_full,
|
||||||
post_json_object, person_cache,
|
post_json_object, person_cache,
|
||||||
translate, post_json_object['actor'],
|
translate, post_json_object['actor'],
|
||||||
theme_name, system_language)
|
theme_name, system_language,
|
||||||
|
box_name)
|
||||||
with open(announce_filename + '.tts', 'w+') as ttsfile:
|
with open(announce_filename + '.tts', 'w+') as ttsfile:
|
||||||
ttsfile.write('\n')
|
ttsfile.write('\n')
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue