mirror of https://gitlab.com/bashrc2/epicyon
Tidying
parent
47a6d178e0
commit
aa7c78d2f1
|
@ -13,16 +13,11 @@ import sys
|
||||||
import select
|
import select
|
||||||
import webbrowser
|
import webbrowser
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
from pathlib import Path
|
|
||||||
from random import randint
|
from random import randint
|
||||||
from utils import loadTranslationsFromFile
|
from utils import loadTranslationsFromFile
|
||||||
from utils import removeHtml
|
from utils import removeHtml
|
||||||
from utils import getStatusNumber
|
|
||||||
from utils import loadJson
|
|
||||||
from utils import saveJson
|
|
||||||
from utils import getNicknameFromActor
|
from utils import getNicknameFromActor
|
||||||
from utils import getDomainFromActor
|
from utils import getDomainFromActor
|
||||||
from utils import getFullDomain
|
|
||||||
from utils import isPGPEncrypted
|
from utils import isPGPEncrypted
|
||||||
from session import createSession
|
from session import createSession
|
||||||
from speaker import speakableText
|
from speaker import speakableText
|
||||||
|
@ -352,43 +347,6 @@ def _desktopNewPost(session,
|
||||||
_sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
|
_sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
|
||||||
|
|
||||||
|
|
||||||
def _getSpeakerJsonFromIndex(boxName: str, index: int) -> {}:
|
|
||||||
"""Returns the json for the given post index
|
|
||||||
"""
|
|
||||||
homeDir = str(Path.home())
|
|
||||||
if not os.path.isdir(homeDir + '/.config'):
|
|
||||||
os.mkdir(homeDir + '/.config')
|
|
||||||
if not os.path.isdir(homeDir + '/.config/epicyon'):
|
|
||||||
os.mkdir(homeDir + '/.config/epicyon')
|
|
||||||
msgDir = homeDir + '/.config/epicyon/' + boxName
|
|
||||||
if not os.path.isdir(msgDir):
|
|
||||||
os.mkdir(msgDir)
|
|
||||||
indexList = []
|
|
||||||
for subdir, dirs, files in os.walk(msgDir):
|
|
||||||
for f in files:
|
|
||||||
if not f.endswith('.json'):
|
|
||||||
continue
|
|
||||||
indexList.append(f)
|
|
||||||
indexList.sort(reverse=True)
|
|
||||||
|
|
||||||
index -= 1
|
|
||||||
if index <= 0:
|
|
||||||
index = 0
|
|
||||||
if len(indexList) <= index:
|
|
||||||
return None
|
|
||||||
|
|
||||||
publishedYear = indexList[index].split('-')[0]
|
|
||||||
publishedMonth = indexList[index].split('-')[1]
|
|
||||||
speakerJsonFilename = \
|
|
||||||
os.path.join(msgDir,
|
|
||||||
publishedYear + '/' +
|
|
||||||
publishedMonth + '/' +
|
|
||||||
indexList[index])
|
|
||||||
if not os.path.isfile(speakerJsonFilename):
|
|
||||||
return None
|
|
||||||
return loadJson(speakerJsonFilename)
|
|
||||||
|
|
||||||
|
|
||||||
def _safeMessage(content: str) -> str:
|
def _safeMessage(content: str) -> str:
|
||||||
"""Removes anything potentially unsafe from a string
|
"""Removes anything potentially unsafe from a string
|
||||||
"""
|
"""
|
||||||
|
@ -461,7 +419,7 @@ def _readLocalBoxPost(baseDir: str, boxName: str,
|
||||||
return
|
return
|
||||||
|
|
||||||
content = _safeMessage(content)
|
content = _safeMessage(content)
|
||||||
messageStr = speakableText(baseDir, content, translate)
|
messageStr, detectedLinks = speakableText(baseDir, content, translate)
|
||||||
|
|
||||||
if screenreader:
|
if screenreader:
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
@ -619,33 +577,6 @@ def _desktopNewDM(session, toHandle: str,
|
||||||
espeak)
|
espeak)
|
||||||
|
|
||||||
|
|
||||||
def _desktopStoreMsg(speakerJson: {}, boxName: str) -> None:
|
|
||||||
"""Stores a message in your home directory for later reading
|
|
||||||
which could be offline
|
|
||||||
"""
|
|
||||||
if not speakerJson.get('published'):
|
|
||||||
return
|
|
||||||
homeDir = str(Path.home())
|
|
||||||
if not os.path.isdir(homeDir + '/.config'):
|
|
||||||
os.mkdir(homeDir + '/.config')
|
|
||||||
if not os.path.isdir(homeDir + '/.config/epicyon'):
|
|
||||||
os.mkdir(homeDir + '/.config/epicyon')
|
|
||||||
msgDir = homeDir + '/.config/epicyon/' + boxName
|
|
||||||
if not os.path.isdir(msgDir):
|
|
||||||
os.mkdir(msgDir)
|
|
||||||
publishedYear = speakerJson['published'].split('-')[0]
|
|
||||||
yearDir = msgDir + '/' + publishedYear
|
|
||||||
if not os.path.isdir(yearDir):
|
|
||||||
os.mkdir(yearDir)
|
|
||||||
publishedMonth = speakerJson['published'].split('-')[1]
|
|
||||||
monthDir = yearDir + '/' + publishedMonth
|
|
||||||
if not os.path.isdir(monthDir):
|
|
||||||
os.mkdir(monthDir)
|
|
||||||
|
|
||||||
msgFilename = monthDir + '/' + speakerJson['published'] + '.json'
|
|
||||||
saveJson(speakerJson, msgFilename)
|
|
||||||
|
|
||||||
|
|
||||||
def _desktopNewDMbase(session, toHandle: str,
|
def _desktopNewDMbase(session, toHandle: str,
|
||||||
baseDir: str, nickname: str, password: str,
|
baseDir: str, nickname: str, password: str,
|
||||||
domain: str, port: int, httpPrefix: str,
|
domain: str, port: int, httpPrefix: str,
|
||||||
|
@ -695,7 +626,6 @@ def _desktopNewDMbase(session, toHandle: str,
|
||||||
|
|
||||||
# if there is a local PGP key then attempt to encrypt the DM
|
# if there is a local PGP key then attempt to encrypt the DM
|
||||||
# using the PGP public key of the recipient
|
# using the PGP public key of the recipient
|
||||||
newMessageOriginal = newMessage
|
|
||||||
if hasLocalPGPkey():
|
if hasLocalPGPkey():
|
||||||
sayStr = \
|
sayStr = \
|
||||||
'Local PGP key detected...' + \
|
'Local PGP key detected...' + \
|
||||||
|
@ -740,23 +670,6 @@ def _desktopNewDMbase(session, toHandle: str,
|
||||||
attachedImageDescription,
|
attachedImageDescription,
|
||||||
cachedWebfingers, personCache, isArticle,
|
cachedWebfingers, personCache, isArticle,
|
||||||
debug, None, None, subject) == 0:
|
debug, None, None, subject) == 0:
|
||||||
# store the DM locally
|
|
||||||
statusNumber, published = getStatusNumber()
|
|
||||||
postId = \
|
|
||||||
httpPrefix + '://' + getFullDomain(domain, port) + \
|
|
||||||
'/users/' + nickname + '/statuses/' + statusNumber
|
|
||||||
speakerJson = {
|
|
||||||
"name": nickname,
|
|
||||||
"summary": "",
|
|
||||||
"content": newMessageOriginal,
|
|
||||||
"say": newMessageOriginal,
|
|
||||||
"published": published,
|
|
||||||
"imageDescription": "",
|
|
||||||
"detectedLinks": [],
|
|
||||||
"id": postId,
|
|
||||||
"direct": True
|
|
||||||
}
|
|
||||||
_desktopStoreMsg(speakerJson, 'sent')
|
|
||||||
sayStr = 'Direct message sent'
|
sayStr = 'Direct message sent'
|
||||||
else:
|
else:
|
||||||
sayStr = 'Direct message failed'
|
sayStr = 'Direct message failed'
|
||||||
|
@ -1233,25 +1146,26 @@ def runDesktopClient(baseDir: str, proxyType: str, httpPrefix: str,
|
||||||
postIndex = commandStr.split(' ')[-1].strip()
|
postIndex = commandStr.split(' ')[-1].strip()
|
||||||
if postIndex.isdigit():
|
if postIndex.isdigit():
|
||||||
currIndex = int(postIndex)
|
currIndex = int(postIndex)
|
||||||
speakerJson = \
|
if currIndex > 0 and boxJson:
|
||||||
_getSpeakerJsonFromIndex(currTimeline, currIndex)
|
postJsonObject = \
|
||||||
if not speakerJson:
|
_desktopGetBoxPostObject(boxJson, currIndex)
|
||||||
speakerJson = {}
|
if postJsonObject:
|
||||||
linkOpened = False
|
content = postJsonObject['object']['content']
|
||||||
if speakerJson.get('detectedLinks'):
|
messageStr, detectedLinks = \
|
||||||
if len(speakerJson['detectedLinks']) > 0:
|
speakableText(baseDir, content, translate)
|
||||||
for url in speakerJson['detectedLinks']:
|
linkOpened = False
|
||||||
if '://' in url:
|
for url in detectedLinks:
|
||||||
webbrowser.open(url)
|
if '://' in url:
|
||||||
linkOpened = True
|
webbrowser.open(url)
|
||||||
if linkOpened:
|
linkOpened = True
|
||||||
sayStr = 'Opened web links'
|
if linkOpened:
|
||||||
_sayCommand(sayStr, sayStr, originalScreenReader,
|
sayStr = 'Opened web links'
|
||||||
systemLanguage, espeak)
|
_sayCommand(sayStr, sayStr, originalScreenReader,
|
||||||
if not linkOpened:
|
systemLanguage, espeak)
|
||||||
sayStr = 'There are no web links to open.'
|
else:
|
||||||
_sayCommand(sayStr, sayStr, originalScreenReader,
|
sayStr = 'There are no web links to open.'
|
||||||
systemLanguage, espeak)
|
_sayCommand(sayStr, sayStr, originalScreenReader,
|
||||||
|
systemLanguage, espeak)
|
||||||
print('')
|
print('')
|
||||||
elif commandStr.startswith('h'):
|
elif commandStr.startswith('h'):
|
||||||
_desktopHelp()
|
_desktopHelp()
|
||||||
|
|
|
@ -407,12 +407,12 @@ def getSSMLbox(baseDir: str, path: str,
|
||||||
instanceTitle, gender)
|
instanceTitle, gender)
|
||||||
|
|
||||||
|
|
||||||
def speakableText(baseDir: str, content: str, translate: {}) -> str:
|
def speakableText(baseDir: str, content: str, translate: {}) -> (str, []):
|
||||||
"""Convert the given text to a speakable version
|
"""Convert the given text to a speakable version
|
||||||
which includes changes for prononciation
|
which includes changes for prononciation
|
||||||
"""
|
"""
|
||||||
if isPGPEncrypted(content):
|
if isPGPEncrypted(content):
|
||||||
return
|
return content, []
|
||||||
|
|
||||||
# replace some emoji before removing html
|
# replace some emoji before removing html
|
||||||
if ' <3' in content:
|
if ' <3' in content:
|
||||||
|
@ -428,7 +428,7 @@ def speakableText(baseDir: str, content: str, translate: {}) -> str:
|
||||||
# replace all double spaces
|
# replace all double spaces
|
||||||
while ' ' in sayContent:
|
while ' ' in sayContent:
|
||||||
sayContent = sayContent.replace(' ', ' ')
|
sayContent = sayContent.replace(' ', ' ')
|
||||||
return sayContent.replace(' . ', '. ').strip()
|
return sayContent.replace(' . ', '. ').strip(), detectedLinks
|
||||||
|
|
||||||
|
|
||||||
def _postToSpeakerJson(baseDir: str, httpPrefix: str,
|
def _postToSpeakerJson(baseDir: str, httpPrefix: str,
|
||||||
|
|
Loading…
Reference in New Issue