UMEM:友盟统计自定义事件多应用一键同步 & 批处理工具

2022-02-20  本文已影响0人  _沉
UMEM:友盟统计自定义事件多应用一键同步 & 批处理工具

功能预览

点击预览线上部署的测试版本

前言

现有产品用的友盟统计。

免费版的友盟统计每个应用最多只能有500个有效的自定义事件,超过最大数量后如果想要新增,则需要先暂停一些不常用或者已废弃的自定义事件才行。在友盟官网,是有“批量暂停”操作的,但其“批量暂停”跟“筛选功能”是分开的,导致我不能筛选符合自身需求的一些事件进行暂停。

其次,有的时候产品改版,功能描述可能发生变化,需要修改自定义事件的显示名称,想要修改友盟自定义事件显示名称的话,则需要一个id一个id地搜索,然后一个一个地修改。如果变更的自定义事件过多或者变更次数比较频繁,那这样机械的操作就挺繁琐的。虽然友盟官网有批量上传自定义事件功能,但是已存在的自定义事件id不会进行更新,而是被忽略掉,所以要想更新显示名称,还是得一个一个地查找才能更新。

另外,如果同一个产品有多个包名(多马甲),里面的自定义事件基本都是一样的,照上面所述情况,假如有功能差不多&自定义事件一致的应用A、应用B、应用C,则需要机械地来回操作多次,这真是一件耗时耗力的事情,一次两次还好,但如果操作次数多了,每次都需要繁琐的打开官网进行一些必要而枯燥的操作,心里总会有一些马儿在奔腾。

所以,就上面遇到的问题,我多希望有个工具能够解决我的痛点,于是我发挥自己的强项:百度 & google & cv,不断输入“友盟批处理工具”、“友盟自定义事件批量管理”、“友盟助手”等关键词,翻了几页之后没有找到符合自己需求的工具,有些失望。后来我就想,要不自己写代码实现这样的批处理操作好了。于是我花了一天时间,分析友盟自定义事件操作api,写了一个python脚本,基本满足了自己的需求:

后面一段时间,我都是直接执行这个脚本来完成相应操作的。一开始自己还算比较满意,但是操作次数多了,感觉还是比较繁琐(人的欲望与需求总是无穷无尽啊),因为有时候友盟那边的cookie失效了,还得打开项目手动更新文件里面的配置项,另外就是筛选条件的配置项也得修改配置文件。所以我又想着,能不能自己写一个web管理页面呢(因为我现主业务是搞Android的)?结合自己的使用习惯再顺便加点功能。

于是我便开始web管理页面的开发了。取名 UMEM

技术选型

最早最早我想着用 Flask + html 来写的,主要我之前用Flask写过一些小api还算比较熟悉(只是熟悉简单应用,囫囵吞枣不精通)。不过最终还是选用了Django + vue3作为开发脚手架,这哥俩我也是第一次接触,由于只是要做个小工具,所以利用闲暇时间边学边做对于我来说也算是一举两得。而且vue的教程目前也很多,饿了么的element-plus(vue3) 提供的界面控件也很符合目前开发的需求。

开发历程

由于前面已经用python脚本实现了基本功能,所以在web端上,一开始我只是希望:

以上功能都逐一(通过各种搜索 & 各种cv)解决了,在后续开发进程中,由于需要操作的友盟应用还是需要自己手动输入key、友盟的cookie过期后还是得自己复制粘贴进行更新,所以自己继续追加了新需求:

第一个需求点容易处理,第二个需求点我一开始是想通过程序模拟请求友盟api来获取cookie,但是那样又需要账号密码,同时还得处理登录前的一个验证码校验,所以这个方案不太行。正好我看到一些谷歌浏览器插件可以更新cookie(一些可将文章批量更新各大平台的产品的附属插件),我便进行海量搜索&模仿着写一个符合自己需求的谷歌浏览器插件,这个插件能够一键更新友盟的cookie信息,于是便有了UMEM-友盟登录助手 一键更新配置,免去手动复制粘贴之劳形。点击下载插件

再后来,考虑到在局域网内部署供多人使用,于是追加了注册登录功能。

在功能都开发得差不多的情况下,我将程序打包为docker镜像,方便一键部署到本地或者远程服务器。

运行docker镜像

mkdir -p ~/umem/log
mkdir -p ~/umem/db
docker run -d \
-v /home/samge/umem/db:/app/db \
-v /home/samge/umem/log:/app/log \
-p 8000:8000 \
-p 9001:9001 \
--name umem \
--pull=always \
--restart always \
-e LANG=C.UTF-8 \
samge/umem:v1

访问

UMEM访问地址:http://localhost:8000

Supervisor管理页面:http://localhost:9001/

Supervisor账号:admin
Supervisor密码:admin

点击预览线上部署的测试版本
(请勿压测,建议使用 chrome浏览器,目前【任务管理】的socket连接不是并发的,如果多人同时访问可能需要排队等待,同时这是提供预览的,注册的账号后续可能会清除,尽量自己用docker部署到本地使用)

使用

相关截图

登录页umem_00 友盟key管理页umem_10 友盟key管理页-增删umem_11 友盟配置页umem_20 任务管理页umem_30 事件管理页umem_40 事件管理页-筛选umem_41 docker运行umem镜像-portainer管理页面umem_50

最后

目前 UMEM 只是一款个人开发的非常小众的小工具,没有大面积测试,在我自己电脑的谷歌浏览器中运行暂时没发现大的问题,符合个人需求。

如果刚好有类似需求(友盟自定义事件批处理)的同学,希望在正式使用前,先自行测试,符合自己需求后再正式使用,谨慎些总没错。

同时在使用的过程中如果有什么意见或者建议都可以在项目仓库里的 issues里提出来。

上一篇下一篇

猜你喜欢

热点阅读