Youtube embeds missing

Bonjour @Iceman,

Vous n’avez pas tort. Vous essayez simplement de résoudre un problème, peut-être frustré que vos intégrations YouTube ne fonctionnent pas…

Lorsque vous exécutez ceci :

# time rake posts:rebake_match['youtube',string,100]
           116 / 76598 (0.2%)- 

Comme le délai est fixé à 100, un seul message sera recuit toutes les 100 secondes. Vous avez près de 77 000 messages à recuire (en utilisant ce modèle), ce qui prendrait environ 90 jours. Quand j’ai utilisé 100, c’était juste un exemple, pas une recommandation, désolé si cela vous a induit en erreur :slight_smile:

Même si vous le changez pour un délai de 10 secondes, votre recuit prendra environ 9 jours.

À quel rythme souhaitez-vous vraiment recuire vos « gâteaux YouTube » ?

Vous pouvez facilement exécuter « Reconstruire le HTML » en tant qu’administrateur en cliquant sur le bouton situé sous chaque message.

Merci @neounix

J’ai essayé sur un seul message avec un lien YT :

root@cont-web-only:/var/www/discourse# rake posts:rebake_match['icemanworkingonthisheadache',string,5]
        1 / 1 (100.0%)
1 message terminé !

Ensuite, j’ai vérifié ce message et il affiche toujours uniquement le lien, sans la prévisualisation (onebox). (Vérifié sans cache, sans cookies, et même avec un autre PC :stuck_out_tongue: )

Merci @Overgrow.

J’ai également essayé cela avant et après la commande de rebake (celle ci-dessus) sur le même message et un autre, sans succès.

Salut @iceman,

C’est donc une piste importante ; nous savons maintenant que même régénérer un seul message avec la tâche rake ne résout pas votre problème (nous avons également confirmé que la reconstruction HTML depuis l’interface ne fonctionne pas, comme suggéré par @Overgrow), ce que vous essayiez de nous dire auparavant.

Merci pour le dépannage étape par étape.

Laissez-moi réfléchir à cela un moment ; en attendant, d’autres pourraient avoir des idées maintenant que le problème devient plus clair.


Édition :


@Iceman

Publiez ici l’un de vos liens YT (qui ne résolvent pas le problème) (peut-être celui où vous avez ajouté le texte ‘icemanworkingonthisheadache’) et vérifions qu’une vignette fonctionne ici (et je vais également essayer sur l’un de mes sites de staging).

Bien sûr, @neounix

Cela arrive avec n’importe quelle vidéo YouTube, mais pour assurer la cohérence, en voici deux que j’ai testées spécifiquement pour cela :


Édition : Oui, elles fonctionnent ici.

Pour information, je n’arrive pas à les faire apparaître dans le panneau d’aperçu de mon installation.

Mais toutes les autres boîtes « non YT » s’affichent-elles correctement sur votre site, @Iceman ?

Bonjour @neounix

Oui, tous les autres oneboxes fonctionnent comme prévu : Discourse, WordPress, SoundCloud, Facebook, Twitter, Vimeo, etc. Seul YT s’affiche sous forme d’URL.

Une chose à essayer consiste à vous connecter à Google et à visiter le site YouTube tout en étant proxy via votre serveur, puis à voir si cela vous affiche des messages d’erreur « intéressants ».

Eh bien, si tu ne parviens pas à faire fonctionner Onebox dans l’éditeur pour les nouveaux messages ajoutés, il n’y a aucun intérêt à reboucler les anciens messages.

Tu dois d’abord faire fonctionner Onebox pour les nouveaux messages (au moins l’afficher correctement dans le panneau d’aperçu).

Et au fait… la reconstruction HTML depuis l’interface utilisateur équivaut à un rebouclage.

Donc, après une semaine de pénitence, j’ai fait des progrès mais j’ai finalement buté sur un mur.

  • Tous les détails mentionnés ci-dessus sont toujours d’actualité.

  • Après avoir fait des efforts extraordinaires pour déboguer, il s’est avéré que le problème était le suivant : lorsque j’ai créé le nouveau Droplet, j’en ai profité pour mettre à jour quelques éléments que je n’avais pas pu modifier avec l’original. L’un d’eux était l’IPv6. Il s’avère que les plages IPv6 de Digital Ocean sont pour la plupart bannies par Google pour une raison cosmique. Donc, un conseil pour l’avenir : si vous installez Discourse sur Digital Ocean, ne configurez pas l’IPv6, car vous ne pourrez pas le supprimer ultérieurement ; vous devrez changer de Droplet.

  • Après avoir corrigé cela, tout a fonctionné comme prévu. Cependant, en raison d’une croissance normale (et de certaines tactiques récentes d’Alphabet), je me retrouve de nouveau à zéro car maintenant je rencontre cette erreur et je ne connais aucun moyen d’« arrêter » Discourse de traiter les oneboxes (j’ai même essayé d’ajouter le domaine YT à la liste noire, sans succès). En effet, selon le post que j’ai lié, « cela devrait disparaître après une heure », mais je ne peux pas figer mes rebakes… ou le puis-je ? Devrais-je le faire ? Les autres options consistent à modifier des éléments côté serveur, ce qui signifierait… ajouter plus d’adresses IP ? Forcer « X-Forwarded-For » lors des appels Onebox ?

  • De plus, une question bonus : pourquoi Discourse « assume-t-il la charge » des appels vers YT ? Je veux dire, cette erreur suggère que c’est l’adresse IP du serveur qui est signalée pour effectuer tous les appels (oui, c’est dû au déballage onebox), mais… pourquoi cela ne revient-il pas à l’utilisateur qui charge la page ? Est-ce pour des raisons de performance ?

Bonjour @Iceman,

En tant que solution de contournement, j’ai testé ce CSS (peu élégant) pour vous, et il semble fonctionner pour empêcher le traitement des oneboxes ; une approche du genre « abattre une mouche avec un marteau », que vous pouvez activer et désactiver (ajouter et retirer) jusqu’à ce que vous trouviez quelque chose de mieux. Essayez et voyez :

.onebox-body{
    display:none;
}

J’espère que cela vous aidera.

Note :

J’ai testé cela sur certains liens onebox et les onebox(es) ont disparu, le lien est resté ; mais je n’ai pas testé en détail, désolé.

Arrêtez simplement le traitement en cours. Savez-vous ce qui a déclenché le rebake en cours d’exécution ? S’agit-il d’un travail en arrière-plan ? Si oui, réduisez simplement le paramètre « nombre d’anciens messages à rebake » à zéro.

Vous pouvez ensuite utiliser le rebake de certains posts YouTube (correspondant à une expression régulière) avec des délais…

Tout d’abord, merci à vous deux @neounix @Overgrow

Concernant ceci :

Je vais le tester dès que possible. Tant que cela me bloque pour tester, je suis plus qu’heureux :smiley:

Concernant la question de @Overgrow :

J’ai récemment appris (grâce à vous) comment effectuer des rebakes personnalisés, exécuter des requêtes et faire de la magie noire. Cependant, puis-je demander comment je peux savoir/interroger ceci :

Je veux dire… est-ce dans la console Ruby ou en tuant quelque chose dans Sidekiq… ?

rebake old posts count contrôle le nombre de publications signalées avec les différentes tâches rake traitées toutes les 15 minutes.

Bonjour @riking,

Merci pour votre contribution. Une petite question… comment puis-je modifier ce paramètre ? Via la console Rails ?

Salut @Iceman

C’est un paramètre dans l’interface d’administration

Mon dieu, je me sens vraiment bête :sweat_smile: Merci @neounix !

Je ne peux pas le mettre à zéro, cependant. L’interface indique que la valeur doit être comprise entre 1 et 2 000 000 000. Je vais donc le régler sur 1 et le combiner avec ton astuce… cela devrait me permettre de voir si le bannissement est levé.

(Car les autres options sont beaucoup plus lourdes : de nouvelles adresses IP, des équilibreurs de charge ou forcer directement X-Forwarded-For sur tout, et je ne veux pas casser le fonctionnement de Discourse :sweat:)

Je tiendrai au courant bientôt !

Pour info… Si vous avez besoin de le définir à zéro, vous pouvez très probablement le faire avec une requête de mise à jour directe de la base de données (ou avec Rails, sur laquelle je ne peux pas m’exprimer de manière éclairée).

Eh bien, pas de chance. Je l’ai laissé à la valeur 1 avec l’astuce pour ne rien afficher, et le bannissement est toujours en place 5 heures plus tard. Le pire ? Évidemment, il n’y a aucun moyen de les contacter, donc je ne fais qu’imaginer des solutions. :sweat:

Il faut faire preuve de patience. D’après mon expérience, il peut falloir jusqu’à 2 à 3 jours avant que le bannissement soit levé. Assurez-vous simplement qu’il n’y a plus de nouvelles requêtes vers cette adresse IP.

Vous pouvez vérifier s’il reste encore des tâches de rebaking à exécuter. L’indice se trouve dans le code (cette ligne sélectionne les publications nécessitant un rebaking en arrière-plan, limité par le paramètre rebake old posts count) :

Vous recherchez les publications suivantes :

WHERE (((baked_version IS NULL) OR (baked_version < 2)) AND (deleted_at IS NULL))