Migração do FluxBB preservando links de entrada

Hello everyone,

I’m planning a migration of an existing community (macscripter.net - Mac OS Automation discussions) hosted with FluxBB to Discourse. This article looks promising in terms of migrating the data. Its going to be a big job as I have over 30,000 users, and 120K posts but it seems doable.

However, I want to preserve all the incoming links. macscripter.net is a significant reference for the Apple automation community. We’ve got almost 20 years of posts with a lot of references to the site appearing on other sites and in mailing list archives which I don’t want to break.

I’m looking for a way to translating incoming FluxBB post links to corresponding Discourse posts? I don’t see any way to accomplish this with stock Discourse so I’m presuming I’ll need to create some sort of plugin that responds to FluxBB’s /viewtopic.php?id=##### links and redirects to the appropriate Discourse link. If anyone else has experience solving this kind of problem, I would love to hear how you approached it.

I appreciate any suggestions.

Cheers
-Mark

1 curtida

Most import scripts create permalinks that handle the redirects. I don’t know offhand if they one does. If not, you can look at one of the others for example code.

2 curtidas

Tenho a mesma dúvida e estou um pouco confuso com a resposta. Também estou querendo fazer uma importação considerável do FluxBB.

Vejo que existe um recurso do Discourse chamado “Permalinks” (How to make a redirect URL in a Discourse install? - #4 by cpradio), então estamos dizendo que, ao criar essas coisas, o Discourse poderia pegar um URL no estilo FluxBB como “/viewtopic.php?id=((id antigo do tópico))” e redirecionar para “/t/((novo slug do tópico))/((novo id do tópico))”. Talvez o mesmo para posts individuais em um tópico? O mesmo para URLs de perfis de usuário. (Então precisaremos de muitos permalinks). Vejo a tabela do banco de dados para Permalinks.

Isso parece uma solução interessante, mas o importador do FluxBB não está criando nenhum permalink. Não consigo ver nenhum código para isso. Na verdade, não consigo ver nenhum código em nenhum dos scripts de importação para fazer isso (Nenhuma menção ao modelo ActiveRecord “Permalink”).

Ficarei feliz em trabalhar na modificação do importador do FluxBB para fazer isso, mas existe um exemplo em um dos outros importadores?

A única coisa que vejo no código nesse sentido é a inicialização do “LookupContainer” e o armazenamento de todos os IDs antigos e seus IDs novos correspondentes. Isso pode ser usado para criar muitos objetos Permalink?

Certo.

Verifique o importador do vbulletin (mas também o answerhub, vanilla, mylittleforum, bbpress, drupal para alguns outros - talvez você tenha usado grep com sensibilidade a maiúsculas e minúsculas ou algo assim), que o faz na função import_topics (ignore a função de arquivo permalink). Você vai querer código que adicione o permalink e uma permalink_normalization que mapeie o URL do fluxbb para qualquer permalink que você criou.

Gah! Você tem razão. A pesquisa do meu IDE estava me pregando peças. Na verdade, há muitos exemplos de objetos “Permalink” sendo criados. Então, talvez eu adicione isso à importação do FluxBB.

Estou curioso para saber como foi sua grande importação, @alldritt. Bem, parece que o macscripter.net ainda está no FluxBB, então não foi muito bem? :slight_smile: Se você notou que o importador do FluxBB não está convertendo muito bem o bbcode, tenho trabalhado em várias correções para isso: Pull request em andamento.

Há uma sobreposição interessante (desajeitada) entre essas discussões, porque o FluxBB suporta bbcode do tipo [post=123] para vincular a outro post por ID (referenciando IDs de posts antigos no sistema FluxBB de origem). Isso facilitará o tratamento disso se tivermos uma solução redirecionando esses IDs.

1 curtida

Não vai. Permalinks funcionam apenas para links de entrada, não para os internos. Você precisará escrever algo para reescrever esses links internos como citações do Discourse. Existem exemplos disso também.

Obrigado por reavivar este tópico!

Tive algumas tentativas de conversão e desisti. Com o tempo, à medida que mudei para um Mac M1, perdi meu ambiente de teste Discourse e nunca cheguei a recriá-lo. Espero retornar a este projeto assim que tiver algum tempo livre. Lidar com o redirecionamento de links existentes foi uma parte com a qual eu estava lutando. Eu não tinha chegado a verificar se todo o BBCode foi traduzido corretamente. Tenho mais de 130 mil posts para converter, o que é assustador de verificar.

Espero que isso seja útil para você então. Ontem estive trabalhando para adicionar a funcionalidade create_permlinks ao importador do FluxBB.

No momento, isso está no meu PR de WIP. Veja o commit “Add Permalink creation logic to FluxBB importer” no final desta lista. Espero que tudo isso seja mesclado em algum momento, possivelmente em uma ordem diferente (atualmente estou esperando que alguém revise este PR básico como ponto de partida).

Então, isso cria redirecionamentos para quatro tipos diferentes de URLs do FluxBB.

  • profile.php?id=<user id>
  • viewtopic.php?pid=<post id>
  • viewtopic.php?id=<topic id>
  • viewforum.php?id=<forum id>

Acho que estes quatro cobrem tudo o que as pessoas vão querer preservar como links funcionais. O que você acha?


De volta ao tópico dos links internos especiais do FluxBB

Eu não ia tentar mantê-los como links internos no novo discourse. Solução preguiçosa: eles vão linkar para as URLs antigas do fórum FluxBB (como URLs completas, então links externos) que, graças a esses Permalinks, redirecionarão o usuário de volta ao lugar certo no novo discourse.

Eu acho que sua solução preguiçosa pode funcionar. Você pode encontrar exemplos de reescrita de links internos se quiser, mas preguiçoso pode ser bom.

1 curtida