Bonjour à tous ! J’adore Discourse, c’est la colonne vertébrale de notre communauté.
Nous sommes un projet open source avec une forte présence sur Github. Nous avons un robot écrit en Python qui gère nos dépôts Github et effectue des tâches telles que fusionner automatiquement les pull requests si elles ont été approuvées. Comme nous avons de nombreux dépôts et que tout le monde ne suit pas chaque dépôt, il serait formidable que le robot puisse publier sur les forums lorsqu’un nouveau projet est créé ou lorsqu’une pull request nécessite une révision.
Pourriez-vous m’indiquer la meilleure façon d’appeler l’API Discourse depuis Python ?
Je vois soudainement cette erreur aussi ce week-end en essayant de récupérer un sujet. Ce code de récupération de sujet n’a pas changé depuis plus d’un an, donc quelque chose dans l’API a dû changer. Je suis en train d’enquêter.
Je ne connais pas le projet mentionné ci-dessus, mais voici l’état du projet de bennylope. Peut-être que la même correction est nécessaire pour d’autres wrappers.
Merci ! Cela a fonctionné. J’ai désinstallé pydiscourse et utilisé une copie locale basée sur ce que vous avez suggéré. Et maintenant, cela fonctionne !
J’essaie d’utiliser l’analyseur de sentiment de Python pour obtenir une analyse de sentiment des derniers messages. Je vous tiendrai au courant de l’évolution des choses.
Oui, je sais que c’est un vieux post, mais comme il correspond essentiellement à ce que je cherche, il n’y a aucun intérêt à créer un nouveau post quand celui-ci fonctionne, il suffit juste de le mettre à jour.
Bien que je sache programmer dans de nombreux langages de programmation, désolé de dire que Ruby n’en fait pas partie. Je me demandais s’il existait des réponses plus récentes ou meilleures à cette question.
Interagir avec Discourse depuis Python ?
En tant que question secondaire, les plugins et/ou thèmes Discourse peuvent-ils être créés en utilisant Python ?
Je l’utilise en production pour un objectif très spécifique car il n’existe pas de module équivalent maintenu dans l’écosystème RoR, ce qui m’évite d’avoir à traduire puis maintenir tout ce code spécialisé en Ruby.
Cela fonctionne étonnamment bien.
Cela dit, la base de ce plugin est toujours écrite en Ruby.
Je vous recommanderais simplement d’apprendre également Ruby on Rails - c’est vraiment un langage très agréable et, à mon avis, le code est plus agréable à lire que Python
Je devrais également prendre le temps d’apprendre davantage Python si/quand le besoin s’en fera sentir.
Note annexe intéressante : une partie du code dans Discourse Chatbot 🤖 qui crée le comportement de l’agent était basée sur un agent Python appelé “Funkagent” que j’ai d’abord traduit en Ruby on Rails (puis modifié, amélioré.). La traduction peut donc être une option, bien sûr, si cela a du sens. Dans ce cas, cela avait du sens.
J’ai écrit plusieurs scripts d’importation avant de vraiment « apprendre » Ruby. Selon ce que vous voulez faire, vous pourriez être en mesure de faire plus avec vos compétences actuelles que vous ne le pensez. Il est probablement plus facile d’utiliser Ruby que de comprendre comment utiliser autre chose.
Cependant, si vous interagissez avec l’API, vous pouvez utiliser le langage de votre choix.
Ruby est magnifiquement conçu et un jeu d’enfant à apprendre, à mon humble avis.
Ruby on Rails demande un peu plus d’apprentissage et, en tant que framework reposant sur des conventions, peut être délicat par moments mais très puissant une fois que vous l’avez maîtrisé.
Choisissez quelque chose que vous voulez faire qui semble simple. Si vous voulez quelque chose comme cakeday qui change la définition d’un anniversaire, alors cakeday pourrait être un bon point de départ. Vous sélectionneriez une petite chose que vous voulez changer et feriez les choses une petite étape à la fois.
Bonjour à tous, je suis également intéressé par l’obtention de données de Discourse (principalement des statistiques sur les vues et le nombre d’utilisateurs) depuis Python. Beaucoup des paquets listés ici ne semblent plus être actifs. Existe-t-il une nouvelle manière standard de faire cela en 2026 ?
Vous n’avez pas toujours besoin d’utiliser l’interface de quelqu’un d’autre.
Ce n’est pas trop difficile de le faire via la bibliothèque requests intégrée, et si vous utilisez quelque chose (par exemple Postman, que j’ai déjà configuré), vous pouvez importer notre spécification d’API dedans et ensuite lui demander de générer du code :