Files
jellybit/docs/research/torrent-bot-message.md
T
av 3bce73fc34 раскладка av-dev повышена с канона 12 до версии 5
- три плагина слились в один `av-dev`: служебные `docs/.docs.json` и
  `tasks/.tasks.json` заменены на `.av-dev.toml` в корне, в гейте переехали пути
  трёх скриптов, вызовы скиллов переименованы по всему репозиторию
- тип задачи `goal` и `ROADMAP.md` упразднены: семь целей закрыты с причинами,
  теги сняты, объявлена стадия `support`
- метка `small`/`medium`/`large` снята из процесса — вместо «Триггеров метки» в
  review.md подраздел «Когда звать глубокое ревью»; следом разобран урожай
  doc-consistency: девять фактов сведены к одному дому
2026-09-02 09:55:28 +03:00

6.0 KiB
Raw Blame History

Формат сообщения торрент-бота

Основной способ добавления загрузки — переслать в jellybit сообщение стороннего торрент-бота (exfreedomist, поиск по rutracker и соседним трекерам). Из сообщения берутся источник (magnet) и контекст для распознавания. Формат чужой, ничем не документирован и может измениться без предупреждения.

Происхождение. Образец снят вручную из личного чата Telegram (сообщение датировано 2026-03-21) и зафиксирован в [BRIEF.md] проекта; второй образец, меньшего размера, живёт константой botMessage в internal/tgbot/parse_test.go и проверяется тестами разборщика. Статистики по вариантам формата нет — наблюдений всего два, и это условие, а не замер.

[BRIEF.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 — порядковый номер выдачи, #<topic-id>, имя трекера в квадратных скобках, дата раздачи и ссылка-редирект hashurl.ru с JWT в пути. Токен в ссылке имеет срок жизни (exp в payload) — как долгоживущий идентификатор он не годится.
  • Строка описания — самый ценный кусок: локализованное название, оригинальное название через /, режиссёр в скобках (тоже через /), затем блок в квадратных скобках [год, страны, жанры, качество, HDR…] и перечисление дорожек и субтитров. Именно она уходит контекстом в распознавание.
  • Разделитель / используется одновременно для пары «локализованное / оригинальное» и для пары «имя режиссёра кириллицей / латиницей». По позиции они не различаются — только по тому, что вторая пара стоит в скобках.
  • magnet отдельной строкой, с dn=rutracker-topic-<id> — то есть dn здесь не содержит названия фильма и как имя раздачи бесполезен. Инфохэш в magnet — v1, uppercase hex; нормализуем в lowercase.
  • .torrent не приложен — предлагается командой бота (/tr_…), то есть вторым шагом в чужом чате. Поэтому источник, приходящий этим путём, — практически всегда magnet.
  • Размер раздачи в человекочитаемом виде (34.82 GB) и отметка « (проверено)».
  • Команды бота (/g_…, /r_…, /us_…, /mka_…, /help) и ссылка на список файлов — шум для распознавания, но безвредный: попадают в контекст как есть.
  • Весь текст — недоверенный вход: он полностью составляется чужим ботом по данным трекера и уезжает в промпт LLM. См. ../security.md.

Чего не знаем

  • Насколько формат стабилен: наблюдений два, оба от одного бота, разница между ними — только в наличии строки «сохранённая копия описания раздачи».
  • Как выглядит сообщение для сериала-сезонника и для аниме — образцов не снимали, а именно на них строится самый сложный случай раскладки.
  • Что бот присылает при неудачном поиске и при слишком длинном описании (лимит Telegram на текст сообщения — 4096 символов UTF-16, по документации Bot API sendMessage; сами обрезанные сообщения мы не наблюдали, поведение бота на обрезке неизвестно).