initial commit
This commit is contained in:
0
app/utils/__init__.py
Normal file
0
app/utils/__init__.py
Normal file
79
app/utils/send_to_notion.py
Normal file
79
app/utils/send_to_notion.py
Normal file
@ -0,0 +1,79 @@
|
||||
import os
|
||||
import re
|
||||
from datetime import datetime, timezone
|
||||
from os import path
|
||||
|
||||
from imgur_python import Imgur
|
||||
from aiogram.types import Message, MessageEntity, PhotoSize
|
||||
|
||||
from app.settings import notion, bot, secrets
|
||||
|
||||
|
||||
async def send_to_notion(message: Message):
|
||||
pattern = r"(https?://[^\s]+|t\.me/[^\s]+)"
|
||||
image_url = None
|
||||
if message.caption:
|
||||
links2 = re.findall(pattern, message.caption)
|
||||
text: str = message.caption
|
||||
photos: PhotoSize = [photo.file_id for photo in message.photo]
|
||||
links: MessageEntity = [
|
||||
link.url for link in message.caption_entities if link.type == "text_link"
|
||||
]
|
||||
if photos:
|
||||
file_name = f"images/{photos[0]}.jpg"
|
||||
await bot.download(message.photo[-1], destination=file_name)
|
||||
imgur_client = Imgur(
|
||||
{"client_id": secrets.imgur_client_id.get_secret_value()}
|
||||
)
|
||||
image = imgur_client.image_upload(
|
||||
path.realpath(file_name), "Untitled", "My first image upload"
|
||||
)
|
||||
image_url = image["response"]["data"]["link"]
|
||||
os.remove(file_name)
|
||||
else:
|
||||
text: str = message.text
|
||||
links2 = re.findall(pattern, message.text)
|
||||
photos = []
|
||||
links: MessageEntity = (
|
||||
[link.url for link in message.entities if link.type == "text_link"]
|
||||
if message.entities
|
||||
else []
|
||||
)
|
||||
if links2:
|
||||
links.extend(links2)
|
||||
links = set(links)
|
||||
properties = {
|
||||
"Name": {"title": [{"text": {"content": text[: text.index("\n")]}}]},
|
||||
"Text": {"rich_text": [{"text": {"content": text}}]},
|
||||
"Added at": {
|
||||
"date": {
|
||||
"start": datetime.now().astimezone(timezone.utc).isoformat(),
|
||||
"end": None,
|
||||
}
|
||||
},
|
||||
}
|
||||
for i, link in enumerate(links, start=1):
|
||||
if i > 4:
|
||||
break
|
||||
properties[f"Link{i}"] = {"url": link}
|
||||
cover = None
|
||||
if photos:
|
||||
properties["Image"] = {
|
||||
"files": [
|
||||
{
|
||||
"name": "image.jpg",
|
||||
"type": "external",
|
||||
"external": {"url": image_url},
|
||||
}
|
||||
]
|
||||
}
|
||||
cover = {"type": "external", "external": {"url": image_url}}
|
||||
icon = {"type": "emoji", "emoji": "🎉"}
|
||||
parent = {
|
||||
"type": "database_id",
|
||||
"database_id": secrets.database_id.get_secret_value(),
|
||||
}
|
||||
|
||||
return await notion.pages.create(
|
||||
parent=parent, properties=properties, icon=icon, cover=cover
|
||||
)
|
Reference in New Issue
Block a user