Un Telegram-bot pour rechercher des ebooks
2019-12-23 · 1035 · 12 minEn fait, cet article aurait dû être écrit il y a longtemps, mais j’étais trop paresseux et je l’ai traîné jusqu’à maintenant. TG-bot est toujours assez amusant et peut faire beaucoup de fonctions inattendues. Parce que le backend de i-Book.in page est algolia, leur stockage de données maximum pour les utilisateurs gratuits n’est que de 1W. Après de nombreuses expansions, mon volume de données actuel a beaucoup dépassé, mais je ne l’ai toujours pas rectifié car Flask est si difficile. Si les données supplémentaires ne sont pas indexées, je dois les trouver moi-même, alors j’ai construit un TG-bot, et le backend utilise Elasticsearch pour stocker des données, de sorte que même des millions de données peuvent être facilement manipulées, et le front-end utilise l’API de Telegram.
Les sections suivantes sont quelques introductions à ce bot.
# Utilisation
Ce bot n’a qu’une seule commande, c’est-à-dire '/so', cette commande peut rechercher le titre et l’auteur en même temps, selon ce que vous entrez, renvoyer le résultat le plus proche, il est recommandé d’entrer le titre complet / auteur pour obtenir les résultats les plus précis. Bien sûr, si vous recherchez un livre qui n’est pas dans la base de données, il renverra également des résultats proches du mot-clé.
Si vous êtes intéressé, vous pouvez {% btn https://telegram.me/ibookin, cliquez ici, télégramme fa-lg fa-fw %} pour harceler ce bot dans le groupe TG.
Il est normal de ne pas trouver le livre que vous voulez, après tout, c’est juste une très petite base de données, vous devez savoir qu’il y a des centaines de milliers de nouvelles publications chaque année, et le total actuel n’est même pas un dixième du nouveau livre chaque année. Je n’avais pas non plus l’intention de « faire un profit » sur cette base, mais j’étais intéressé par la collecte et l’affinement des données. Récemment, j’ai exploré certaines informations sur les livres, avec l’intention de faire une sublimation de données, telles que qui a le plus de livres dans la base de données, quel pays a le plus de livres, quel type de livres en a le plus, et ainsi de suite.
Toute l’étape en cours d’exécution est simple: le bot reçoit d’abord les informations envoyées par le chat privé et les renvoie au script backend, le backend récupère ES en fonction du contenu du message, puis renvoie les informations analysées au canal où le message est reçu en fonction des données de retour d’ES. Je ne veux pas vraiment écrire les détails, car il n’y a pas de base de données et il n’y a aucun moyen de répliquer ce bot, donc je ne prévois d’écrire que du contenu de base.
# Construire
Installer docker
Parce que je ne suis pas très compétent en ES, j’utilise directement la version docker, sans bricoler avec java et les éléments de configuration désordonnés, et peut être utilisé directement tirer.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Installer et configurer ES
Une fois l’installation du docker terminée, il est temps d’obtenir l’ES:
Docker Pull Elasticsearch:6.7.0
Créez le répertoire de montage et le fichier de configuration du SE :
CD/
mkdir -p mnt/elasticsearch
CD MNT/Elasticsearch
Configuration de mkdir
Maître MKDIR
Esclave MKDIR
Chmod 777 Maître
Chmod 777 esclave
Dans config, placez deux fichiers de configuration :
Configuration du CD
Touchez Master.yml
Touchez Slave.yml
'master.yml':
cluster.name: elasticsearch-cluster
node.name : maître
network.bind_host : 0.0.0.0
network.publish_host : « Votre adresse IP »
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled : true
http.cors.allow-origin: « * »
node.master : vrai
node.data: true
discovery.zen.ping.unicast.hosts: [ » 'Votre adresse IP':9300 », » 'Votre adresse IP':9301"]
'slave.yml':
cluster.name: elasticsearch-cluster
node.name : esclave
network.bind_host : 0.0.0.0
network.publish_host : « Votre adresse IP »
http.port : 9202
transport.tcp.port : 9302
http.cors.enabled : true
http.cors.allow-origin: « * »
node.master : false
node.data: true
discovery.zen.ping.unicast.hosts: ["'Votre adresse IP':9300 »,"'Votre adresse IP':9301"]
Vous devez augmenter la limite de thread JVM (sinon une erreur sera signalée) :
nano /etc/sysctl.conf
#添加这个
vm.max_map_count=262144
#保存后执行这个命令
sysctl -p
Initialiser le conteneur
'maître':
docker run -e ES_JAVA_OPTS= »-Xms256m -Xmx256m » -d -p 9200:9200 -p 9300:9300 -v /mnt/elasticsearch/config/master.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /mnt/ elasticsearch/master:/usr/share/elasticsearch/data --name es-master elasticsearch:6.7.0
'esclave':
docker run -e ES_JAVA_OPTS= »-Xms256m -Xmx256m » -d -p 9201:9201 -p 9301:9301 -v /mnt/elasticsearch/config/slave.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /mnt/ elasticsearch/slave:/usr/share/elasticsearch/data --name es-slave elasticsearch:6.7.0
Le reste est de s’amarrer au bot, que je mettrai à jour après un certain temps, car le bot n’a pas été entièrement optimisé, et il sera mis sur Gtihub à ce moment-là.
# Post-scriptum
Ce n’est que lorsque la quantité de données est importante que les données peuvent jouer des fleurs, de sorte que les informations sur le livre que j’ai récemment collectées ne sont pas basées sur ma capture de données existante, mais en voir une et explorer l’ensemble du site, de sorte que si j’ai un fichier e-book à l’avenir, les données de correspondance directe peuvent être sorties, pas besoin de s’inquiéter de la recherche de données. L’étape suivante consiste à ouvrir les informations du livre sans liens IPFS sur GitHub' (je me souviens qu’il semblait prêt à l’emploi, mais j’adore faire des roues!) )'。
Récemment, je viens de terminer la lecture de l'« interlocuteur » délicat, et il y a une phrase qui est apparue plusieurs fois : « La cause profonde de l’inégalité des classes sociales est l’inégalité de l’information » Je suis d’accord. Il n’y a aucun moyen d’égaliser l’information pour tout le monde de manière égale, mais si nous avons accès à plus d’information, pourquoi pas? Je pense que tout le monde a cette capacité, juste parce qu’ils sont paresseux, parce qu’ils ont peur des ennuis, parce qu’ils trouvent cela difficile, parce qu’ils sentent que cela prend du temps, alors ils abandonnent. Lire des livres est une chose qui prend beaucoup de temps et d’énergie » (Quelqu’un a dû me réfuter, en disant qu’après avoir lu un livre de millions de mots en quelques jours, désolé, ce sont des médicaments électroniques, et il n’y a pas de nutrition après la lecture.) Lire des livres sérieusement peut mettre leur esprit dans les personnages du livre, peut éprouver les émotions et les sentiments transmis par l’auteur à travers les mots, et peut aussi apprendre beaucoup de nouvelles connaissances. Cette connaissance n’a pas besoin d’être anglaise, peut-être que c’est une certaine pratique de plat, peut-être que c’est une petite compétence très impopulaire, mais tant qu’elle est maîtrisée, c’est votre connaissance unique.
La nécessité d’utiliser Telegram a augmenté la difficulté d’utiliser ce bot pour certaines personnes, mais je pense que le seuil est nécessaire, si vous utilisez ce bot et ne trouvez pas le livre que vous voulez, s’il vous plaît ne discutez pas en privé Je m’ai demandé d’ajouter, je ne l’ajouterai pas, je n’aime pas l’ajouter manuellement un par un, c’est idiot, sauf si je trouve un autre lot de données. Mais...... S’il y a des centaines de gigaoctets de données devant moi, j’ai toujours très faim.
s’il y a un grand gars qui connaît le front-end qui est prêt à prendre en charge le refactoring i-book.in, vous pouvez me contacter.
Balises :
Avis de droit d'auteur :
Cet article est écrit par SaltyLeo. Si le contenu comporte des erreurs, veuillez laisser un commentaire. Lors de la reprise ou de la citation de cet article, veuillez respecter la licence CC BY-NC-SA en indiquant la source, en utilisant à des fins non commerciales et en partageant de la même manière !Commentaire :
Lire la suite :
Une fois le site WordPress créé, le lien fixe sera 404 lors de la modification du lien fixe. Cet article résoudra ce problème.
Utilisez Raspberry Pi pour construire des meubles intelligents simples.
Le contenu principal de cet article est de savoir comment utiliser Publier sur IPFS pour publier des documents sur le réseau IPFS et laisser d'autres nœuds participer au stockage permanent.
Faites l'expérience sans publicités d'adhésion, profitez de médias en streaming haute définition 4K.
L'arrière-plan indique qu'il y a une mise à jour, donc je la mets à jour directement et je l'ignore, ce qui conduit à un BUG inexplicable
Table des matières
Balises populaires
Informations sur le site
Balises: 220
Vues de page: 12,890,246
temps de chargement: 18.59 ms
Ver : 4.0.1