Add support for inline images

This commit is contained in:
Thomas Sileo
2019-11-01 16:05:48 +01:00
parent 00b43fa935
commit 6a40e7d7f2
3 changed files with 40 additions and 4 deletions

View File

@@ -7,6 +7,7 @@ from typing import Dict
import flask
import requests
from bs4 import BeautifulSoup
from flask import current_app as app
from little_boxes import activitypub as ap
from little_boxes.activitypub import _to_list
@@ -271,7 +272,9 @@ def select_video_to_cache(links):
return videos[0]
@blueprint.route("/task/cache_attachments", methods=["POST"])
@blueprint.route(
"/task/cache_attachments", methods=["POST"]
) # noqa: C910 # too complex
def task_cache_attachments() -> _Response:
task = p.parse(flask.request)
app.logger.info(f"task={task!r}")
@@ -286,6 +289,13 @@ def task_cache_attachments() -> _Response:
else:
obj = activity
if obj.content:
content_html = BeautifulSoup(obj.content, "html5lib")
for img in content_html.find_all("img"):
src = img.attrs.get("src")
if src:
Tasks.cache_attachment({"url": src}, iri)
if obj.has_type(ap.ActivityType.VIDEO):
if isinstance(obj.url, list):
# TODO: filter only videogt