Display original message content in notification client

main
Bob Mottram 2021-03-11 10:47:52 +00:00
parent 902a4e1573
commit 08c29c6e24
1 changed files with 57 additions and 44 deletions

View File

@ -122,14 +122,14 @@ def _textToSpeech(sayStr: str, screenreader: str,
systemLanguage, sayStr) systemLanguage, sayStr)
def _sayCommand(sayStr: str, screenreader: str, def _sayCommand(content: str, sayStr: str, screenreader: str,
systemLanguage: str, systemLanguage: str,
espeak=None, espeak=None,
speakerName='screen reader', speakerName='screen reader',
speakerGender='They/Them') -> None: speakerGender='They/Them') -> None:
"""Speaks a command """Speaks a command
""" """
print(sayStr) print(content)
if not screenreader: if not screenreader:
return return
@ -157,29 +157,30 @@ def _notificationReplyToPost(session, postId: str,
toNickname = getNicknameFromActor(postId) toNickname = getNicknameFromActor(postId)
toDomain, toPort = getDomainFromActor(postId) toDomain, toPort = getDomainFromActor(postId)
sayStr = 'Replying to ' + toNickname + '@' + toDomain sayStr = 'Replying to ' + toNickname + '@' + toDomain
_sayCommand(sayStr, _sayCommand(sayStr, sayStr,
screenreader, systemLanguage, espeak) screenreader, systemLanguage, espeak)
sayStr = 'Type your reply message, then press Enter.' sayStr = 'Type your reply message, then press Enter.'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
replyMessage = input() replyMessage = input()
if not replyMessage: if not replyMessage:
sayStr = 'No reply was entered.' sayStr = 'No reply was entered.'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
return return
replyMessage = replyMessage.strip() replyMessage = replyMessage.strip()
if not replyMessage: if not replyMessage:
sayStr = 'No reply was entered.' sayStr = 'No reply was entered.'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
return return
sayStr = 'You entered this reply:' sayStr = 'You entered this reply:'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
_sayCommand(replyMessage, screenreader, systemLanguage, espeak) _sayCommand(replyMessage, replyMessage, screenreader,
systemLanguage, espeak)
sayStr = 'Send this reply, yes or no?' sayStr = 'Send this reply, yes or no?'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
yesno = input() yesno = input()
if 'y' not in yesno.lower(): if 'y' not in yesno.lower():
sayStr = 'Abandoning reply' sayStr = 'Abandoning reply'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
return return
ccUrl = None ccUrl = None
followersOnly = False followersOnly = False
@ -190,7 +191,7 @@ def _notificationReplyToPost(session, postId: str,
subject = None subject = None
commentsEnabled = True commentsEnabled = True
sayStr = 'Sending reply' sayStr = 'Sending reply'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
if sendPostViaServer(__version__, if sendPostViaServer(__version__,
baseDir, session, nickname, password, baseDir, session, nickname, password,
domain, port, domain, port,
@ -203,7 +204,7 @@ def _notificationReplyToPost(session, postId: str,
sayStr = 'Reply sent' sayStr = 'Reply sent'
else: else:
sayStr = 'Reply failed' sayStr = 'Reply failed'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
def _notificationNewPost(session, def _notificationNewPost(session,
@ -216,28 +217,28 @@ def _notificationNewPost(session,
"""Use the notification client to create a new post """Use the notification client to create a new post
""" """
sayStr = 'Create new post' sayStr = 'Create new post'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
sayStr = 'Type your post, then press Enter.' sayStr = 'Type your post, then press Enter.'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
newMessage = input() newMessage = input()
if not newMessage: if not newMessage:
sayStr = 'No post was entered.' sayStr = 'No post was entered.'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
return return
newMessage = newMessage.strip() newMessage = newMessage.strip()
if not newMessage: if not newMessage:
sayStr = 'No post was entered.' sayStr = 'No post was entered.'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
return return
sayStr = 'You entered this public post:' sayStr = 'You entered this public post:'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
_sayCommand(newMessage, screenreader, systemLanguage, espeak) _sayCommand(newMessage, newMessage, screenreader, systemLanguage, espeak)
sayStr = 'Send this post, yes or no?' sayStr = 'Send this post, yes or no?'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
yesno = input() yesno = input()
if 'y' not in yesno.lower(): if 'y' not in yesno.lower():
sayStr = 'Abandoning new post' sayStr = 'Abandoning new post'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
return return
ccUrl = None ccUrl = None
followersOnly = False followersOnly = False
@ -249,7 +250,7 @@ def _notificationNewPost(session,
commentsEnabled = True commentsEnabled = True
subject = None subject = None
sayStr = 'Sending' sayStr = 'Sending'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
if sendPostViaServer(__version__, if sendPostViaServer(__version__,
baseDir, session, nickname, password, baseDir, session, nickname, password,
domain, port, domain, port,
@ -262,7 +263,7 @@ def _notificationNewPost(session,
sayStr = 'Post sent' sayStr = 'Post sent'
else: else:
sayStr = 'Post failed' sayStr = 'Post failed'
_sayCommand(sayStr, screenreader, systemLanguage, espeak) _sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str, def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
@ -285,7 +286,7 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
return return
sayStr = 'Running ' + screenreader + ' for ' + nickname + '@' + domain sayStr = 'Running ' + screenreader + ' for ' + nickname + '@' + domain
_sayCommand(sayStr, screenreader, _sayCommand(sayStr, sayStr, screenreader,
systemLanguage, espeak) systemLanguage, espeak)
else: else:
print('Running desktop notifications for ' + nickname + '@' + domain) print('Running desktop notifications for ' + nickname + '@' + domain)
@ -293,10 +294,10 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
sayStr = 'Notification sounds on' sayStr = 'Notification sounds on'
else: else:
sayStr = 'Notification sounds off' sayStr = 'Notification sounds off'
_sayCommand(sayStr, screenreader, _sayCommand(sayStr, sayStr, screenreader,
systemLanguage, espeak) systemLanguage, espeak)
sayStr = '/q or /quit to exit' sayStr = '/q or /quit to exit'
_sayCommand(sayStr, screenreader, _sayCommand(sayStr, sayStr, screenreader,
systemLanguage, espeak) systemLanguage, espeak)
print('') print('')
keyPress = _waitForKeypress(2, debug) keyPress = _waitForKeypress(2, debug)
@ -414,15 +415,19 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
messageStr = speakerJson['say'] + '. ' + \ messageStr = speakerJson['say'] + '. ' + \
speakerJson['imageDescription'] speakerJson['imageDescription']
content = messageStr
if speakerJson.get('content'):
content = speakerJson['content']
# say the speaker's name # say the speaker's name
_sayCommand(nameStr, screenreader, _sayCommand(nameStr, nameStr, screenreader,
systemLanguage, espeak, systemLanguage, espeak,
nameStr, gender) nameStr, gender)
time.sleep(2) time.sleep(2)
# speak the post content # speak the post content
_sayCommand(messageStr, screenreader, _sayCommand(content, messageStr, screenreader,
systemLanguage, espeak, systemLanguage, espeak,
nameStr, gender) nameStr, gender)
@ -437,7 +442,7 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
keyPress = keyPress[1:] keyPress = keyPress[1:]
if keyPress == 'q' or keyPress == 'quit' or keyPress == 'exit': if keyPress == 'q' or keyPress == 'quit' or keyPress == 'exit':
sayStr = 'Quit' sayStr = 'Quit'
_sayCommand(sayStr, screenreader, _sayCommand(sayStr, sayStr, screenreader,
systemLanguage, espeak) systemLanguage, espeak)
if screenreader: if screenreader:
keyPress = _waitForKeypress(2, debug) keyPress = _waitForKeypress(2, debug)
@ -469,7 +474,8 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
print('') print('')
elif keyPress == 'like': elif keyPress == 'like':
if nameStr and gender and messageStr: if nameStr and gender and messageStr:
_sayCommand('Liking post by ' + nameStr, sayStr = 'Liking post by ' + nameStr
_sayCommand(sayStr, sayStr,
screenreader, screenreader,
systemLanguage, espeak) systemLanguage, espeak)
sessionLike = createSession(proxyType) sessionLike = createSession(proxyType)
@ -482,7 +488,8 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
print('') print('')
elif keyPress == 'unlike' or keyPress == 'undo like': elif keyPress == 'unlike' or keyPress == 'undo like':
if nameStr and gender and messageStr: if nameStr and gender and messageStr:
_sayCommand('Undoing like of post by ' + nameStr, sayStr = 'Undoing like of post by ' + nameStr
_sayCommand(sayStr, sayStr,
screenreader, screenreader,
systemLanguage, espeak) systemLanguage, espeak)
sessionUnlike = createSession(proxyType) sessionUnlike = createSession(proxyType)
@ -499,7 +506,8 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
if speakerJson.get('id'): if speakerJson.get('id'):
if nameStr and gender and messageStr: if nameStr and gender and messageStr:
postId = speakerJson['id'] postId = speakerJson['id']
_sayCommand('Announcing post by ' + nameStr, sayStr = 'Announcing post by ' + nameStr
_sayCommand(sayStr, sayStr,
screenreader, screenreader,
systemLanguage, espeak) systemLanguage, espeak)
sessionAnnounce = createSession(proxyType) sessionAnnounce = createSession(proxyType)
@ -519,8 +527,9 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
followDomain, followPort = \ followDomain, followPort = \
getDomainFromActor(followHandle) getDomainFromActor(followHandle)
if followNickname and followDomain: if followNickname and followDomain:
_sayCommand('Sending follow request to ' + sayStr = 'Sending follow request to ' + \
followNickname + '@' + followDomain, followNickname + '@' + followDomain
_sayCommand(sayStr, sayStr,
screenreader, systemLanguage, espeak) screenreader, systemLanguage, espeak)
sessionFollow = createSession(proxyType) sessionFollow = createSession(proxyType)
sendFollowRequestViaServer(baseDir, sessionFollow, sendFollowRequestViaServer(baseDir, sessionFollow,
@ -534,7 +543,8 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
personCache, personCache,
debug, __version__) debug, __version__)
else: else:
_sayCommand(followHandle + ' is not valid', sayStr = followHandle + ' is not valid'
_sayCommand(sayStr,
screenreader, systemLanguage, espeak) screenreader, systemLanguage, espeak)
print('') print('')
elif (keyPress.startswith('unfollow ') or elif (keyPress.startswith('unfollow ') or
@ -548,8 +558,9 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
followDomain, followPort = \ followDomain, followPort = \
getDomainFromActor(followHandle) getDomainFromActor(followHandle)
if followNickname and followDomain: if followNickname and followDomain:
_sayCommand('Stop following ' + sayStr = 'Stop following ' + \
followNickname + '@' + followDomain, followNickname + '@' + followDomain
_sayCommand(sayStr, sayStr,
screenreader, systemLanguage, espeak) screenreader, systemLanguage, espeak)
sessionUnfollow = createSession(proxyType) sessionUnfollow = createSession(proxyType)
sendUnfollowRequestViaServer(baseDir, sessionUnfollow, sendUnfollowRequestViaServer(baseDir, sessionUnfollow,
@ -563,28 +574,30 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
personCache, personCache,
debug, __version__) debug, __version__)
else: else:
_sayCommand(followHandle + ' is not valid', sayStr = followHandle + ' is not valid'
_sayCommand(sayStr, sayStr,
screenreader, systemLanguage, espeak) screenreader, systemLanguage, espeak)
print('') print('')
elif (keyPress == 'repeat' or keyPress == 'replay' or elif (keyPress == 'repeat' or keyPress == 'replay' or
keyPress == 'rp'): keyPress == 'rp'):
if nameStr and gender and messageStr: if nameStr and gender and messageStr and content:
_sayCommand('Repeating ' + nameStr, screenreader, sayStr = 'Repeating ' + nameStr, screenreader
_sayCommand(sayStr, sayStr,
systemLanguage, espeak, systemLanguage, espeak,
nameStr, gender) nameStr, gender)
time.sleep(2) time.sleep(2)
_sayCommand(messageStr, screenreader, _sayCommand(content, messageStr, screenreader,
systemLanguage, espeak, systemLanguage, espeak,
nameStr, gender) nameStr, gender)
print('') print('')
elif keyPress == 'sounds on' or keyPress == 'sound': elif keyPress == 'sounds on' or keyPress == 'sound':
sayStr = 'Notification sounds on' sayStr = 'Notification sounds on'
_sayCommand(sayStr, screenreader, _sayCommand(sayStr, sayStr, screenreader,
systemLanguage, espeak) systemLanguage, espeak)
notificationSounds = True notificationSounds = True
elif keyPress == 'sounds off' or keyPress == 'nosound': elif keyPress == 'sounds off' or keyPress == 'nosound':
sayStr = 'Notification sounds off' sayStr = 'Notification sounds off'
_sayCommand(sayStr, screenreader, _sayCommand(sayStr, sayStr, screenreader,
systemLanguage, espeak) systemLanguage, espeak)
notificationSounds = False notificationSounds = False
elif (keyPress == 'speak' or elif (keyPress == 'speak' or
@ -595,7 +608,7 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
if originalScreenReader: if originalScreenReader:
screenreader = originalScreenReader screenreader = originalScreenReader
sayStr = 'Screen reader on' sayStr = 'Screen reader on'
_sayCommand(sayStr, screenreader, _sayCommand(sayStr, sayStr, screenreader,
systemLanguage, espeak) systemLanguage, espeak)
else: else:
print('No --screenreader option was specified') print('No --screenreader option was specified')
@ -607,7 +620,7 @@ def runNotificationsClient(baseDir: str, proxyType: str, httpPrefix: str,
if originalScreenReader: if originalScreenReader:
screenreader = None screenreader = None
sayStr = 'Screen reader off' sayStr = 'Screen reader off'
_sayCommand(sayStr, originalScreenReader, _sayCommand(sayStr, sayStr, originalScreenReader,
systemLanguage, espeak) systemLanguage, espeak)
else: else:
print('No --screenreader option was specified') print('No --screenreader option was specified')