Spaces:
Running
Running
SilverElixir commited on
Commit ·
2436bd7
1
Parent(s): c262572
Log slideshow delivery summary: counts, size, download and send timings
Browse files- lumen_tiktok_flow.py +15 -0
lumen_tiktok_flow.py
CHANGED
|
@@ -8,6 +8,7 @@ import logging
|
|
| 8 |
import os
|
| 9 |
import re
|
| 10 |
import tempfile
|
|
|
|
| 11 |
from typing import Any
|
| 12 |
|
| 13 |
import aiohttp
|
|
@@ -237,6 +238,9 @@ async def _try_send_tiktok_slideshow(
|
|
| 237 |
if images and isinstance(images, list):
|
| 238 |
# TikTok разрешает до 35 слайдов, Telegram — 10 за вызов: берём весь пост и шлём несколькими группами.
|
| 239 |
images_to_fetch = images[:bot.TIKTOK_SLIDESHOW_MAX_ITEMS]
|
|
|
|
|
|
|
|
|
|
| 240 |
# Статус слайдшоу — через переводы (был захардкожен по-русски).
|
| 241 |
await bot._edit_message_quietly(status, bot._t(
|
| 242 |
message.chat.id, "tiktok_dl_slideshow",
|
|
@@ -292,6 +296,8 @@ async def _try_send_tiktok_slideshow(
|
|
| 292 |
downloaded = list(await asyncio.gather(
|
| 293 |
*(_download_slide_bounded(u) for u in fetch_urls)
|
| 294 |
))
|
|
|
|
|
|
|
| 295 |
skipped_slides = sum(1 for b in downloaded if not b)
|
| 296 |
if skipped_slides:
|
| 297 |
log.warning("[tiktok] Slideshow: %d of %d slides skipped (failed or over the post size cap).", skipped_slides, len(downloaded))
|
|
@@ -368,6 +374,15 @@ async def _try_send_tiktok_slideshow(
|
|
| 368 |
if chunk_idx + 1 < len(chunks):
|
| 369 |
# Пауза между группами — против анти-флуда.
|
| 370 |
await asyncio.sleep(0.3)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 371 |
await _send_tiktok_music(session, media_data, message, author, headers)
|
| 372 |
await bot._delete_message_quietly(status)
|
| 373 |
return True
|
|
|
|
| 8 |
import os
|
| 9 |
import re
|
| 10 |
import tempfile
|
| 11 |
+
import time
|
| 12 |
from typing import Any
|
| 13 |
|
| 14 |
import aiohttp
|
|
|
|
| 238 |
if images and isinstance(images, list):
|
| 239 |
# TikTok разрешает до 35 слайдов, Telegram — 10 за вызов: берём весь пост и шлём несколькими группами.
|
| 240 |
images_to_fetch = images[:bot.TIKTOK_SLIDESHOW_MAX_ITEMS]
|
| 241 |
+
# Тайминги и счётчики в итоговую строку: раньше успех нигде не писался и
|
| 242 |
+
# проверка сводилась к скриншотам (прод 27.10.2026).
|
| 243 |
+
started_at = time.perf_counter()
|
| 244 |
# Статус слайдшоу — через переводы (был захардкожен по-русски).
|
| 245 |
await bot._edit_message_quietly(status, bot._t(
|
| 246 |
message.chat.id, "tiktok_dl_slideshow",
|
|
|
|
| 296 |
downloaded = list(await asyncio.gather(
|
| 297 |
*(_download_slide_bounded(u) for u in fetch_urls)
|
| 298 |
))
|
| 299 |
+
download_elapsed = time.perf_counter() - started_at
|
| 300 |
+
downloaded_bytes = sum(len(b) for b in downloaded if b)
|
| 301 |
skipped_slides = sum(1 for b in downloaded if not b)
|
| 302 |
if skipped_slides:
|
| 303 |
log.warning("[tiktok] Slideshow: %d of %d slides skipped (failed or over the post size cap).", skipped_slides, len(downloaded))
|
|
|
|
| 374 |
if chunk_idx + 1 < len(chunks):
|
| 375 |
# Пауза между группами — против анти-флуда.
|
| 376 |
await asyncio.sleep(0.3)
|
| 377 |
+
total_elapsed = time.perf_counter() - started_at
|
| 378 |
+
log.info(
|
| 379 |
+
'[tiktok] Slideshow delivered: %d of %d slides (%d video, %d photo) in %d group(s), %.1f MB, download %.1fs, send %.1fs.',
|
| 380 |
+
len(media_items), len(images_to_fetch), len(probe_results),
|
| 381 |
+
len(media_items) - len(probe_results),
|
| 382 |
+
len(_chunk_tiktok_media_items(media_items)),
|
| 383 |
+
downloaded_bytes / (1024 * 1024),
|
| 384 |
+
download_elapsed, total_elapsed - download_elapsed,
|
| 385 |
+
)
|
| 386 |
await _send_tiktok_music(session, media_data, message, author, headers)
|
| 387 |
await bot._delete_message_quietly(status)
|
| 388 |
return True
|