À faire un bot pour Silicium
Modérateur : Politburo
- cakeisalie5
- Fonctionne à 75 bauds
- Messages : 23
- Enregistré le : 14 juin 2017 14:45
- Localisation : Brunoy, France
- Contact :
À faire un bot pour Silicium
En ce moment, je m'amuse avec un "nouveau" réseau social nommé Mastodon.
C'est un Twitter décentralisé : il y a plusieurs serveurs, qui appartiennent à des personnes et organisations différentes (j'ai ma propre brique dedans), qui communiquent entre elles pour s'échanger les statuts des utilisateurs dessus. C'est similaire au mail, sauf que comme sur Twitter, les messages sont diffusés à quiconque "suit" la personne ("follow"). Mais ce n'est pas du mail, c'est bien un réseau à part.
Parmi tous les serveurs communiquant entre eux et sur lesquels on peut s'inscrire, aussi appelés "instances" (dans d'autres situations, ils auraient aussi pu être appelés "pods" ou "serveurs mail"), il y en a un dont le nom de domaine évoque les anciennes machines : oldbytes.space. Comme il n'y a pas grand monde sur cette instance, je me suis dit que j'allais essayer de faire un bot (robot) annonçant les nouveaux topics pour quelque chose qui soit dans le thème. Silicium, c'est l'endroit évident pour faire ça.
Ça n'a pas été facile de faire ce bot, parce que je n'ai pas trouvé d'API pour Silicium (et ça m'étonnerait qu'il y en ait une). Qu'à cela ne tienne, j'ai donc sorti Python et un module pour bidouiller du HTML (scrape) et tenter d'en extraire le contenu (pas automatiquement, hélas, et ça m'a pris quelques essais pour y parvenir). J'ai cherché à faire le plus économique à la longue pour le forum en lui-même (en évitant de demander tout le contenu à chaque fois), en lisant les mises à jour et en voyant si ça a été mis à jour depuis la dernière fois qu'on a regardé. Cela implique de constituer un cache au premier lancement de l'application, mais il est déjà constitué à l'heure où vous lisez ces lignes.
Le bot lui même c'est silicium@oldbytes.space (attention, les noms d'utilisateur sur Mastodon sont similaires à des adresses mail, mais n'en sont pas !). Son code (en Python 3.x) est sur Github, sous licence GPL3. N'hésitez pas à me crier dessus parce que c'est pas bien, me dire que c'est cool, ou à poser des questions !
PS : J'ai fait une kill switch au cas où ce bot spamme trop le site de requêtes, donc si un admin d'ici veut y avoir accès, il me faut juste une clé SSH publique. Je transmettrai les instructions qui vont avec, mais sachez que ça implique un client SSH capable de transmettre une ligne de commande originale, par exemple ssh user@example.org commande argument0 argument1)
C'est un Twitter décentralisé : il y a plusieurs serveurs, qui appartiennent à des personnes et organisations différentes (j'ai ma propre brique dedans), qui communiquent entre elles pour s'échanger les statuts des utilisateurs dessus. C'est similaire au mail, sauf que comme sur Twitter, les messages sont diffusés à quiconque "suit" la personne ("follow"). Mais ce n'est pas du mail, c'est bien un réseau à part.
Parmi tous les serveurs communiquant entre eux et sur lesquels on peut s'inscrire, aussi appelés "instances" (dans d'autres situations, ils auraient aussi pu être appelés "pods" ou "serveurs mail"), il y en a un dont le nom de domaine évoque les anciennes machines : oldbytes.space. Comme il n'y a pas grand monde sur cette instance, je me suis dit que j'allais essayer de faire un bot (robot) annonçant les nouveaux topics pour quelque chose qui soit dans le thème. Silicium, c'est l'endroit évident pour faire ça.
Ça n'a pas été facile de faire ce bot, parce que je n'ai pas trouvé d'API pour Silicium (et ça m'étonnerait qu'il y en ait une). Qu'à cela ne tienne, j'ai donc sorti Python et un module pour bidouiller du HTML (scrape) et tenter d'en extraire le contenu (pas automatiquement, hélas, et ça m'a pris quelques essais pour y parvenir). J'ai cherché à faire le plus économique à la longue pour le forum en lui-même (en évitant de demander tout le contenu à chaque fois), en lisant les mises à jour et en voyant si ça a été mis à jour depuis la dernière fois qu'on a regardé. Cela implique de constituer un cache au premier lancement de l'application, mais il est déjà constitué à l'heure où vous lisez ces lignes.
Le bot lui même c'est silicium@oldbytes.space (attention, les noms d'utilisateur sur Mastodon sont similaires à des adresses mail, mais n'en sont pas !). Son code (en Python 3.x) est sur Github, sous licence GPL3. N'hésitez pas à me crier dessus parce que c'est pas bien, me dire que c'est cool, ou à poser des questions !
PS : J'ai fait une kill switch au cas où ce bot spamme trop le site de requêtes, donc si un admin d'ici veut y avoir accès, il me faut juste une clé SSH publique. Je transmettrai les instructions qui vont avec, mais sachez que ça implique un client SSH capable de transmettre une ligne de commande originale, par exemple ssh user@example.org commande argument0 argument1)
Modifié en dernier par cakeisalie5 le 05 août 2017 19:45, modifié 6 fois.
Auteur et mainteneur du projet P7 pour calculatrices CASIO, dont ma collection est ici. Également sur Mastodon. J'ai réalisé un bot Mastodon pour le forum de Silicum.
- Administrateur
- Messages : 5957
- Enregistré le : 24 mai 2002 16:55
- Localisation : Toulouse
- Contact :
Re: À faire un bot pour Silicium
Salut,
Si j'ai bien compris ce bot sert à annoncer les nouveaux topics du forum (c'est écrit dessus) par mail à ceux qui s'y sont inscrits, c'est ça ?
A+
Si j'ai bien compris ce bot sert à annoncer les nouveaux topics du forum (c'est écrit dessus) par mail à ceux qui s'y sont inscrits, c'est ça ?
A+
-
- Fonctionne à 2400 bauds
- Messages : 1806
- Enregistré le : 03 mai 2003 02:24
- Localisation : Nonglard (Annecy)
- Contact :
Re: À faire un bot pour Silicium
Yo,
Il n'y a pas de flux RSS sur le forum ? (je n'ai pas regardé)
Car du coup, ca serait beaucoup plus simple.
A+
Il n'y a pas de flux RSS sur le forum ? (je n'ai pas regardé)
Car du coup, ca serait beaucoup plus simple.
A+
Amiga, UNIX
Sharp, NetBSD http://destroyedlolo.info/
Apache, PHP 100 % dictionnary free
Vacances, Voyages 1 mispelling by word
Sharp, NetBSD http://destroyedlolo.info/
Apache, PHP 100 % dictionnary free
Vacances, Voyages 1 mispelling by word
- cakeisalie5
- Fonctionne à 75 bauds
- Messages : 23
- Enregistré le : 14 juin 2017 14:45
- Localisation : Brunoy, France
- Contact :
Re: À faire un bot pour Silicium
Non, c'est pas par mail, c'est sur Mastodon, un réseau à part du mail (c'est ma comparaison qui a dû t'induire en erreur, je vais essayer de réécrire ça mieux). ^^
Et j'ai pas trouvé destroyedlolo, mais peut-être. En tous les cas, j'aurai probablement la flemme de refaire le système actuel x)
Et j'ai pas trouvé destroyedlolo, mais peut-être. En tous les cas, j'aurai probablement la flemme de refaire le système actuel x)
Auteur et mainteneur du projet P7 pour calculatrices CASIO, dont ma collection est ici. Également sur Mastodon. J'ai réalisé un bot Mastodon pour le forum de Silicum.
- Administrateur
- Messages : 5957
- Enregistré le : 24 mai 2002 16:55
- Localisation : Toulouse
- Contact :
Re: À faire un bot pour Silicium
Salut,
Ok, j'ai pigé.
Je confirme, pas de flux RSS, on reste en phpbb de base, sans fioritures.
A+
Ok, j'ai pigé.
Je confirme, pas de flux RSS, on reste en phpbb de base, sans fioritures.
A+
- gege
- Fonctionne à 14400 bauds
- Messages : 7148
- Enregistré le : 31 janv. 2008 14:24
- Localisation : Banlieue Paârisienne
- Contact :
Re: À faire un bot pour Silicium
Bonjour,
Il y a déjà une page "nouveaux messages" sur Sili il me semble, ne suffit-il pas de la couper en morceaux et hop ?
Réinventer la roue, toussa...
G.E.
Il y a déjà une page "nouveaux messages" sur Sili il me semble, ne suffit-il pas de la couper en morceaux et hop ?
Réinventer la roue, toussa...
G.E.
-
- Fonctionne à 1200 bauds
- Messages : 445
- Enregistré le : 14 mai 2010 19:15
Re: À faire un bot pour Silicium
Oui, il existe le raccourci "Sujets actifs"...
Pourquoi se compliquer la vie ?...
Pourquoi se compliquer la vie ?...
- cakeisalie5
- Fonctionne à 75 bauds
- Messages : 23
- Enregistré le : 14 juin 2017 14:45
- Localisation : Brunoy, France
- Contact :
Re: À faire un bot pour Silicium
J'avoue ne pas avoir vu cette page. Après, je voulais vraiment annoncer les derniers topics, pas les derniers messages, et l'idée était de rendre ça accessible via un autre moyen que le forum lui-même, et pourquoi pas, d'intéresser les gens qui ne sont pas sur le forum mais qui voient ça passer parce que l'une des personnes qu'ils suivent a partagé une annonce de topic.
Aussi, la structure actuelle fait qu'il est possible de la reprendre pour faire carrément une backup de l'extérieur du forum, ou de faire une API qui récupérerait les données (publiques ou pas publiques d'ailleurs, puisqu'il est possible de passer par un compte) et qui, par voie de faits, les rendraient accessibles à divers bots. Mais je ne compte pas aller plus loin, ce qu'il y a là me suffit amplement.
PS : J'avais peur qu'il ne fonctionnait pas, mais si, c'est bon, deux nouveaux messages \o/
Aussi, la structure actuelle fait qu'il est possible de la reprendre pour faire carrément une backup de l'extérieur du forum, ou de faire une API qui récupérerait les données (publiques ou pas publiques d'ailleurs, puisqu'il est possible de passer par un compte) et qui, par voie de faits, les rendraient accessibles à divers bots. Mais je ne compte pas aller plus loin, ce qu'il y a là me suffit amplement.
PS : J'avais peur qu'il ne fonctionnait pas, mais si, c'est bon, deux nouveaux messages \o/
Auteur et mainteneur du projet P7 pour calculatrices CASIO, dont ma collection est ici. Également sur Mastodon. J'ai réalisé un bot Mastodon pour le forum de Silicum.
- zpalm
- Fonctionne à 9600 bauds
- Messages : 2936
- Enregistré le : 03 mai 2008 15:33
- Localisation : Grenoble
Re: À faire un bot pour Silicium
Je n'ai toujours pas compris à quoi sert Twitter, alors Mastodon....
Ceci dit reprendre les posts de Silicium de cette façon ça pose quelques problèmes:
Ceci dit reprendre les posts de Silicium de cette façon ça pose quelques problèmes:
L'un des messages a été posté dans une section réservée aux membres actifs et il se retrouve du coup partagé et accessible à n'importe quicakeisalie5 a écrit : ↑06 août 2017 12:28 PS : J'avais peur qu'il ne fonctionnait pas, mais si, c'est bon, deux nouveaux messages \o/
- Fabrice Montupet
- Administrateur
- Messages : 11115
- Enregistré le : 17 mai 2002 11:39
- Localisation : Nevers - France
Re: À faire un bot pour Silicium
C'est un sérieux problème.
- Administrateur
- Messages : 5957
- Enregistré le : 24 mai 2002 16:55
- Localisation : Toulouse
- Contact :
Re: À faire un bot pour Silicium
Salut,
Merci de faire le nécessaire afin que ton robot n'utilise pas de compte pour butiner sur nos forums.
A+
cakeisalie5 a écrit :Aussi, la structure actuelle fait qu'il est possible de la reprendre pour faire carrément une backup de l'extérieur du forum, ou de faire une API qui récupérerait les données (publiques ou pas publiques d'ailleurs, puisqu'il est possible de passer par un compte) et qui, par voie de faits, les rendraient accessibles à divers bots. Mais je ne compte pas aller plus loin, ce qu'il y a là me suffit amplement.
Je confirme : seuls les messages publics (c'est à dire ceux qui ne nécessitent pas de compte pour être visibles) sont susceptibles d'être aspirés par ton robot. Les messages qui sont dans des forums non publics, ne doivent en aucun cas en être extraits et rendu publics.Fabrice Montupet a écrit :C'est un sérieux problème.zpalm a écrit :L'un des messages a été posté dans une section réservée aux membres actifs et il se retrouve du coup partagé et accessible à n'importe qui
Merci de faire le nécessaire afin que ton robot n'utilise pas de compte pour butiner sur nos forums.
A+
- cakeisalie5
- Fonctionne à 75 bauds
- Messages : 23
- Enregistré le : 14 juin 2017 14:45
- Localisation : Brunoy, France
- Contact :
Re: À faire un bot pour Silicium
Il n'utilise déjà pas de compte. C'est juste qu'il n'utilise que les index, et en l'occurrence, l'index est disponible sans connexion :
http://silicium.org/forum/viewforum.php?f=24
Si vous le rendez inaccessible sans connexion, il ne devrait plus pouvoir lire et, du coup, ne plus parler de son contenu.
(je supprime le message actuel)
EDIT : Du coup, on fait quoi ? Vous rendez l'index de ce forum privé ? Je hardcode l'ID du forum pour ne pas que mon bot le lise ? On laisse ça comme ça et les topics continueront d'être annoncés sur le bot ?
http://silicium.org/forum/viewforum.php?f=24
Si vous le rendez inaccessible sans connexion, il ne devrait plus pouvoir lire et, du coup, ne plus parler de son contenu.
(je supprime le message actuel)
EDIT : Du coup, on fait quoi ? Vous rendez l'index de ce forum privé ? Je hardcode l'ID du forum pour ne pas que mon bot le lise ? On laisse ça comme ça et les topics continueront d'être annoncés sur le bot ?
Auteur et mainteneur du projet P7 pour calculatrices CASIO, dont ma collection est ici. Également sur Mastodon. J'ai réalisé un bot Mastodon pour le forum de Silicum.
- Administrateur
- Messages : 5957
- Enregistré le : 24 mai 2002 16:55
- Localisation : Toulouse
- Contact :
Re: À faire un bot pour Silicium
Salut,
Mais cela m'ennuie quand même que les deux forums "Donne, Echange, Achète et Vends" soient pris en compte par ton robot (à cause des opportunistes). Si tu peux hardcoder ces deux ID (24 et 62) pour que le robot ne les prennent pas en compte, cela me conviendrais parfaitement.
A+
Oops tu as raison, ces forums sont public et visibles par tout le monde. J'ai confondu avec un autre, qui lui est privé, et donc que ton robot ne voit pas.cakeisalie5 a écrit :Il n'utilise déjà pas de compte. C'est juste qu'il n'utilise que les index, et en l'occurrence, l'index est disponible sans connexion :
http://silicium.org/forum/viewforum.php?f=24
Si vous le rendez inaccessible sans connexion, il ne devrait plus pouvoir lire et, du coup, ne plus parler de son contenu.
Du coup, comme c'est public, mon argument initial ne tiens pascakeisalie5 a écrit :Du coup, on fait quoi ? Vous rendez l'index de ce forum privé ? Je hardcode l'ID du forum pour ne pas que mon bot le lise ? On laisse ça comme ça et les topics continueront d'être annoncés sur le bot ?
Mais cela m'ennuie quand même que les deux forums "Donne, Echange, Achète et Vends" soient pris en compte par ton robot (à cause des opportunistes). Si tu peux hardcoder ces deux ID (24 et 62) pour que le robot ne les prennent pas en compte, cela me conviendrais parfaitement.
A+
- cakeisalie5
- Fonctionne à 75 bauds
- Messages : 23
- Enregistré le : 14 juin 2017 14:45
- Localisation : Brunoy, France
- Contact :
Re: À faire un bot pour Silicium
Modifications publiées, et appliquées en production !
J'en profite pour dire que la codebase existante n'est pas incompatible avec Twitter, ni même avec l'envoi de requêtes à un callback prédéfini pour chaque nouveau topic trouvé, donc si ça tente quelqu'un...
J'en profite pour dire que la codebase existante n'est pas incompatible avec Twitter, ni même avec l'envoi de requêtes à un callback prédéfini pour chaque nouveau topic trouvé, donc si ça tente quelqu'un...
Auteur et mainteneur du projet P7 pour calculatrices CASIO, dont ma collection est ici. Également sur Mastodon. J'ai réalisé un bot Mastodon pour le forum de Silicum.
- Administrateur
- Messages : 5957
- Enregistré le : 24 mai 2002 16:55
- Localisation : Toulouse
- Contact :
Re: À faire un bot pour Silicium
Salut,
Impec, merci.
A+
Impec, merci.
A+