树莓派显示博客网站实时在线人数

烂漫树林
发布于 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修改
收藏
回复
举报
回复
    相关推荐