format multi-line toots on a single line using things like double space
This commit is contained in:
parent
5aba3f509e
commit
84ec6d812f
1 changed files with 24 additions and 2 deletions
|
@ -1,4 +1,5 @@
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
import bs4
|
||||||
from src import IRCBot, utils
|
from src import IRCBot, utils
|
||||||
|
|
||||||
LD_TYPE = ("application/ld+json; "
|
LD_TYPE = ("application/ld+json; "
|
||||||
|
@ -56,6 +57,27 @@ def find_actor(username, instance):
|
||||||
if link["type"] == ACTIVITY_TYPE:
|
if link["type"] == ACTIVITY_TYPE:
|
||||||
return link["href"]
|
return link["href"]
|
||||||
|
|
||||||
|
def _normalise_note(content):
|
||||||
|
soup = bs4.BeautifulSoup(content, "html.parser")
|
||||||
|
lines = []
|
||||||
|
for element in soup.find_all():
|
||||||
|
out = ""
|
||||||
|
if element.text.strip() == "":
|
||||||
|
continue
|
||||||
|
elif element.name == "p":
|
||||||
|
for subitem in element.contents:
|
||||||
|
if type(subitem) == bs4.element.Tag:
|
||||||
|
if subitem.name == "br":
|
||||||
|
lines.append(out)
|
||||||
|
out = ""
|
||||||
|
else:
|
||||||
|
out += subitem
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
|
lines.append(out.replace(" ", " "))
|
||||||
|
return " ".join(lines)
|
||||||
|
|
||||||
def format_note(actor, note, type="Create"):
|
def format_note(actor, note, type="Create"):
|
||||||
if type == "Announce":
|
if type == "Announce":
|
||||||
retoot_url = note
|
retoot_url = note
|
||||||
|
@ -66,13 +88,13 @@ def format_note(actor, note, type="Create"):
|
||||||
original_tooter = ap_actor.Actor(retoot.data["attributedTo"])
|
original_tooter = ap_actor.Actor(retoot.data["attributedTo"])
|
||||||
original_tooter.load()
|
original_tooter.load()
|
||||||
retooted_user = "@%s@%s" % (original_tooter.username, retoot_instance)
|
retooted_user = "@%s@%s" % (original_tooter.username, retoot_instance)
|
||||||
retoot_content = utils.http.strip_html(retoot.data["content"])
|
retoot_content = _normalise_note(retoot.data["content"])
|
||||||
|
|
||||||
return (retoot.data.get("summary", None), "%s (boost %s): %s - %s" % (
|
return (retoot.data.get("summary", None), "%s (boost %s): %s - %s" % (
|
||||||
actor.username, retooted_user, retoot_content), retoot_url)
|
actor.username, retooted_user, retoot_content), retoot_url)
|
||||||
|
|
||||||
elif type == "Create":
|
elif type == "Create":
|
||||||
content = utils.http.strip_html(note["content"])
|
content = _normalise_note(note["content"])
|
||||||
url = note.get("url", note["id"])
|
url = note.get("url", note["id"])
|
||||||
|
|
||||||
return (note.get("summary", None),
|
return (note.get("summary", None),
|
||||||
|
|
Loading…
Reference in a new issue