Python 및 Flask를 사용한 자동화된 링크 미리보기 이미지
아래에서 어떻게 표시되는지 확인할 수 있습니다.
URL을 수락하고 웹 사이트의 메타데이터를 기반으로 생성된 이미지를 반환하는 간단한 Flask 엔드포인트를 생성합니다.
그래서 일하러 가자.
카드의 HTML 버전을 위한 Jinja2 템플릿 준비
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ title }}</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">
<style>
@page {
size: 1200px 628px;
margin: 0;
padding: 0;
}
html {
font-size: 137.5%;
-webkit-font-smoothing: antialiased;
}
body {
padding: 3rem;
font-family: 'Inter', sans-serif;
color: #111111;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='18' viewBox='0 0 100 18'%3E%3Cpath fill='%231c64f2' fill-opacity='0.05' d='M61.82 18c3.47-1.45 6.86-3.78 11.3-7.34C78 6.76 80.34 5.1 83.87 3.42 88.56 1.16 93.75 0 100 0v6.16C98.76 6.05 97.43 6 96 6c-9.59 0-14.23 2.23-23.13 9.34-1.28 1.03-2.39 1.9-3.4 2.66h-7.65zm-23.64 0H22.52c-1-.76-2.1-1.63-3.4-2.66C11.57 9.3 7.08 6.78 0 6.16V0c6.25 0 11.44 1.16 16.14 3.42 3.53 1.7 5.87 3.35 10.73 7.24 4.45 3.56 7.84 5.9 11.31 7.34zM61.82 0h7.66a39.57 39.57 0 0 1-7.34 4.58C57.44 6.84 52.25 8 46 8S34.56 6.84 29.86 4.58A39.57 39.57 0 0 1 22.52 0h15.66C41.65 1.44 45.21 2 50 2c4.8 0 8.35-.56 11.82-2z'%3E%3C/path%3E%3C/svg%3E");
}
h1 {
font-size: 3.052rem;
margin-top: 0;
}
p {
font-size: 1.563rem;
line-height: 1.5;
}
</style>
</head>
<body>
<h1>{{ title }}</h1>
<p>{{ excerpt }}</p>
</body>
</html>
미리보기 이미지를 생성할 Flask 끝점 만들기
import io
import requests
from lxml import etree
@app.route('/preview.png')
def preview():
# Fetch the URL
page_html = requests.get(request.args['url']).text
# Parse the HTML response
parser = etree.HTMLParser()
tree = etree.parse(io.StringIO(page_html), parser)
# Get the website's title and description from its metadata
head = tree.xpath('/html/head')[0]
title = head.xpath('meta[@property="og:title"]/@content')[0]
description = head.xpath('meta[@property="og:description"]/@content')[0]
# Render the HTML version of the preview
preview_html = render_template('card.html', title=title, excerpt=description)
# Use weasyprint to convert the HTML preview to PNG
preview_img = weasyprint.HTML(string=preview_html).write_png(resolution=2 * 96)
return Response(preview_img, mimetype='image/png')
다음은 단계별로 진행되는 단계입니다.
weasyprint
을 사용하여 HTML 미리 보기를 PNG로 변환합니다. 그리고 그게 다야! 이제 소셜 미디어에서 공유할 때 좋게 보이도록 웹 사이트 메타데이터에서 엔드포인트를 사용할 수 있습니다.
<meta property="og:image" content="https://YOUR_DOMAIN/preview.png?url=YOUR_URL"/>
Reference
이 문제에 관하여(Python 및 Flask를 사용한 자동화된 링크 미리보기 이미지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jakubsvehla/automated-link-preview-images-with-python-flask-5da5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)