Migrer une liste de diffusion vers Discourse (mbox, Listserv, Google Groups, etc)

Eh bien, c’est vraiment dommage !

Je pensais que Google n’y avait pas touché depuis février 2015, mais je me trompais.

Il semble qu’il y ait eu une refonte complète en 2020 et un rafraîchissement du logo en 2021.

J’envisage d’utiliser les API de GMAIL et de Discourse pour convertir des fils de discussion par e-mail en publications Discourse. J’ai consulté les API Google et j’ai réussi à récupérer les e-mails, mais j’ai quelques questions à leur sujet.

  1. Les e-mails peuvent être téléchargés au format brut, qui correspond à la valeur encodée en base64 du « message original » de l’e-mail. Est-ce la même chose que le format mbox ou est-ce différent ?
  2. Existe-t-il un exemple concret montrant comment ajouter des publications et des pièces jointes à Discourse via l’API ?

C’est intéressant. Est-il possible d’utiliser l’API Gmail pour accéder aux e-mails des groupes Google, ou possédez-vous simplement un compte Gmail contenant tous les e-mails envoyés au groupe ?

Je vous suggère d’enregistrer tous les messages dans des fichiers individuels au format *.eml. Vous devrez décoder le message avant l’enregistrement si l’intégralité du message (y compris les en-têtes de l’e-mail) est encodée en base64. Ensuite, suivez les étapes décrites sur Migrate a mailing list to Discourse (mbox, Listserv, Google Groups, etc) (en omettant les étapes relatives aux groupes Google). Le script d’importation s’occupera des publications, des pièces jointes et bien d’autres éléments.

1 « J'aime »

Je suis membre du groupe, je peux donc récupérer les courriels à l’aide de mon adresse e-mail. L’intégralité du message, y compris les en-têtes, fera partie de la chaîne encodée.

Je vais essayer votre méthode pour l’importation dans Discourse, au moins pour un fil de discussion.

1 « J'aime »

Eh bien, dans ce cas, vous n’aurez peut-être même pas besoin de l’API Gmail. Connecter un client de messagerie comme Thunderbird à votre compte Gmail et exporter des e-mails individuels ou un fichier mbox devrait suffire…

Maintenant, j’aimerais vraiment savoir comment cela fonctionne. J’avais cru comprendre que Google Groups ne prend pas en charge le protocole NNTP.

1 « J'aime »

Ce n’est pas NNTP, mais une API REST.

3 « J'aime »

La taille de ma boîte aux lettres dépasse 200 Go et, pour récupérer des e-mails spécifiques liés à un groupe, je devrais peut-être télécharger tous ces messages via Thunderbird. De plus, Thunderbird n’affiche pas tous les e-mails des groupes Google ; ils sont tous regroupés dans la boîte de réception. Il ne télécharge également que 200 e-mails à la fois. Je ne sais donc pas combien de temps cela pourrait prendre pour récupérer les e-mails, etc.

Existe-t-il une autre méthode pour récupérer uniquement les données d’un groupe Google et les exporter vers un fichier mbox ?

Bonjour Gerhard Schlager,

Nous tentons de migrer nos groupes Google vers Discourse. Nous avons suivi toutes les étapes mentionnées ci-dessus selon le document, mais cela ne crée que la catégorie dans Discourse sans importer les données. Nous vous serions très reconnaissants de bien vouloir répondre rapidement à ce sujet.

La seule méthode que nous connaissions ne fonctionne plus. Si vous connaissez une méthode quelconque pour obtenir ces données, alors vous devriez l’utiliser. Si vous connaissez un moyen de les récupérer, il serait probablement judicieux de commencer dès maintenant, avant que cette méthode ne disparaisse également.

Si les données se trouvent dans votre boîte de réception, il pourrait être possible d’utiliser l’API Gmail pour les récupérer. Ce sera toutefois délicat, car un développeur aurait besoin d’accéder à une boîte de réception contenant des données de groupes Google pour écrire le code.

Sauf pour un client d’entreprise qui en aurait impérativement besoin, je doute que cdck (alias discourse.org) développe ce code dans un avenir proche. Vous pouvez poser la question dans Marketplace. Personnellement, je ne l’envisagerais pas pour moins de 2000 , et étant donné la frustration que m'a causée le script d'importation de groupes Google par le passé, je demanderais probablement 5000 . Bien sûr, quelqu’un d’autre pourrait avoir de meilleures compétences ou plus de patience.

Une approche qui pourrait fonctionner consiste à utiliser Integromat pour effectuer une conversion, à condition que les applications Google Groups et Discourse soient disponibles. Sinon, vous pouvez utiliser des appels HTTP pour interroger directement leurs API REST.

Integromat est un système d’intégration et de migration de données. Il est très puissant et permet de réaliser de nombreuses tâches avec peu ou pas de code.

J’ai essayé Google Takeout en me désignant comme propriétaire de notre groupe Google Workspace et j’ai pu télécharger les conversations du groupe Google. Je travaille encore à l’importation.

Quelques inconvénients de cette approche.

  1. Nécessité de télécharger à nouveau toutes les données si une mise à jour incrémentielle est nécessaire.
  2. Impossible de télécharger des données de groupe sélectives ; cela téléchargera les données de tous les groupes pour lesquels l’utilisateur a des autorisations de propriétaire ou de gestionnaire.
  3. Nécessité de travailler avec l’administrateur Google Workspace pour activer le takeout car il est désactivé par défaut.
3 « J'aime »

Salut @Anjana_Raghavendra_P - avez-vous réussi à faire une importation simple en utilisant cette approche ?

Merci beaucoup !

Oui, je suis en mesure de télécharger le fichier mbox depuis Takeout et de l’importer en suivant les étapes mentionnées dans le post original.

Plus tard, comme nous utilisons le service PAAS de Discourse, nous avons fourni le fichier à l’équipe technique de Discourse qui a pu importer le contenu sur la plateforme Discourse.

2 « J'aime »

Je suis heureux de l’apprendre - merci !

J’ai rencontré le problème de @sturdy2 lorsque dans settings.yml, j’ai modifié la première ligne data_dir: /shared/import/data, par rapport à sa valeur par défaut.

Message à retenir : ne le modifiez pas car il fait référence au chemin à l’intérieur du conteneur docker d’importation, et non à la machine principale.

J’ai une question sur le redémarrage d’une importation ?

Je ne suis pas développeur, mais j’ai réussi à importer avec succès deux fichiers mbox provenant d’un système appelé Topicbox Group Email. J’ai effectué mon importation de test dans une instance temporaire de Discourse que j’ai configurée sur Digital Ocean. Et j’ai pu importer mes deux fichiers mbox d’exemple dans des catégories existantes que j’avais déjà créées dans Discourse, grâce aux notes sur la définition de la catégorie.custom_fields["import_id"] = "mydir" ci-dessus.

Hourra ! Mais si je veux importer d’autres fichiers mbox, dois-je exécuter toutes les commandes mentionnées dans la FAQ 2.2, qui indique qu’elle « supprimera tout » ?

2 « J'aime »

J’ai réussi à définir mon « import_id » pour deux catégories différentes lors d’un premier test d’importation. Ça a fonctionné ! Mes deux fichiers mbox ont été importés dans les catégories existantes que j’avais spécifiées.

J’ai 18 catégories différentes avec lesquelles je dois finalement faire cela. Je ne connais rien à Ruby. Puis-je créer un fichier qui définit le nom du répertoire pour chacune de mes différentes catégories afin de ne pas avoir à entrer manuellement chaque ligne dans l’interface de ligne de commande Ruby ?

2 « J'aime »

Oui. Cherchez « ruby for each » sur Google. Et créez un tableau avec certaines des catégories.

1 « J'aime »

Non, vous n’avez pas à le faire. L’importateur prend en charge les importations incrémentielles. Il importera uniquement les nouvelles données lors de la prochaine exécution. Veuillez ne pas exécuter les commandes mentionnées dans 2.2, sauf si vous souhaitez recommencer à zéro.

Malheureusement, ce n’est pas possible actuellement. Vous devez attribuer à chaque catégorie l’import_id si vous souhaitez importer dans des catégories existantes.

2 « J'aime »

Merci @gerhard pour tout votre travail incroyable ! Je ne suis pas développeur, mais j’ai pu réaliser une migration depuis un système de listes de diffusion appelé Topicbox. J’ai pu obtenir des fichiers mbox de Topicbox pour les importer dans Discourse. Au cours de mes étapes d’essais et d’erreurs, j’ai tout documenté dans un article de blog. Alors, si cela vous convient ? Je voulais coller un lien vers cet article de blog pour tous les autres utilisateurs de Topicbox qui souhaitent migrer vers Discourse.

4 « J'aime »