Add default embed settings when creating the feed
This commit is contained in:
parent
d51ca2cced
commit
4836c2428b
3 changed files with 39 additions and 11 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import pprint
|
import pprint
|
||||||
|
|
@ -36,6 +37,7 @@ from discord_rss_bot.hoyolab_api import extract_post_id_from_hoyolab_url
|
||||||
from discord_rss_bot.hoyolab_api import fetch_hoyolab_post
|
from discord_rss_bot.hoyolab_api import fetch_hoyolab_post
|
||||||
from discord_rss_bot.hoyolab_api import is_c3kay_feed
|
from discord_rss_bot.hoyolab_api import is_c3kay_feed
|
||||||
from discord_rss_bot.is_url_valid import is_url_valid
|
from discord_rss_bot.is_url_valid import is_url_valid
|
||||||
|
from discord_rss_bot.settings import default_custom_embed
|
||||||
from discord_rss_bot.settings import default_custom_message
|
from discord_rss_bot.settings import default_custom_message
|
||||||
from discord_rss_bot.settings import get_reader
|
from discord_rss_bot.settings import get_reader
|
||||||
|
|
||||||
|
|
@ -570,5 +572,8 @@ def create_feed(reader: Reader, feed_url: str, webhook_dropdown: str) -> None:
|
||||||
# This is the default message that will be sent to Discord.
|
# This is the default message that will be sent to Discord.
|
||||||
reader.set_tag(clean_feed_url, "custom_message", default_custom_message) # pyright: ignore[reportArgumentType]
|
reader.set_tag(clean_feed_url, "custom_message", default_custom_message) # pyright: ignore[reportArgumentType]
|
||||||
|
|
||||||
|
# Set the default embed tag when creating the feed
|
||||||
|
reader.set_tag(clean_feed_url, "embed", json.dumps(default_custom_embed))
|
||||||
|
|
||||||
# Update the full-text search index so our new feed is searchable.
|
# Update the full-text search index so our new feed is searchable.
|
||||||
reader.update_search()
|
reader.update_search()
|
||||||
|
|
|
||||||
|
|
@ -657,16 +657,29 @@ async def post_embed(
|
||||||
feed: Feed = reader.get_feed(urllib.parse.unquote(clean_feed_url))
|
feed: Feed = reader.get_feed(urllib.parse.unquote(clean_feed_url))
|
||||||
|
|
||||||
custom_embed: CustomEmbed = get_embed(reader, feed)
|
custom_embed: CustomEmbed = get_embed(reader, feed)
|
||||||
custom_embed.title = title
|
# Only overwrite fields that the user provided. This prevents accidental
|
||||||
custom_embed.description = description
|
# clearing of previously saved embed data when the form submits empty
|
||||||
custom_embed.color = color
|
# values for fields the user did not change.
|
||||||
custom_embed.image_url = image_url
|
if title:
|
||||||
custom_embed.thumbnail_url = thumbnail_url
|
custom_embed.title = title
|
||||||
custom_embed.author_name = author_name
|
if description:
|
||||||
custom_embed.author_url = author_url
|
custom_embed.description = description
|
||||||
custom_embed.author_icon_url = author_icon_url
|
if color:
|
||||||
custom_embed.footer_text = footer_text
|
custom_embed.color = color
|
||||||
custom_embed.footer_icon_url = footer_icon_url
|
if image_url:
|
||||||
|
custom_embed.image_url = image_url
|
||||||
|
if thumbnail_url:
|
||||||
|
custom_embed.thumbnail_url = thumbnail_url
|
||||||
|
if author_name:
|
||||||
|
custom_embed.author_name = author_name
|
||||||
|
if author_url:
|
||||||
|
custom_embed.author_url = author_url
|
||||||
|
if author_icon_url:
|
||||||
|
custom_embed.author_icon_url = author_icon_url
|
||||||
|
if footer_text:
|
||||||
|
custom_embed.footer_text = footer_text
|
||||||
|
if footer_icon_url:
|
||||||
|
custom_embed.footer_icon_url = footer_icon_url
|
||||||
|
|
||||||
# Save the data.
|
# Save the data.
|
||||||
save_embed(reader, feed, custom_embed)
|
save_embed(reader, feed, custom_embed)
|
||||||
|
|
@ -1047,7 +1060,9 @@ def create_html_for_feed( # noqa: C901, PLR0914
|
||||||
for content_item in entry.content:
|
for content_item in entry.content:
|
||||||
content: str = content_item.value
|
content: str = content_item.value
|
||||||
|
|
||||||
first_image = get_first_image(summary, content)
|
first_image, _ = get_first_image(summary, content)
|
||||||
|
|
||||||
|
logging.getLogger("discord_rss_bot.main").info(f"main.py: entry_id={entry.id}, first_image={first_image}")
|
||||||
|
|
||||||
text: str = replace_tags_in_text_message(entry, reader=reader) or (
|
text: str = replace_tags_in_text_message(entry, reader=reader) or (
|
||||||
"<div class='text-muted'>No content available.</div>"
|
"<div class='text-muted'>No content available.</div>"
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,14 @@ import os
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
|
import warnings
|
||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
from bs4 import MarkupResemblesLocatorWarning
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
|
@ -34,6 +37,11 @@ def pytest_sessionstart(session: pytest.Session) -> None:
|
||||||
|
|
||||||
os.environ["DISCORD_RSS_BOT_DATA_DIR"] = str(worker_data_dir)
|
os.environ["DISCORD_RSS_BOT_DATA_DIR"] = str(worker_data_dir)
|
||||||
|
|
||||||
|
# Tests call markdownify which may invoke BeautifulSoup on strings that look
|
||||||
|
# like URLs; that triggers MarkupResemblesLocatorWarning from bs4. Silence
|
||||||
|
# that warning during tests to avoid noisy output.
|
||||||
|
warnings.filterwarnings("ignore", category=MarkupResemblesLocatorWarning)
|
||||||
|
|
||||||
# If modules were imported before this hook (unlikely), force them to use
|
# If modules were imported before this hook (unlikely), force them to use
|
||||||
# the worker-specific location.
|
# the worker-specific location.
|
||||||
settings_module: Any = sys.modules.get("discord_rss_bot.settings")
|
settings_module: Any = sys.modules.get("discord_rss_bot.settings")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue