Самый простой способ экспортировать одну тему?

Здравствуйте,

Мы пытаемся экспортировать одну тему из одного экземпляра Discourse либо в локальное хранилище, либо, что предпочтительнее, в другой экземпляр. Администраторы исходного экземпляра поддерживают этот перенос, но не хотят тратить много времени на его организацию, поэтому мы ищем любые доступные решения, которые были бы относительно быстрыми и простыми.

На данный момент мы рассматриваем два варианта:

Хотя первая ссылка, безусловно, является наиболее прямым способом достижения нашей цели, мы не уверены, что наши администраторы согласятся на то, чтобы им пришлось выполнить значительный объем работы для поддержки переноса. Поэтому мы также рассматриваем Discourse Downloader от @pfaffman.

Однако, если один из этих вариантов явно лучше подходит с учётом наших потребностей и ограничений, мы будем очень благодарны за мнение тех, кто уже использовал один из этих методов или лучше знаком с процессом. Кроме того, если есть какие-то другие варианты, которые мы не нашли и которые могли бы быть лучше, мы с радостью узнаем о них!

Спасибо за ваше время!

Импорт/экспорт тем/категорий через командную строку сводится к нескольким командам и максимум пяти минутам работы.

Вы учитывали юридические последствия копирования пользователей на другой экземпляр?

Все пользователи согласны на переезд, поэтому я не ожидаю, что это вызовет проблемы.

Если вы думаете иначе, пожалуйста, дайте мне знать!

Вы действительно имеете в виду одну тему? Почему бы не скопировать и вставить через веб-интерфейс?

Редактирование: о, да. Тема содержит много сообщений. Извините. :frowning_face:

В любом случае, теперь, когда я понял, думаю, что лучше всего использовать задачу Rake, если вы сможете убедить своих администраторов выполнить её. Мне кажется, это не так уж сложно.

Возможные причины:

  • Вы хотите сохранить пользователей, загрузку, цитаты, лайки и прочее
  • В теме тысячи сообщений

Ладно, так

Администраторы отказали в обоих решениях, потому что это потребовало бы слишком много работы

Это их слова, не мои, я тоже не в восторге

Не подскажете, как получить .json-файл не для одного сообщения, а для всей темы, не имея прав администратора?

Редактирование: Возможно, это лучше вынести в отдельную тему, так как, видимо, она больше не соответствует заголовку. Всё же это похоже на спам, поэтому я этого не сделаю.

Не думаю, что вам нужно запускать решение от @pfaffman на сервере. Насколько я знаю, админы для этого не нужны.

Для этого требуется API-ключ.

Это тема публичного форума? В таком случае это должно работать без API-ключа.

Вау! Похоже, я написал его так, что для публичных тем ключ API не требуется.

Или, может быть, всё же требуется?

Я исправил ошибку, так что вы можете выполнить git pull, и теперь всё должно работать с пустым файлом apikeys. (Кажется, вам всё же нужно создать такой пустой файл). Он будет загружать тему в текстовый файл.

Однако я писал его для офлайн-анализа обсуждений, поэтому не уверен, насколько он будет полезен без доработки. Думаю, он позволит вам загружать данные локально, но сам по себе мало поможет, если вы захотите перенести их на другой форум Discourse.

Если вы хотите перенести тему на другой форум Discourse, и это публичная тема, вам нужно будет, например, доработать этот инструмент до чего-то другого. Если у вас есть бюджет, вы можете связаться со мной или написать в канале Marketplace.

Честно говоря, если бы я собирался потратить столько времени, я бы, наверное, просто написал скрипт, который проходит по теме и вручную скачивает все отдельные .json файлы, ха-ха.

К сожалению, я не могу выделить ресурсы ни на один из этих вариантов, так что запуск загрузчика, возможно, остаётся лучшим из доступных мне решений.

Спасибо!

Этот код — хорошая отправная точка. Он загружает JSON-файлы, а затем преобразует их в другие форматы.

Звучит полезно — спасибо!

Спасибо за код на Ruby, @pfaffman!

Для тех, кто предпочитает Python, отличная отправная точка по использованию API и JSON-файлов находится здесь: mcmcclur/ArchiveDiscourse: Code for archiving my Discourse sites.