diff --git a/src/max_poster.py b/src/max_poster.py
index 77d0baf..8212563 100644
--- a/src/max_poster.py
+++ b/src/max_poster.py
@@ -305,7 +305,7 @@ class MAXPoster:
)
note = build_media_unavailable_note(link_only_media or [], parse_mode="html", vk_url=vk_url)
- video_note = build_oversized_video_note(oversized_videos or [], parse_mode="html")
+ video_note = build_oversized_video_note(oversized_videos or [], parse_mode="html", vk_url=vk_url)
for extra in (note, video_note):
if extra:
formatted_text = f"{formatted_text}\n\n{extra}" if formatted_text else extra
diff --git a/src/text_formatter.py b/src/text_formatter.py
index 3cc2665..09ef6cd 100644
--- a/src/text_formatter.py
+++ b/src/text_formatter.py
@@ -172,27 +172,31 @@ def build_media_unavailable_note(
return header + "\n" + "\n".join(lines)
-def build_oversized_video_note(items: list, parse_mode: str = "html") -> str:
+def build_oversized_video_note(
+ items: list, parse_mode: str = "html", vk_url: Optional[str] = None
+) -> str:
"""Like build_media_unavailable_note, but for videos that were deliberately
- skipped for exceeding a platform's size limit (e.g. MAX's 250MB video cap) -
- friendlier tone since this isn't a failure, just a known platform limit."""
+ skipped for exceeding a platform's size limit (e.g. MAX's 250MB video cap).
+ Points at the wall post (vk_url), not the video's own page - VK's direct
+ video URLs can 404 for viewers without a session, while the post always
+ resolves. Wording doesn't mention the platform limit: that's an internal
+ reason for readers, not something worth surfacing to subscribers."""
if not items:
return ""
- lines = []
- for item in items:
- url = str(getattr(item, "original_url", "") or "").strip()
- if not url:
- continue
- if parse_mode == "html":
- lines.append(f'- видео по ссылке')
- else:
- lines.append(f"- видео по ссылке: {url}")
- if not lines:
+ target = vk_url or next(
+ (str(getattr(item, "original_url", "") or "").strip() for item in items if getattr(item, "original_url", None)),
+ "",
+ )
+ if not target:
return ""
- header = "Видео слишком большое для платформы, посмотреть можно здесь:"
+ if parse_mode == "html":
+ line = f'- Смотреть видео в VK'
+ else:
+ line = f"- Смотреть видео в VK: {target}"
+ header = "Видео к этому посту:"
if parse_mode == "html":
header = f"{html.escape(header)}"
- return header + "\n" + "\n".join(lines)
+ return header + "\n" + line
def format_post_text(