# Формат сообщения торрент-бота Основной способ добавления загрузки — переслать в jellybit сообщение стороннего торрент-бота (`exfreedomist`, поиск по rutracker и соседним трекерам). Из сообщения берутся **источник** (magnet) и **контекст** для распознавания. Формат чужой, ничем не документирован и может измениться без предупреждения. **Провенанс.** Образец снят вручную из личного чата Telegram (сообщение датировано 2026-03-21) и зафиксирован в [BRIEF.md] проекта; второй образец, меньшего размера, живёт константой `botMessage` в `internal/tgbot/parse_test.go` и проверяется тестами разборщика. Статистики по вариантам формата нет — наблюдений всего два, и это условие, а не замер. [BRIEF.md]: перенесён в [../passport.md](../passport.md); полный текст образца — ниже и в истории git. ## Образец ``` [1] #6514485 [rutracker], 2026-03-21 (https://hashurl.ru/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…): Дюна: Часть вторая / Dune: Part Two (Дени Вильнёв / Denis Villeneuve) [2024, США, Канада, фантастика, WEB-DL 2160p, HDR10+, Dolby Vision] Dub (Bravo Records Georgia, RHS, Jaskier, HDrezka) + MVO (LostFilm, TVShows, Jaskier) + AVO (Сербин, Яроцкий) + (Ukr) + Original (Eng) + Sub (Rus, Eng, Ukr) ✅ (проверено) | 34.82 GB magnet:?xt=urn:btih:541ADCFF3B6DD5DBA7088EA83317D9D6FAC331D6&tr=http%3A%2F%2Fbt.t-ru.org%2Fann%3Fmagnet&dn=rutracker-topic-6514485 Открыть magnet в вашем клиенте (https://hashurl.ru/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…) или получить .torrent: /tr_5c054 Оцените раздачу: 👍: /g_eabdce или 👎🏿: /r_eabdce [список файлов] (https://download.exfreedomist.com/files/541ADCFF3B6DD5DBA7088EA83317D9D6FAC331D6) Следить: /us_5c054 Добавить в закладки: /mka_96423 cправка: /help, index (https://exfreedomist.com/stats/) ``` ## Что из этого наблюдается - **Заголовок строки 1** — порядковый номер выдачи, `#`, имя трекера в квадратных скобках, дата раздачи и ссылка-редирект `hashurl.ru` с JWT в пути. Токен в ссылке **имеет срок жизни** (`exp` в payload) — как долгоживущий идентификатор он не годится. - **Строка описания** — самый ценный кусок: локализованное название, оригинальное название через `/`, режиссёр в скобках (тоже через `/`), затем блок в квадратных скобках `[год, страны, жанры, качество, HDR…]` и перечисление дорожек и субтитров. Именно она уходит контекстом в распознавание. - **Разделитель `/`** используется одновременно для пары «локализованное / оригинальное» и для пары «имя режиссёра кириллицей / латиницей». По позиции они не различаются — только по тому, что вторая пара стоит в скобках. - **magnet отдельной строкой**, с `dn=rutracker-topic-` — то есть `dn` здесь **не** содержит названия фильма и как имя раздачи бесполезен. Инфохэш в magnet — v1, uppercase hex; нормализуем в lowercase. - **`.torrent` не приложен** — предлагается командой бота (`/tr_…`), то есть вторым шагом в чужом чате. Поэтому источник, приходящий этим путём, — практически всегда magnet. - **Размер раздачи** в человекочитаемом виде (`34.82 GB`) и отметка «✅ (проверено)». - **Команды бота** (`/g_…`, `/r_…`, `/us_…`, `/mka_…`, `/help`) и ссылка на список файлов — шум для распознавания, но безвредный: попадают в контекст как есть. - Весь текст — **недоверенный вход**: он полностью составляется чужим ботом по данным трекера и уезжает в промпт LLM. См. [../security.md](../security.md). ## Чего не знаем - Насколько формат стабилен: наблюдений два, оба от одного бота, разница между ними — только в наличии строки «сохранённая копия описания раздачи». - Как выглядит сообщение для сериала-сезонника и для аниме — образцов не снимали, а именно на них строится самый сложный случай раскладки. - Что бот присылает при неудачном поиске и при слишком длинном описании (обрезка Telegram — 4096 символов на сообщение).