回复
树莓派显示博客网站实时在线人数
烂漫树林
发布于 2020-11-11 17:16
浏览
0收藏
用树莓派做了一个博客网站实时访问显示器,用三个LED的不同状态来显示网站实时访客的人数,同时还在终端中显示网站当前在线人数、网页今日浏览量、数据库大小和页面平均生成时间。以下是教程。
开发语言使用的是python,数据通过科技爱好者网站统计提供的API实现。先看下成品图。
树莓派网站计数器
显示当前在线人数、网页今日浏览量、数据库大小和页面平均生成时间
下面是实现方法:
我使用自建的网站访问统计软件Matomo统计博客的访问人数,其提供了API供二次开发。
Matomo提供的API
所以我在树莓派上用python获得网站当前在线人数、网页今日浏览量、数据库大小和页面平均生成时间,然后展现出来,并连接了三个LED灯。连接灯可以参考这篇文章:树莓派GPIO控制RGB彩色LED灯。
连接好led灯后,在树莓派上编写代码。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
import time
import RPi.GPIO as GPIO
R,Y,G = 14,15,18
visits = 0
GPIO.setmode(GPIO.BCM)
GPIO.setup(R, GPIO.OUT)
GPIO.setup(Y, GPIO.OUT)
GPIO.setup(G, GPIO.OUT)
def printSiteInfo ():
actions_url = 'https://tongji.lxx1.com/index.php?module=API&method=Actions.get&idSite=3&period=day&date=today&format=JSON&token_auth=***'
db_status_url = 'https://tongji.lxx1.com/index.php?module=API&method=DBStats.getGeneralInformation&format=JSON&token_auth=***'
live_visits_url = 'https://tongji.lxx1.com/index.php?module=API&method=Live.getCounters&idSite=3&lastMinutes=3&format=json&token_auth=***'
r = requests.get(actions_url)
database_response = requests.get(db_status_url)
live_visits = requests.get(live_visits_url)
info = r.json()
database_list = database_response.json()
database = database_list[2] / 1024 / 1024
visits_json = live_visits.json()
visits_list = visits_json[0]
global visits
visits = visits_list['visits']
localtime = time.asctime( time.localtime(time.time()) )
print ""
print "当前时间 :", localtime
print 'live visits: ' , visits
print 'pageviews: ', info['nb_pageviews']
print 'avg_time_generation :',info['avg_time_generation'] , 's'
print 'database size: ' , database ,' M'
return
i = 1
while i == 1:
t = 0
printSiteInfo()
visits = int(visits)
if visits == 0 :
GPIO.output(R,0)
GPIO.output(Y,0)
GPIO.output(G,0)
elif visits == 1 :
GPIO.output(R,1)
GPIO.output(Y,0)
GPIO.output(G,0)
elif visits == 2:
GPIO.output(R,1)
GPIO.output(Y,1)
GPIO.output(G,0)
elif visits == 3:
GPIO.output(R,1)
GPIO.output(Y,1)
GPIO.output(G,1)
time.sleep(20)
else :
while t < visits :
GPIO.output(R,0)
GPIO.output(Y,0)
GPIO.output(G,0)
time.sleep(0.7)
GPIO.output(R,1)
GPIO.output(Y,1)
GPIO.output(G,1)
time.sleep(0.3)
t = t + 1
time.sleep(10)
这里要注意 :python获得网站实时在线人数 visits 的变量类型为 Unicode ,在 if 语句进行比较前,要将其转换为 int 型,否则会出错。
这样网站访客显示器就完成啦。
原文作者:科技爱好者
分类
已于2020-11-11 17:16:16修改
赞
收藏
回复
相关推荐