Fix dead oversized-video link and stop exposing the platform limit to readers

build_oversized_video_note linked to the video's own VK page (with an
access_key suffix), which 404s for viewers without a VK session - reported
as "такой страницы нет" on a real post. Point at the wall post instead
(vk_url), same as build_media_unavailable_note already does, since that
always resolves.

Also dropped "Видео слишком большое для платформы" from the visible text -
subscribers don't need to know MAX has a 250MB cap, that's an internal
implementation detail, not something worth surfacing in a public post.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-09 18:13:48 +05:00
parent f8842f8c07
commit eab965c02d
2 changed files with 20 additions and 16 deletions
+1 -1
View File
@@ -305,7 +305,7 @@ class MAXPoster:
) )
note = build_media_unavailable_note(link_only_media or [], parse_mode="html", vk_url=vk_url) 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): for extra in (note, video_note):
if extra: if extra:
formatted_text = f"{formatted_text}\n\n{extra}" if formatted_text else extra formatted_text = f"{formatted_text}\n\n{extra}" if formatted_text else extra
+19 -15
View File
@@ -172,27 +172,31 @@ def build_media_unavailable_note(
return header + "\n" + "\n".join(lines) 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 """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) - 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.""" 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: if not items:
return "" return ""
lines = [] target = vk_url or next(
for item in items: (str(getattr(item, "original_url", "") or "").strip() for item in items if getattr(item, "original_url", None)),
url = str(getattr(item, "original_url", "") or "").strip() "",
if not url: )
continue if not target:
if parse_mode == "html":
lines.append(f'- <a href="{html.escape(url, quote=True)}">видео по ссылке</a>')
else:
lines.append(f"- видео по ссылке: {url}")
if not lines:
return "" return ""
header = "Видео слишком большое для платформы, посмотреть можно здесь:" if parse_mode == "html":
line = f'- <a href="{html.escape(target, quote=True)}">Смотреть видео в VK</a>'
else:
line = f"- Смотреть видео в VK: {target}"
header = "Видео к этому посту:"
if parse_mode == "html": if parse_mode == "html":
header = f"<i>{html.escape(header)}</i>" header = f"<i>{html.escape(header)}</i>"
return header + "\n" + "\n".join(lines) return header + "\n" + line
def format_post_text( def format_post_text(