Удалять тему входящего письма?

Уважаемый форум,

Я получаю письма из рассылки в Discourse, и темы писем создают новые обсуждения. Это работает отлично.
Теперь мне нужно удалить первую часть темы, так как это просто название рассылки:
«[mailinglist] актуальная тема», и я хочу извлечь только «актуальную тему».

Я пока не смог найти подходящее решение в интернете — есть ли у кого-то идеи?
Спасибо,
Марко

Я думал, что там есть код для удаления этого, но прошло уже 3 года с тех пор, как я делал миграцию mbox.

Заголовок устанавливается в ...mbox/importer.rb:

    def map_first_post(row)
      mapped = map_post(row)
      mapped[:category] = category_id_from_imported_category_id(row['category'])
      mapped[:title] = row['subject'].strip[0...255]
      mapped
    end

Вы можете изменить строку заголовка на что-то вроде:

  mapped[:title] = row['subject'].strip[0...255].gsub(/^[.*?\]/,"")

Я редко с первого раза правильно пишу регулярные выражения, поэтому вам стоит провести немного тестирования (и, возможно, поэкспериментировать на http://rubular.com/).

Спасибо, что обратили на это внимание.
Предполагаю, что регулярное выражение будет выглядеть как /^\[(.*?)\]\s/, чтобы совпадать со всем в начале строки, например "[…] ".

Не могли бы вы подробнее рассказать, где найти файл importer.rb в моей установке (я использовал руководство «установка менее чем за 30 минут» на локальной виртуальной машине Ubuntu)?

Если вы находитесь внутри контейнера

cd /var/discourse
./launcher enter app

из любой директории, где вы запускаете скрипт, попробуйте:

find . -name importer.rb

Я изменил mbox/importer.rb, используя исправленное регулярное выражение, а также попробовал статическую строку замены, но это не привело к изменению входящих тем.

Позвольте мне уточнить:

  • Я подписал адрес электронной почты соответствующей категории Discourse (пользовательский адрес для входящих писем; √ категория зеркалит рассылку) на существующую рассылку
  • Discourse получает эти письма и создаёт соответствующие темы
  • Так как рассылка добавляет префикс к теме письма, я хочу удалить его до того, как Discourse создаст тему

Теперь мои вопросы:

  1. Является ли ./script/import_scripts/mbox/importer.rb правильным импортером?
  2. Правильна ли синтаксически конструкция .gsub("remove this prefix ","")?

Я попробовал:
mapped[:title] = row['subject'].strip[0...255].gsub(/^\[(.*?)\]\s/,"")

Пока что это ничего не изменило…
Спасибо ещё раз.

Импортёр не имеет к этому никакого отношения. Вам понадобится плагин (это должно быть не больше нескольких строк кода) или обработчик для вебхука topic_created, который мог бы использовать API для изменения заголовка темы.

Я полностью ошибся. Я подумал, что у вас есть mbox-файлы, которые вы импортируете. Всё, что я сказал, неверно для вашей ситуации. Извините.