De nombreux groupes Yahoo sont touchés par la décision de Yahoo de supprimer le contenu téléchargé et cherchent des fournisseurs alternatifs. L’option la plus évidente est groups.io, qui offre une équivalence fonctionnelle et migrera automatiquement tout le contenu du groupe, mais (1) cela coûte 220 $ pour la première année afin de réaliser la migration (après cela, c’est gratuit si les besoins de stockage sont < 1 Go), et (2) cela utilise toujours le même format centré sur les e-mails de Yahoo Groups. J’ai vu mentionné dans un autre sujet (Yahoo Groups to Discourse migration?) qu’il existe un script de migration, mais d’après ce que je vois (admettons-le, pas grand-chose pour l’instant), il ne migre que les messages.
Puisque le changement chez Yahoo qui poussera les groupes à se déplacer est la perte du stockage de fichiers et de photos, cela soulève deux questions :
Existe-t-il un moyen automatisé de déplacer le contenu téléchargé d’un groupe Yahoo vers une instance Discourse ?
Quelles sont les options dans Discourse pour rendre ce contenu disponible/visible aux autres utilisateurs ? La seule que je vois serait de placer le contenu téléchargé par un utilisateur dans un ou plusieurs sujets créés par cet utilisateur, probablement dans des catégories distinctes. Pour les photos, ce serait assez simple ; pour les autres documents téléchargés vers le groupe (principalement des PDF, certains fichiers .doc et .xls), il semble que cela nécessiterait quelques modifications de configuration, mais rien de trop grave. Mais existe-t-il une autre option ?
Intéressant… Je ne savais pas que Yahoo Groups allait supprimer le contenu téléchargé. J’ai un ancien groupe Yahoo que je gère encore pour mon quartier, et l’idée de le migrer vers une instance Discourse me trotte dans la tête depuis un moment… peut-être est-il temps de le faire.
À mon avis, la méthode la plus simple pour migrer serait d’exporter la liste des abonnés en CSV, puis d’utiliser ce fichier pour créer votre base d’utilisateurs dans Discourse. Cela devrait être assez simple.
Pour le contenu, avez-vous un historique complet des messages envoyés à la liste dans votre messagerie ? Si oui, vous pourriez utiliser une application comme Thunderbird pour télécharger tous les messages et les enregistrer au format MBOX. Une fois cela fait, il existe des scripts pour les importer. Je pense que ce guide pourrait vous aider : Migrate a mailing list to Discourse (mbox, Listserv, Google Groups, etc)
Je ne suis pas sûr de ce que vous décrivez comme « contenu téléchargé » — je n’ai pas utilisé Yahoo Groups de cette manière moi-même. Je ne connais pas vos options pour récupérer ces fichiers chez Yahoo et les préparer pour Discourse. Cela pourrait être un processus manuel… et peut-être une bonne occasion de vous organiser et de vous débarrasser de ce qui n’est plus nécessaire.
Mais oui, Discourse est axé sur les discussions, donc tout le contenu est organisé en sujets. Il est possible de configurer des sujets comme des wikis afin qu’ils puissent être maintenus par un groupe, y compris l’ajout ou la suppression de pièces jointes. Il existe également des messages privés qui pourraient être utilisés pour discuter avec vous-même ou avec une sélection spécifique d’autres personnes, où l’on pourrait, je suppose, conserver certains contenus. Il pourrait être plus simple pour vous d’envisager un autre outil avec SSO pour le partage de fichiers. Dans ma communauté, nous utilisons WordPress avec un plugin qui gère le SSO, ce qui fonctionne de manière très fluide. Si vous parlez d’un grand nombre de fichiers, vous pourriez configurer une instance Nextcloud.
Amusez-vous bien !
Mise à jour : wow… il semble vraiment temps de partir. Ils prennent des mesures drastiques pour limiter l’utilité des groupes Yahoo, et ce très bientôt. Plus de nouveau contenu à partir du 28 octobre, dans deux jours ! Et suppression du contenu le 14 décembre.
Yahoo Groups offrait (et offre encore partiellement) un espace de stockage pour les photos (100 Go) et d’autres fichiers (2 Go) pour le groupe. Les groupes auxquels je participe utilisent cet espace pour des photos des membres et des sujets d’intérêt pour le groupe, ainsi que pour divers autres fichiers. Tout ce qui serait envoyé de manière privée entre les membres d’un groupe Yahoo passerait probablement par un e-mail, et Yahoo n’en garderait aucune trace ; je ne pense pas que la migration de ces éléments soit même possible, encore moins prioritaire. Cependant, de nombreuses informations sont stockées dans de nombreux groupes, et ils souhaiteraient les préserver lors d’une migration.
C’est possible. Encore une fois, il existe un seul site (à ma connaissance) qui semble être un remplacement clé en main, mais il conserve l’ancien format des groupes Yahoo avec seulement de légères modifications. Je pense que, si un groupe doit migrer de toute façon, il pourrait être préférable de passer à quelque chose de plus moderne. Discourse reste très compatible avec les e-mails (ce que beaucoup d’autres packages de forum ne font pas), ce qui signifie que les utilisateurs plus traditionnels comme moi, habitués à recevoir les e-mails et à y répondre par e-mail, pourront continuer à le faire. Et économiser quelques euros serait également un plus.
Voici donc les développements récents. Cet outil :
semble fonctionner très bien pour télécharger en masse le contenu d’un groupe : il récupère tous les messages, fichiers, pièces jointes, etc. Les messages sont téléchargés sous forme de deux fichiers .json chacun, l’un « brut » et l’autre en HTML. Le premier ressemble à ceci :
{
"userId": 185744666,
"authorName": "vhsproducts@aol.com",
"from": "vhsproducts@...",
"profile": "vhsproducts",
"replyTo": "LIST",
"senderId": "fc-T6L4xNaFRDleu_7gutRzgA_WWujKXanij68LOf7iz0WXh-BolDsmiqlo19adwRPTjwe0FpCYycg",
"spamInfo": {
"isSpam": false,
"reason": "0"
},
"subject": "Re: [MicroTrak] Mint-Trak300 completed",
"postDate": "1181013131",
"msgId": 4,
"canDelete": false,
"contentTrasformed": false,
"systemMessage": false,
"headers": {
"messageIdInHeader": "PGM3ZC5lNWZlOTFjLjMzOTYyZThiQGFvbC5jb20+"
},
"prevInTopic": 3,
"nextInTopic": 6,
"prevInTime": 3,
"nextInTime": 5,
"topicId": 3,
"numMessagesInTopic": 4,
"msgSnippet": "Outstanding work! I see you have the first gen of the Micro-Trak ( although we still sell them for people with TT3 SMT s) How long will a 9 volt run your GPS? ",
"rawEmail": "Return-Path: <VHSProducts@...>\r\nX-Sender: VHSProducts@...\r\nX-Apparently-To: MicroTrak@yahoogroups.com\r\nReceived: (qmail 18487 invoked from network); 5 Jun 2007 03:13:19 -0000\r\nReceived: from unknown (66.218.67.36)\n by m50.grp.scd.yahoo.com with QMQP; 5 Jun 2007 03:13:19 -0000\r\nReceived: from unknown (HELO imo-m23.mx.aol.com) (64.12.137.4)\n by mta10.grp.scd.yahoo.com with SMTP; 5 Jun 2007 03:13:19 -0000\r\nReceived: from VHSProducts@...\n\tby imo-m23.mx.aol.com (mail_out_v38_r9.2.) id r.c7d.e5fe91c (29679)\n\t for <MicroTrak@yahoogroups.com>; Mon, 4 Jun 2007 23:12:11 -0400 (EDT)\r\nMessage-ID: <c7d.e5fe91c.33962e8b@...>\r\nDate: Mon, 4 Jun 2007 23:12:11 EDT\r\nTo: MicroTrak@yahoogroups.com\r\nMIME-Version: 1.0\r\nContent-Type: multipart/alternative; boundary="-----------------------------1181013131"\r\nX-Mailer: 9.0 Security Edition for Windows sub 5365\r\n(snip)"
}
… tandis que le second ressemble à ceci :
{
"userId": 185744666,
"authorName": "vhsproducts@aol.com",
"from": "vhsproducts@...",
"profile": "vhsproducts",
"replyTo": "LIST",
"senderId": "oChpSVZSELyeHvFRyDX_nG5dfpdVZTLBKFMDvOg33fSsrDk5l-zpPohl42rhz6OhM9tFfSjAxxGsRg",
"spamInfo": {
"isSpam": false,
"reason": "0"
},
"subject": "Re: [MicroTrak] Mint-Trak300 completed",
"postDate": "1181013131",
"msgId": 4,
"canDelete": false,
"contentTrasformed": false,
"systemMessage": false,
"headers": {
"messageIdInHeader": "PGM3ZC5lNWZlOTFjLjMzOTYyZThiQGFvbC5jb20+"
},
"prevInTopic": 3,
"nextInTopic": 6,
"prevInTime": 3,
"nextInTime": 5,
"topicId": 3,
"numMessagesInTopic": 4,
"msgSnippet": "Outstanding work! I see you have the first gen of the Micro-Trak ( although we still sell them for people with TT3 SMT s) How long will a 9 volt run your GPS? ",
"messageBody": "<div id=\"ygrps-yiv-810547383\">\n<html><head>\n \n</head> \n\n<font id=\"ygrps-yiv-810547383role_document\"\n face=\"Arial\" color=\"#000000\" size=\"2\">\n<div>Outstanding work! I see you have the first gen of the Micro-Trak ( although \nwe still sell them for people with TT3 SMT's) How long will a 9 volt run your \nGPS?</div>\n(snip)",
"specialLinks": []
}
Selon le groupe, il peut y avoir des dizaines, voire des centaines de milliers de ces fichiers. Yahoo, étant Yahoo, masque les adresses e-mail pour les « utilisateurs normaux » : les propriétaires de groupe peuvent les voir, et peut-être les modérateurs, mais pas les autres. Maintenant, il faut voir s’il existe une méthode relativement simple pour importer en masse ces fichiers dans une instance Discourse, ou s’il serait préférable d’utiliser les outils mentionnés ci-dessus.
Les fichiers et les photos sont également téléchargés par cet outil, ainsi que les sondages, les calendriers et autres éléments qui ne m’intéressent pas vraiment, mais qui seront certainement utiles à d’autres.
Un autre point : une lecture plus attentive du message de Yahoo indique qu’ils ne se débarrassent pas seulement des fichiers et des photos, mais qu’ils suppriment également les archives de messages. Cela risque vraiment de les rendre inutiles pour toute finalité.
Nous avons besoin de plus de sites web indépendants et de moins de personnes dépendant des grandes plateformes monopolistiques.
Je tiens à préciser que j’ai migré ma communauté locale d’un groupe Yahoo vers Discourse il y a plusieurs années, et nous n’avons jamais regretté ce choix. Les touches personnelles que vous pouvez ajouter à votre ressource de communication partagée valent à elles seules l’effort, mais les fonctionnalités supplémentaires sont la cerise sur le gâteau.
Malheureusement, je ne peux pas vous offrir d’expérience utile en matière de migration, car nous avons simplement tout recommencé à zéro, à l’exception de la liste de diffusion par e-mail. Pourquoi ne pas simplement laisser l’ancien site du groupe Yahoo en ligne et fournir un lien ? Combien de pièces jointes avez-vous vraiment besoin de conserver ? Ciblez les plus importantes.
Ce n’est pas ma décision directe, mais j’ai des inclinations dans ce sens. Et pour le groupe qui m’inquiète le plus, je ne m’attends pas à ce que les fichiers et les photos posent un problème majeur : je les ai tous téléchargés maintenant, et il y en a assez peu pour que les importer manuellement dans les sujets ne soit pas un gros problème.
Oui, car nous constatons actuellement l’un des risques liés à cela.
Parce que dans six semaines, toutes les données disparaîtront de là-bas.
Je peux écrire un importateur pour lire ces fichiers JSON, mais je ne peux pas rivaliser avec 200 $. D’habitude, je facture 10 fois ce montant pour écrire un importateur et importer un forum de taille modérée (quelques centaines de milliers de messages).
Je travaille sur le processus d’importation des messages, en suivant les instructions disponibles sur Migrate from another forum to Discourse. À ma connaissance, le processus devrait se dérouler ainsi :
Sur ce système, en tant que l’utilisateur non privilégié qui exécute Discourse, faire un git clone du script yahoo-group-export
En tant que le même utilisateur, exécuter gem install mechanize puis gem install mongo. Ensuite, modifier .config.yaml pour y ajouter les identifiants Yahoo et le nom du groupe, puis lancer ruby bin/yg-export.rb.
Prendre une tasse (ou deux) de votre boisson préférée.
Une fois que yg-export a terminé, dans le répertoire Discourse, examiner script/import_scripts/yahoogroup.rb. Le modifier pour qu’il pointe vers le bon MONGODB_HOST (localhost).
Dans le répertoire discourse, exécuter bundle exec ruby script/import_scripts/yahoogroup.rb
Vérifier que l’importation s’est correctement déroulée
Sauvegarder et restaurer sur un serveur en production
Les étapes 2 à 4 sont déduites. Mais cela ressemble-t-il aux bonnes étapes à suivre ? Pensant que c’était le cas, j’ai poursuivi. Tout s’est bien passé jusqu’à l’étape 4 : yg-export.rb a tourné pendant environ une heure, signalant la SUCCÈS pour tout, et a sauvegardé environ 38 000 messages. La base de données syncro est présente avec environ 85 Mo de données. À ce stade, j’ai pris une capture d’écran de la machine virtuelle.
Cependant, je rencontre des problèmes avec le script d’importation. Lorsque j’exécute bundle exec ruby script/import_scripts/yahoogroup.rb, j’obtiens ceci :
dan@ubuntu:~/discourse$ bundle exec ruby script/import_scripts/yahoogroup.rb
Traceback (most recent call last):
script/import_scripts/yahoogroup.rb: Bootsnap::LoadPathCache::FallbackScan
7: from script/import_scripts/yahoogroup.rb:4:in `<main>'
6: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/kernel.rb:23:in `require'
5: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:26:in `require'
4: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:40:in `rescue in require'
3: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
2: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:89:in `register'
1: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require': cannot load such file -- mongo (LoadError)
Étrange, je pensais avoir déjà installé le gem mongo. Bon, je vais le réinstaller :
dan@ubuntu:~/discourse$ gem install mongo
Successfully installed mongo-2.10.2
Parsing documentation for mongo-2.10.2
Done installing documentation for mongo after 4 seconds
1 gem installed
Je relance le script d’importation, même résultat. Est-ce que cela a de l’importance si je l’installe au niveau système ?
dan@ubuntu:~/discourse$ sudo apt install ruby-mongo
[sudo] password for dan:
Reading package lists... Done
Building dependency tree
Reading state information... Done
ruby-mongo is already the newest version (2.5.1-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Vous devez ajouter les gems au fichier Gemfile et exécuter bundle install, sinon l’exécution de bundle exec ruby script/import_scripts/yahoogroup.rb ne trouvera pas les gems.
C’était l’élément qui me manquait ; maintenant l’importation se déroule parfaitement. Merci !
Édité : OK, le processus d’importation a duré 75 minutes et les messages sont désormais présents. Excellent. Il a également créé des utilisateurs, ce que je m’interrogeais. Cependant, je constate quelques problèmes avec les utilisateurs :
Il semble que tous les noms d’utilisateurs Yahoo aient été importés correctement (j’en reconnais beaucoup grâce à mon adhésion à la liste), mais qu’ils soient associés aux mauvais messages. Cela s’est produit de manière cohérente : tous les messages que j’ai publiés apparaissent maintenant comme ayant été publiés par le même autre utilisateur. Néanmoins, c’est une erreur significative qui serait très pénible à corriger manuellement.
Tous les utilisateurs importés sont suspendus pour les 200 prochaines années.
Je soupçonne que ces deux problèmes découlent de l’absence d’adresses e-mail valides dans les données téléchargées depuis Yahoo, car je ne suis pas administrateur du groupe. C’est explicitement indiqué comme la cause du second problème, mais je ne sais pas si cela pourrait également provoquer le premier. Des idées ?
Si c’est bien le problème, cela me donne une piste à suivre, mais cela soulève aussi un problème potentiel : je sais qu’il reste deux modérateurs vivants pour le groupe, mais le propriétaire est décédé au cours de l’année écoulée. J’espère que quelqu’un a accès à ces informations…
Ensuite, le problème était celui des utilisateurs en double ou erronés.
Avec cette extension : Merge Users Plugin
Vous pouvez facilement fusionner les utilisateurs Yahoo avec vos utilisateurs Discourse.
Et maintenant, nous n’avons plus que le problème des pièces jointes provenant de Yahoo.
Cela ne fait pas tout à fait ce dont j’ai besoin — les seuls utilisateurs présents sur cette instance, à part l’administrateur, sont ceux importés depuis Yahoo. Le problème est que le mauvais nom d’utilisateur est associé aux mauvais messages — mes messages sont connectés (de manière cohérente, à ma connaissance) au nom d’utilisateur de quelqu’un d’autre, et les messages de quelqu’un d’autre sont connectés au mien.
On m’a maintenant donné un accès modérateur à ce groupe, ce qui suffit pour télécharger les messages avec les adresses e-mail réelles associées. Je vais reconstruire (les machines virtuelles sont parfaites pour cela), refaire l’importation et voir si cela résout le problème.
Salut, d’accord, ce n’est pas la même chose que ce que j’ai constaté. Dans ma communauté, aucune des publications importées n’était rattachée à l’un des membres existants de la communauté.
Si j’ai importé la catégorie comme décrit dans le sujet lié, alors je n’avais que des doublons d’utilisateurs (ou de nouveaux utilisateurs) dans la liste des utilisateurs.
L’importateur a attribué les publications au mauvais utilisateur, mais il l’a fait correctement. Je veux dire, si les publications que j’ai écrites moi-même sur Yahoo ! sont attribuées à « Hans », alors toutes mes publications ont été attribuées à « Hans ».
J’ai l’ID utilisateur 1 sur mon forum communautaire, mais ce n’est pas le même nom que celui du forum Discourse pour le développement que j’ai configuré. Donc mon compte n’a pas été écrasé, mais il y avait un autre compte avec le même nom. Cependant, ce compte est lié aux mauvaises publications.
Maintenant, j’utilise le plugin lié pour fusionner tous les utilisateurs séparément vers la bonne personne sur mon forum. Cela ne prend pas beaucoup de temps, mais il est difficile de déterminer quelle publication appartient à quel utilisateur.
Nous sommes probablement dans des situations différentes — dans mon cas, il n’y a pas de « communauté existante ». En fait, tout est importé depuis le groupe Y.
OK, j’ai téléchargé les messages de groupe incluant les adresses e-mail complètes. Après quelques problèmes avec l’environnement de développement, j’ai pu reprendre le travail sur l’importation. Je remarque encore quelques problèmes :
Le problème des faux noms d’utilisateurs associés aux mauvais messages persiste.
Probablement à cause (ou en tant que cause) de ce qui précède, la plupart des utilisateurs importés sont jugés avoir des adresses e-mail invalides. Dans la base de données Mongo générée par le script yahoo-export, le champ From (à partir duquel le script d’importation semble tenter de lire les adresses e-mail) apparaît pour la plupart des utilisateurs comme suit :
Prénom Nom <user@domain.com>
…ce que Discourse rejette comme une adresse e-mail invalide. Par conséquent, la plupart des utilisateurs se voient attribuer une adresse e-mail du type 5dc3e1b4f4d821bd7de3ce456eaf26d5@email.invalid — les exceptions semblent être les utilisateurs qui ont envoyé des e-mails sans leurs noms complets.
Les messages importés contiennent plusieurs entités HTML, notamment pour les guillemets et les signes supérieur à et inférieur à.
Beaucoup, mais certainement pas tous, des messages importés comportent un nom de groupe dans l’objet : Re: [SpareOom] un sujet. Ce serait bien de les supprimer.
Pour les trois derniers points, je me demande si un simple remplacement global dans la base de données suffirait — et si oui, comment procéder, sachant que je n’ai jamais touché à MongoDB auparavant.
Une autre question concerne l’importation des messages dans une catégorie désignée. Les commentaires en haut de yahoogroup.rb indiquent que vous pouvez définir export CATEGORY_ID=<CATEGORY_ID> avant d’exécuter le script pour cela, mais ne précisent pas à quoi correspond <CATEGORY_ID>. J’ai essayé le nom régulier de la catégorie, ainsi que le « slug de catégorie » (les deux sont identiques sauf pour la casse), mais dans les deux cas, le script d’importation échoue avec :
1: from /home/dan/discourse/lib/topic_creator.rb:36:in `create'
/home/dan/discourse/lib/topic_creator.rb:115:in `setup_topic_params': category (Discourse::InvalidParameters)
Cela ressemble beaucoup à ma première importation mbox. Cela m’a pris quelques mois.
Oui, vous pouvez probablement corriger certaines choses avec quelques remplacements.
Si vous ajoutez .json à la fin de l’URL d’une catégorie, vous pouvez trouver l’identifiant de la catégorie. C’est un entier.
Vous devrez examiner ce que le créateur d’utilisateur utilise comme identifiant et ce qui est utilisé par la fonction de publication pour trouver les utilisateurs. Ou peut-être qu’ils ne correspondent tout simplement pas.
En examinant yahoogroup.rb, il est clair que le script s’attend à ce que le champ From du message soit une adresse e-mail brute. Comme la plupart des utilisateurs configurent leurs clients de messagerie pour envoyer également un nom (par exemple,
Fred Flintstone <fred@flintstone.com>
), c’est le problème n°1. Une recherche rapide sur Google suggère que cela peut être résolu en utilisant la gemme Mail, ce qui modifierait la ligne du script d’importation pour qu’elle soit :
…ce qui extrairait uniquement l’adresse e-mail. Mais comme mentionné ci-dessus, les accolades angulaires sont stockées sous forme d’entités HTML, ce qui fait échouer cette méthode. D’autres recherches sur Google indiquent qu’il existe une gemme HTMLEntities qui permettrait de résoudre ce problème, ce qui m’a conduit à essayer ceci :
Mais cela échoue en raison de l’absence de la méthode downcase.
Édition : J’ai essayé d’éviter cela en empruntant une autre voie ; j’ai vu de nombreuses suggestions concernant Nokogiri. Mais aussi utile qu’il soit, les suggestions que j’ai trouvées ne décodaient pas les entités d’accolades angulaires, ce qui était (et reste) mon besoin le plus immédiat. Je retourne donc à HTMLEntities. J’ai ajouté require 'mail' et require 'htmlentities' en haut du script d’importation Yahoo, et j’ai modifié la ligne 75 (qui était la ligne 73 avant que j’ajoute les require) pour qu’elle soit comme ci-dessus. Je reçois toujours une erreur, mais ce que j’avais manqué précédemment, c’est qu’il analyse et importe effectivement un utilisateur avant de planter :
dan@ubuntu:~/discourse$ bundle exec ruby script/import_scripts/yahoogroup.rb
Chargement des groupes existants...
Chargement des utilisateurs existants...
Chargement des catégories existantes...
Chargement des publications existantes...
Chargement des sujets existants...
(snip)
connecté à la base de données....
Importation depuis Mongodb....
Importation des utilisateurs
Utilisateur créé : user@host.tld
Traceback (most recent call last):
8: from script/import_scripts/yahoogroup.rb:163:in `<main>'
7: from /home/dan/discourse/script/import_scripts/base.rb:47:in `perform'
6: from script/import_scripts/yahoogroup.rb:39:in `execute'
5: from script/import_scripts/yahoogroup.rb:58:in `import_users'
4: from /home/dan/discourse/script/import_scripts/base.rb:247:in `create_users'
3: from /home/dan/discourse/script/import_scripts/base.rb:247:in `each'
2: from /home/dan/discourse/script/import_scripts/base.rb:259:in `block in create_users'
1: from /home/dan/discourse/script/import_scripts/base.rb:290:in `create_user'
/home/dan/discourse/script/import_scripts/base.rb:385:in `find_existing_user': undefined method `downcase' for #<Mail::ToField:0x00005575597e63b8> (NoMethodError)
(l’adresse e-mail dans cette sortie est masquée, mais elle se trouve dans la base de données source avec le nom complet et les entités pour les accolades angulaires – il semble donc que mes modifications au script aient exactement l’effet désiré). Cela me laisse un peu perplexe, car j’avais compris que downcase devrait être disponible par défaut.
Édition 2 : Eh bien, il analyse l’utilisateur, mais n’importe pas réellement l’utilisateur dans l’instance Discourse.
La question des e-mails me laisse toujours perplexe, mais j’ai décidé de laisser cela de côté pour le moment et de voir si je pouvais appliquer HTMLEntities au titre du sujet et au texte du message. Dans le script yahoogroup.rb, j’ai modifié la ligne 110 pour qu’elle indique :
(les deux numéros de ligne sont +2 par rapport au script original, en raison de l’ajout des deux lignes requires que j’ai mentionnées ci-dessus). Cela a fonctionné parfaitement. La sortie du terminal n’a pas changé (cela aurait été sur la ligne 105, que je n’ai remarquée qu’une fois le processus lancé), mais les titres des sujets et le texte dans l’instance importée sont nets et propres.
Cette méthode semble donc fonctionner parfaitement pour nettoyer les titres des sujets et les corps des messages, mais elle ne fonctionne pas pour les adresses e-mail. Avez-vous des idées sur ce que je devrais chercher de ce côté-là ? Je suis un peu coincé là-dessus.
Il pourrait être plus simple d’utiliser Migrate a mailing list to Discourse (mbox, Listserv, Google Groups, etc) pour importer des données depuis Yahoo Groups. Soit en utilisant des fichiers mbox, soit en convertissant les fichiers JSON que vous avez mentionnés en fichiers MSG individuels contenant le texte brut des e-mails.
Le script d’importation mbox gère à la fois les fichiers mbox et les e-mails stockés dans des fichiers individuels, et il a peut-être déjà résolu tous les problèmes auxquels vous êtes actuellement confronté.