其实这篇文章应该很早之前就写的,但是我太懒了,一直拖到现在。TG-bot还是蛮好玩的,可以做到很多意想不到的功能。因为i-Book.in页面的后端是algolia的,他们对于免费用户最大的数据存储量只有1W条。而经过多次扩容,我目前的数据量已经有超过了很多了,但是我还是没有将它整改,因为Flask实在是太难了。而多出的数据没有索引的话我自己要找也很麻烦,所以我搭建了一个TG-bot,后端使用Elasticsearch储存数据,这样哪怕数百万条的数据,也能轻松应对,前端使用的是Telegram的API。
以下部分是这个bot的一些介绍。
这个bot就只有一个命令,就是/so,这个命令可以同时搜索书名和作者,根据你输入的内容,返回最接近的结果,建议输入完整的书名/作者以获取最精确的结果。当然,如果搜索的是数据库没有的书也会返回一些关键词接近的结果。
/so
如果有兴趣可以{% btn https://telegram.me/ibookin, 点击这里,telegram fa-lg fa-fw %}到TG群组里骚扰这个bot哦。
注:需要翻墙才可以使用Telegram
找不到想要的书这很正常,毕竟只是一个的样本量很小的数据库,要知道现在每年新增的出版物有几十万册之多,目前的总量连每年新增的十分之一都没有。我也没打算据此盈利,只是对数据的整理以及提炼感兴趣。最近在爬取一些图书的信息,打算做一些数据的升华比如数据库里谁的书最多,那个国家的书最多,什么类型的书最多这样。
盈利
整个运行步骤简单来说就是:bot先接收私聊发来的信息返回给后端脚本,后端根据信息的内容去检索ES,再根据ES的返回数据解析出来的信息发送回接收到消息的频道。具体的细节不是很想写了,因为没有数据库,也没法复刻这个bot,所以我只打算写一些核心内容。
因为ES我用的还不是很熟练,所以我直接使用的是docker版本,不用捣鼓java和乱七八糟的配置项,直接pull就可以用了。
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
docker安装完了之后就是要获取ES了:
docker pull elasticsearch:6.7.0
创建ES的挂载目录以及配置文件:
cd / mkdir -p mnt/elasticsearch cd mnt/elasticsearch mkdir config mkdir master mkdir slave chmod 777 master chmod 777 slave
config 里面分别放两个配置文件:
cd config touch master.yml touch slave.yml
master.yml:
master.yml
cluster.name: elasticsearch-cluster node.name: master network.bind_host: 0.0.0.0 network.publish_host: `your ip` http.port: 9200 transport.tcp.port: 9300 http.cors.enabled: true http.cors.allow-origin: "*" node.master: true node.data: true discovery.zen.ping.unicast.hosts: [" `your ip`:9300"," `your ip`:9301"]
slave.yml:
slave.yml
cluster.name: elasticsearch-cluster node.name: slave network.bind_host: 0.0.0.0 network.publish_host: `your 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: ["`your ip`:9300","`your ip`:9301"]
注意!因为这个docker打包了java所以会特别消耗内存。
需要调高JVM线程数限制数量(否则会报错):
(否则会报错)
nano /etc/sysctl.conf #添加这个 vm.max_map_count=262144 #保存后执行这个命令 sysctl -p
初始化容器
master:
master
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
slave:
slave
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
剩下的就是和bot对接了,这部分我过段时间在更新,因为bot还没有完全优化完毕,到时候会放到Gtihub。
只有当数据量大了,数据才能玩出花,所以我最近收集的图书信息都不是根据我现有的数据抓取,而是看到一个就全站爬取,这样以后如果我有了电子书文件,直接匹配数据就可以输出了,不需要焦头烂额的找数据了。下一步打算将去除ipfs链接的图书信息在github开源(我记得好像已经有现成的了,但我就喜欢造轮子!)。
(我记得好像已经有现成的了,但我就喜欢造轮子!)
最近刚刚看完了猫腻的间客,里面有一句话出现了很多遍:“社会阶层不平等的根源就是信息的不平等” 我很是赞同。我们没有办法将信息平等到每个人都一样多,但如果有能力获取到更多的信息,为什么不去做呢?我认为每个人都有这个能力,只是因为懒惰,因为怕麻烦,因为觉得很难,因为觉得很费时间所以放弃。看书是一件很费时间和精力的事情(一定有人会反驳我的,说什么几天看完几百万字的书,不好意思,那些就是电子毒品,看完没有任何营养。),认认真真看书是能够将心神代入到书中的人物的,能够体会到作者透过文字传递出来的情感与感悟,也能够学到很多新的知识。这知识不一定是语数英,也许是某道菜的做法,也许是某个很冷门的小技巧,但只要掌握了,就是属于你的独一无二的知识。
间客
(一定有人会反驳我的,说什么几天看完几百万字的书,不好意思,那些就是电子毒品,看完没有任何营养。)
可能需要使用Telegram提高了有些人使用这个bot的难度,但是我认为门槛是有必要的,如果你使用这个bot没有找到心仪的书,请不要私聊我让我添加,我不会添加的,我不喜欢一个个手动添加,那样很傻,除非我又找到了一批数据。但......如果有数百G的数据躺在我面前,我还是很馋的。
最后要是有会前端的大佬愿意接盘重构 i-book.in,可以联系我。
Google Chrome毋庸置疑是世界上最好的浏览器,前段时间的隐私问题使其蒙上了不少阴霾,但我这样的屁民它要收集收集好了,反正给谁不是给,最后自己用的开心最重要。
简单使用VNC的基础教程
使用V2ray dokodemo-door 的透明网关功能实现全局上网
使用 vlmcsd 激活
这是一个非常好用的pdg转pdf软件,免安装直接使用
目录
热门标签
更多语言
站点信息