update
This commit is contained in:
58
main.py
58
main.py
@@ -58,9 +58,30 @@ async def send_notification(notification: Notification, background_tasks: Backgr
|
|||||||
try:
|
try:
|
||||||
# Format the message to include the service name
|
# Format the message to include the service name
|
||||||
# Plain text fallback
|
# Plain text fallback
|
||||||
plain_message = f"[{notification.service_name}]\n{notification.content}"
|
plain_message = f"[{notification.service_name}] {notification.content}"
|
||||||
# HTML message
|
|
||||||
html_message = f"<b>[{notification.service_name}]</b><br>{notification.content}"
|
# HTML message with better formatting
|
||||||
|
# Map levels to emojis
|
||||||
|
level_emojis = {
|
||||||
|
"info": "ℹ️",
|
||||||
|
"warning": "⚠️",
|
||||||
|
"error": "🚨",
|
||||||
|
"success": "✅"
|
||||||
|
}
|
||||||
|
emoji = level_emojis.get(notification.level, "📢")
|
||||||
|
# Clean up content
|
||||||
|
cleaned_content = notification.content.replace("{album_explicit}", "")
|
||||||
|
|
||||||
|
# Format the message to include the service name
|
||||||
|
# Plain text fallback
|
||||||
|
plain_message = f"[{notification.service_name}] {cleaned_content}"
|
||||||
|
|
||||||
|
# HTML message with better formatting
|
||||||
|
|
||||||
|
html_message = (
|
||||||
|
f"<h4>{emoji} {notification.service_name}</h4>"
|
||||||
|
f"<blockquote>{cleaned_content.replace(chr(10), '<br>')}</blockquote>"
|
||||||
|
)
|
||||||
|
|
||||||
# We can send it in background to not block the API response
|
# We can send it in background to not block the API response
|
||||||
logger.info(f"Queueing message for room_id: {notification.room_id or 'Default'}")
|
logger.info(f"Queueing message for room_id: {notification.room_id or 'Default'}")
|
||||||
@@ -82,27 +103,40 @@ async def receive_jellyfin_webhook(payload: JellyfinPayload, background_tasks: B
|
|||||||
return {"status": "ignored", "reason": "Not an ItemAdded event"}
|
return {"status": "ignored", "reason": "Not an ItemAdded event"}
|
||||||
|
|
||||||
# content construction
|
# content construction
|
||||||
content = ""
|
plain_content = ""
|
||||||
|
html_content = ""
|
||||||
|
|
||||||
if payload.item_type == "Movie":
|
if payload.item_type == "Movie":
|
||||||
content = f"New Movie: {payload.name}"
|
plain_content = f"New Movie: {payload.name}"
|
||||||
|
html_content = f"<h4>🎬 New Movie Added</h4><b>{payload.name}</b>"
|
||||||
|
|
||||||
if payload.year:
|
if payload.year:
|
||||||
content += f" ({payload.year})"
|
plain_content += f" ({payload.year})"
|
||||||
|
html_content += f" ({payload.year})"
|
||||||
if payload.overview:
|
if payload.overview:
|
||||||
content += f"\n{payload.overview}"
|
plain_content += f"\n{payload.overview}"
|
||||||
|
html_content += f"<blockquote>{payload.overview}</blockquote>"
|
||||||
|
|
||||||
elif payload.item_type == "Episode":
|
elif payload.item_type == "Episode":
|
||||||
show = payload.series_name or "Unknown Series"
|
show = payload.series_name or "Unknown Series"
|
||||||
s = f"S{payload.season:02d}" if payload.season is not None else "S??"
|
s = f"S{payload.season:02d}" if payload.season is not None else "S??"
|
||||||
e = f"E{payload.episode:02d}" if payload.episode is not None else "E??"
|
e = f"E{payload.episode:02d}" if payload.episode is not None else "E??"
|
||||||
content = f"New Episode: {show} - {s}{e} - {payload.name}"
|
|
||||||
|
plain_content = f"New Episode: {show} - {s}{e} - {payload.name}"
|
||||||
|
html_content = (
|
||||||
|
f"<h4>📺 New Episode Added</h4>"
|
||||||
|
f"<b>{show}</b><br>"
|
||||||
|
f"{s}{e} - {payload.name}"
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
# Fallback for Series, Season, etc.
|
# Fallback for Series, Season, etc.
|
||||||
content = f"New {payload.item_type}: {payload.name}"
|
plain_content = f"New {payload.item_type}: {payload.name}"
|
||||||
|
html_content = f"<h4>✨ New {payload.item_type} Added</h4><b>{payload.name}</b>"
|
||||||
|
|
||||||
plain_message = f"[Jellyfin]\n{content}"
|
plain_message = f"[Jellyfin] {plain_content}"
|
||||||
html_message = f"<b>[Jellyfin]</b><br>{content.replace(chr(10), '<br>')}"
|
|
||||||
|
|
||||||
logger.info(f"Queueing Jellyfin message for room_id: {payload.room_id or 'Default'}")
|
logger.info(f"Queueing Jellyfin message for room_id: {payload.room_id or 'Default'}")
|
||||||
background_tasks.add_task(bot.send_message, plain_message, html_message, payload.room_id)
|
background_tasks.add_task(bot.send_message, plain_message, html_content, payload.room_id)
|
||||||
return {"status": "queued"}
|
return {"status": "queued"}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Reference in New Issue
Block a user