mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 09:55:03 +00:00
bf176cc02b
- gotosocial.py: клиент GtS (httpx): post_status (markdown), upload_media v2, verify_credentials, delete_status - config.py: gt_social_url/token/visibility/format/channels - channels.py: fediverse-каналы (VESTI_GTS_CHANNELS, префикс gt:), gt: уходит только в fediverse - main.py: _publish_gotosocial + healthz-блок gotosocial + dry_run; status_id (ULID) в ответе - .env.example: GT_SOCIAL_* и VESTI_GTS_CHANNELS - STATUS.md/WALKTHROUGH.md: fediverse-раздел, хронология - openspec: change gotosocial-publisher (proposal/design/tasks/specs), validate чисто
32 lines
1.7 KiB
Python
32 lines
1.7 KiB
Python
# Разбор списков каналов из конфигурации.
|
||
# Два независимых списка:
|
||
# VESTI_BOT_CHANNELS — Telegram-каналы (@dedinit_vesti, ...)
|
||
# VESTI_GTS_CHANNELS — fediverse-каналы GoToSocial (@kpa39l@dedinit.ru, ...)
|
||
# Деление по типу канала: алгоритм НЕ угадывает по виду строки (надёжнее конфиг).
|
||
from .config import settings
|
||
|
||
|
||
def resolve_channels(channels: list[str] | None) -> list[str]:
|
||
"""Итоговый список Telegram-каналов для публикации.
|
||
|
||
channels из запроса (MAY переопределять) -> иначе VESTI_BOT_CHANNELS (конфиг).
|
||
Каналы с префиксом 'gt:' — это fediverse (GoToSocial), НЕ Telegram: отбрасываются.
|
||
"""
|
||
if channels:
|
||
tg = [c.strip() for c in channels if c.strip() and not c.strip().startswith("gt:")]
|
||
return list(dict.fromkeys(tg))
|
||
return list(settings.channels)
|
||
|
||
|
||
def resolve_gotosocial_channels(channels: list[str] | None) -> list[str]:
|
||
"""Итоговый список GoToSocial-каналов (fediverse).
|
||
|
||
В запросе fediverse-каналы передаются ПРЕФИКСОМ gt: (например gt:@kpa39l@dedinit.ru),
|
||
чтобы не смешивать с Telegram-каналами. Если в запросе их нет — берётся
|
||
VESTI_GTS_CHANNELS из конфига.
|
||
"""
|
||
if channels:
|
||
gts = [c[3:].strip() for c in channels if c.strip().startswith("gt:")]
|
||
if gts:
|
||
return list(dict.fromkeys(gts))
|
||
return list(settings.gt_social_channels) |