摄影:产品经理
产品经理笑得比草莓还好看
GNE 正式版上线已经一周了,我想知道有多少人使用 pip 安装了 GNE,应该如何操作呢?
这个时候可以使用 google-cloud-bigquery
来实现。
服务账号密钥
,访问:https://console.cloud.google.com/apis/credentials/serviceaccountkey。JSON
,点击“创建”,浏览器就会下载一个 JSOn 文件到你的电脑上。然后,使用 pip 安装一个名为google-cloud-bigquery
的第三方库。
然后编写代码:
import datetime
from google.cloud import bigquery
def notify(message):
print(message)
client = bigquery.Client()
query_job = client.query("""
SELECT
COUNT(*) AS num_downloads,
SUBSTR(_TABLE_SUFFIX, 1, 8) AS `date`
FROM `the-psf.pypi.downloads*`
WHERE
file.project = 'gne'
AND details.installer.name = 'pip'
AND _TABLE_SUFFIX
BETWEEN FORMAT_DATE(
'%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 10 DAY))
AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
GROUP BY `date`
ORDER BY `date` DESC
""")
results = query_job.result() # Waits for job to complete.
msg = ''
for row in results:
msg += "在{}日,有{}人使用pip安装gne".format(row.date, row.num_downloads)
msg += '\n'
notify(msg)
这段代码的关键就是其中的 SQL 语句,pypi 上面所有的第三方库的安装信息都存放在了the-psf.pypi.downloads*
这个库中,其中的星号是通配符,对应了%Y%m%d
格式的年月日,每天一张表。
file.project
字段用于筛选库的名字,details.installer.name
字段用于筛选安装方式,这里我们只看通过pip
安装的。
运行这段代码之前,我们需要先设置一个环境变量GOOGLE_APPLICATION_CREDENTIALS='刚才那个 JSOn 文件的绝对路径'
。设置完成以后运行代码,就能把每天使用 pip 安装 GNE 的人数显示出来了。
在上面代码的 notify
函数中,我直接打印了 message 参数。但实际使用中,我把这个运算结果通过 Telegram 每天早上9点发送给我,运行效果如下图所示: