使用Google Adsense api实现推送当天广告信息到TG

每天登陆Google Adsense查看收益有些麻烦,而平常用TG又比较多,所以尝试将每日收益推送到TG。效果如图。可以使用免费VPS Linuxone进行托管(参考本文)。

开启API并设置凭据

转到GCP创建项目,并新建API。

在API管理界面,创建凭据:

类型如下:

会提示要设置同意屏幕,这里随便设置即可。

应用类型选桌面:

创建完成后,选择下载:

将名称改为client_secrets.json留存。

配置python Client

Google Adsense API Example:GitHub项目地址

简要总结如下;

通过pip安装依赖:

pip install google-api-python-client
pip install google_auth_oauthlib

将项目中的adsense_util.pyget_all_accounts.py文件,以及刚才保存的client_secrets.json复制到工作目录下。(我这里重命名了一下)。

运行python get_all_accounts.py(或者python test.py)

按提示打开网页、复制authcode即可。

获取报告数据

复制项目中generate_report.py文件到工作目录运行。即可生成报告(默认的生成时间是2021年3月的报告),如果你那段时间有报告则会显示。若无则为空白,更改下图中起止时间即可。

但是现在还只是命令行输出,并且格式很丑,我们需要通过TG通知

配置TG通知

新建一个Bot,获取UserID和BotToken(参见此文章),向Bot发送start命令激活。

由于我们只需要一个简单的发送信息的命令,所以并不需要引入复杂的telegrambot库。只需用requests库即可。这里我提供修改后的文件

通过此链接下载修改后的generate_report.py文件。在第69、70行添加你的UserID和BotToken,保存。

配置cron job定时任务

添加定时任务,可能会要选择编辑器,直接默认即可。

crontab -e

添加以下命令,转到项目目录,运行脚本。

0 0 6/24 1/1 * ?  cd /home/linux1 ; python3 generate_report.py

重启cron

service cron restart

注意:不同用户的cronjob不同。在Linuxone下的,直接使用linux1用户无法运行cron restart命令(需要输入密码)。故推荐直接使用root用户编辑和运行。

已知出现的错误

网页授权错误

错误 400: redirect_uri_mismatch

将应用类型选成了web。改成桌面应用。

pip错误

ValueError: check_hostname requires server_hostname

开了代理,把代理关掉。

https://stackoverflow.com/questions/67297278/valueerror-check-hostname-requires-server-hostname

SSL错误

ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:997)

网络不行,用国外的服务器就好了。

https://stackoverflow.com/questions/33410577/python-requests-exceptions-sslerror-eof-occurred-in-violation-of-protocol

Windows Wget

wget 不保存文件

写全:

wget -Uri "https://raw.githubusercontent.com/googleads/googleads-adsense-examples/master/v2/python/adsense_util.py" -OutFil "adsense_util.py"

https://blog.csdn.net/chongminglun/article/details/102306762

python int 和 str

添加str(intvalue)

http://c.biancheng.net/view/4237.html

参考:

  1. https://developers.google.com/identity/protocols/oauth2?hl=zh-TW
  2. https://developers.google.com/adsense/management/reference/rest/v2/accounts.reports/generate
  3. https://github.com/googleads/googleads-adsense-examples/tree/master/v2/python
  4. https://blog.jialezi.net/?post=179
  5. https://segmentfault.com/a/1190000016897341