Files
jellybit/docs/research/torrent-bot-message.md
T
av 42d5b73a04 docs: перевод документации на канон av-dev
- Раскладка docs/ приведена к канону 2: заведены passport/architecture/
  database/security/review и research; docs/specs, drafts, backlog, review/
  и BRIEF.md разобраны и удалены, беклог переехал в docs/tasks (34 задачи,
  6 целей, слаги на английский).
- Нарративы specs удалены как дубли openspec-спек после поимённой сверки;
  остаток заведён задачами (редактор маппинга ревью, крайние случаи
  именования), отказ от сущности title промоутнут в ADR.
- Проектные копии агентов и скиллов ревью/пайплайна удалены в пользу
  плагинов av-dev-pm и av-dev-pipeline; в task gate добавлен шаг canon
  вместо er-schema.
2026-08-04 09:27:26 +03:00

76 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Формат сообщения торрент-бота
Основной способ добавления загрузки — переслать в 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** — порядковый номер выдачи, `#<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](../security.md).
## Чего не знаем
- Насколько формат стабилен: наблюдений два, оба от одного бота, разница между
ними — только в наличии строки «сохранённая копия описания раздачи».
- Как выглядит сообщение для сериала-сезонника и для аниме — образцов не
снимали, а именно на них строится самый сложный случай раскладки.
- Что бот присылает при неудачном поиске и при слишком длинном описании
(обрезка Telegram — 4096 символов на сообщение).