urlinfo:imdb: include link to imdb page & trailer

This commit is contained in:
ducklet 2020-11-18 19:19:06 +01:00
parent fc4aa59f5c
commit c118016700

View file

@ -4,9 +4,10 @@ import re
from dataclasses import dataclass from dataclasses import dataclass
from dataclasses import replace as clone from dataclasses import replace as clone
from datetime import date from datetime import date
from html import escape
from pathlib import Path from pathlib import Path
from typing import * from typing import *
from urllib.parse import urlparse from urllib.parse import urlencode, urljoin, urlparse
import requests import requests
@ -77,6 +78,7 @@ async def import_image(client, url, filename=None):
@dataclass @dataclass
class Extracted: class Extracted:
title: str title: str
url: str
original_image: str original_image: str
genres: List[str] genres: List[str]
description: str description: str
@ -114,6 +116,7 @@ async def extractor(info):
info.extracted = Extracted( info.extracted = Extracted(
title=ld["name"], title=ld["name"],
url=urljoin(info.final_url, ld["url"]),
original_image=ld["image"], original_image=ld["image"],
genres=ld["genre"], genres=ld["genre"],
description=ld["description"], description=ld["description"],
@ -162,8 +165,16 @@ async def handle(message: Message, url, load_info):
if ex.rating_count: if ex.rating_count:
details.append(f"⭐️ {ex.rating_value:_.01f} 10 (👤 {ex.rating_count:_})") details.append(f"⭐️ {ex.rating_value:_.01f} 10 (👤 {ex.rating_count:_})")
details.append(f"🏷 {' '.join(ex.genres[:3])}") details.append(f"🏷 {' '.join(ex.genres[:3])}")
trailer_link = (
urlparse("https://www.youtube.com/results")
._replace(
query=urlencode({"search_query": f"{ex.title} {ex.published:%Y} trailer"})
)
.geturl()
)
details.append(f'📽 <a href="{escape(trailer_link)}">trailer</a>')
lines = [ lines = [
f"<b>{ex.title}</b> (<b>{ex.published:%Y}</b>)", f'<a href="{ex.url}"><b>{ex.title}</b></a> (<b>{ex.published:%Y}</b>)',
f"{', '.join(details)}", f"{', '.join(details)}",
f"<i>{capped_text(ex.description, 500)}</i>", f"<i>{capped_text(ex.description, 500)}</i>",
] ]