mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-29 22:29:24 +01:00
Fediverse: Add support for descriptions with line breaks
This commit is contained in:
parent
2df2bc28d0
commit
34f8842273
@ -50,6 +50,10 @@ _ = PluginInternationalization("Fediverse")
|
|||||||
_username_regexp = re.compile("@(?P<localuser>[^@ ]+)@(?P<hostname>[^@ ]+)")
|
_username_regexp = re.compile("@(?P<localuser>[^@ ]+)@(?P<hostname>[^@ ]+)")
|
||||||
|
|
||||||
|
|
||||||
|
def html_to_text(html):
|
||||||
|
return utils.web.htmlToText(html).split("\n", 1)[0].strip()
|
||||||
|
|
||||||
|
|
||||||
class FediverseHttp(httpserver.SupyHTTPServerCallback):
|
class FediverseHttp(httpserver.SupyHTTPServerCallback):
|
||||||
name = "minimal ActivityPub server"
|
name = "minimal ActivityPub server"
|
||||||
defaultResponse = _(
|
defaultResponse = _(
|
||||||
@ -236,7 +240,9 @@ class Fediverse(callbacks.PluginRegexp):
|
|||||||
if author.get("id"):
|
if author.get("id"):
|
||||||
return self._format_author(irc, author["id"])
|
return self._format_author(irc, author["id"])
|
||||||
elif isinstance(author, list):
|
elif isinstance(author, list):
|
||||||
return format("%L", [self._format_author(irc, item) for item in author])
|
return format(
|
||||||
|
"%L", [self._format_author(irc, item) for item in author]
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
return "<unknown>"
|
return "<unknown>"
|
||||||
|
|
||||||
@ -245,7 +251,9 @@ class Fediverse(callbacks.PluginRegexp):
|
|||||||
return self._format_status(irc, msg, status["object"])
|
return self._format_status(irc, msg, status["object"])
|
||||||
elif status["type"] == "Note":
|
elif status["type"] == "Note":
|
||||||
cw = status.get("summary")
|
cw = status.get("summary")
|
||||||
author_fullname = self._format_author(irc, status.get("attributedTo"))
|
author_fullname = self._format_author(
|
||||||
|
irc, status.get("attributedTo")
|
||||||
|
)
|
||||||
if cw:
|
if cw:
|
||||||
if self.registryValue(
|
if self.registryValue(
|
||||||
"format.statuses.showContentWithCW",
|
"format.statuses.showContentWithCW",
|
||||||
@ -258,7 +266,7 @@ class Fediverse(callbacks.PluginRegexp):
|
|||||||
% (
|
% (
|
||||||
author_fullname,
|
author_fullname,
|
||||||
cw,
|
cw,
|
||||||
utils.web.htmlToText(status["content"]),
|
html_to_text(status["content"]),
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
@ -270,7 +278,7 @@ class Fediverse(callbacks.PluginRegexp):
|
|||||||
_("%s: %s")
|
_("%s: %s")
|
||||||
% (
|
% (
|
||||||
author_fullname,
|
author_fullname,
|
||||||
utils.web.htmlToText(status["content"]),
|
html_to_text(status["content"]),
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -288,13 +296,15 @@ class Fediverse(callbacks.PluginRegexp):
|
|||||||
except ap.ActivityPubProtocolError as e:
|
except ap.ActivityPubProtocolError as e:
|
||||||
return "<Could not fetch status: %s>" % e.args[0]
|
return "<Could not fetch status: %s>" % e.args[0]
|
||||||
elif status["type"] == "Video":
|
elif status["type"] == "Video":
|
||||||
author_fullname = self._format_author(irc, status.get("attributedTo"))
|
author_fullname = self._format_author(
|
||||||
|
irc, status.get("attributedTo")
|
||||||
|
)
|
||||||
return format(
|
return format(
|
||||||
_("\x02%s\x02 (%T) by %s: %s"),
|
_("\x02%s\x02 (%T) by %s: %s"),
|
||||||
status["name"],
|
status["name"],
|
||||||
abs(parse_xsd_duration(status["duration"]).total_seconds()),
|
abs(parse_xsd_duration(status["duration"]).total_seconds()),
|
||||||
author_fullname,
|
author_fullname,
|
||||||
status["content"],
|
html_to_text(status["content"]),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
assert False, "Unknown status type %s: %r" % (
|
assert False, "Unknown status type %s: %r" % (
|
||||||
@ -313,14 +323,14 @@ class Fediverse(callbacks.PluginRegexp):
|
|||||||
_("%s: %s")
|
_("%s: %s")
|
||||||
% (
|
% (
|
||||||
self._format_actor_fullname(actor),
|
self._format_actor_fullname(actor),
|
||||||
utils.web.htmlToText(actor["summary"]),
|
html_to_text(actor["summary"]),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
def _format_profile(self, irc, msg, actor):
|
def _format_profile(self, irc, msg, actor):
|
||||||
return _("%s: %s") % (
|
return _("%s: %s") % (
|
||||||
self._format_actor_fullname(actor),
|
self._format_actor_fullname(actor),
|
||||||
utils.web.htmlToText(actor["summary"]),
|
html_to_text(actor["summary"]),
|
||||||
)
|
)
|
||||||
|
|
||||||
def usernameSnarfer(self, irc, msg, match):
|
def usernameSnarfer(self, irc, msg, match):
|
||||||
|
@ -446,7 +446,8 @@ class NetworklessFediverseTestCase(BaseFediverseTestCase):
|
|||||||
"status https://example.org/w/gABde9e210FGHre",
|
"status https://example.org/w/gABde9e210FGHre",
|
||||||
"\x02name of video\x02 (1 hour, 26 minutes, and 0 seconds) "
|
"\x02name of video\x02 (1 hour, 26 minutes, and 0 seconds) "
|
||||||
"by \x02chocobozzz\x02 (@chocobozzz@peertube.cpy.re) "
|
"by \x02chocobozzz\x02 (@chocobozzz@peertube.cpy.re) "
|
||||||
"and \x02someuser\x02 (@someuser@example.org): description of video"
|
"and \x02someuser\x02 (@someuser@example.org): "
|
||||||
|
"description of the video with a second line",
|
||||||
)
|
)
|
||||||
|
|
||||||
def testStatusUrlSnarferDisabled(self):
|
def testStatusUrlSnarferDisabled(self):
|
||||||
|
@ -535,7 +535,7 @@ PEERTUBE_VIDEO_VALUE = {
|
|||||||
"originallyPublishedAt": None,
|
"originallyPublishedAt": None,
|
||||||
"updated": "2022-07-13T07:03:12.373Z",
|
"updated": "2022-07-13T07:03:12.373Z",
|
||||||
"mediaType": "text/markdown",
|
"mediaType": "text/markdown",
|
||||||
"content": "description of video",
|
"content": "description of <strong>the</strong> video\r\nwith a second line",
|
||||||
"support": None,
|
"support": None,
|
||||||
"subtitleLanguage": [],
|
"subtitleLanguage": [],
|
||||||
"icon": [
|
"icon": [
|
||||||
|
Loading…
Reference in New Issue
Block a user