add image exception

This commit is contained in:
Roy Olav Purser 2021-05-27 21:13:20 +02:00
parent 7c1a99dde8
commit 437cabf303
Signed by: roypur
GPG Key ID: E14D26A036F21656

View File

@ -197,43 +197,46 @@ class UpstreamHandler():
try: try:
embed_url = f'https://noembed.com/embed?url={self.upstream_safe}' embed_url = f'https://noembed.com/embed?url={self.upstream_safe}'
async with self.proxy.session() as session: async with self.proxy.session() as session:
resp_embed_future = session.get(embed_url) try:
resp_upstream_future = session.get(self.upstream) resp_embed_future = session.get(embed_url)
resp_embed = await resp_embed_future resp_upstream_future = session.get(self.upstream)
resp_upstream = await resp_upstream_future resp_embed = await resp_embed_future
text_embed_future = resp_embed.text() resp_upstream = await resp_upstream_future
text_upstream_future = resp_upstream.text() text_embed_future = resp_embed.text()
text_embed = await text_embed_future text_upstream_future = resp_upstream.text()
text_upstream = await text_upstream_future text_embed = await text_embed_future
parser = MetaParser() text_upstream = await text_upstream_future
parser.feed(text_upstream) parser = MetaParser()
data_raw = json.loads(text_embed) parser.feed(text_upstream)
if isinstance(data_raw, dict): data_raw = json.loads(text_embed)
data_new = {} if isinstance(data_raw, dict):
data_valid = True data_new = {}
data_new["og:title"] = data_raw.get("title") data_valid = True
data_new["og:description"] = data_raw.get("author_name") data_new["og:title"] = data_raw.get("title")
data_new["og:image"] = data_raw.get("thumbnail_url") data_new["og:description"] = data_raw.get("author_name")
data_filtered = {} data_new["og:image"] = data_raw.get("thumbnail_url")
for key in data_new: data_filtered = {}
value = data_new.get(key) for key in data_new:
if isinstance(value, str): value = data_new.get(key)
data_filtered[key] = value if isinstance(value, str):
data_filtered.update(parser.meta_data) data_filtered[key] = value
data = data_filtered data_filtered.update(parser.meta_data)
image = data.get("og:image") data = data_filtered
if isinstance(image, str): image = data.get("og:image")
if self.provider == "youtube": if isinstance(image, str):
full_image = re.sub(r'\/[a-zA-Z0-9]+\.([a-zA-Z0-9]+)$', r'/maxresdefault.\1', image) if self.provider == "youtube":
standard_image = re.sub(r'\/[a-zA-Z0-9]+\.([a-zA-Z0-9]+)$', r'/sddefault.\1', image) full_image = re.sub(r'\/[a-zA-Z0-9]+\.([a-zA-Z0-9]+)$', r'/maxresdefault.\1', image)
image_status_full_future = session.head(full_image) standard_image = re.sub(r'\/[a-zA-Z0-9]+\.([a-zA-Z0-9]+)$', r'/sddefault.\1', image)
image_status_standard_future = session.head(standard_image) image_status_full_future = session.head(full_image)
image_status_full = await image_status_full_future image_status_standard_future = session.head(standard_image)
image_status_standard = await image_status_standard_future image_status_full = await image_status_full_future
if hasattr(image_status_full, "status") and (image_status_full.status < 400): image_status_standard = await image_status_standard_future
data["og:image"] = full_image if hasattr(image_status_full, "status") and (image_status_full.status < 400):
elif hasattr(image_status_standard, "status") and (image_status_standard.status < 400): data["og:image"] = full_image
data["og:image"] = standard_image elif hasattr(image_status_standard, "status") and (image_status_standard.status < 400):
data["og:image"] = standard_image
except Exception as e:
logger.info(e)
except Exception as e: except Exception as e:
logger.info(e) logger.info(e)
return data return data