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

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

功能预览

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

  • 1、请勿压测,建议使用 chrome浏览器;
  • 2、目前【任务管理】的socket连接不是并发的(因为我比较菜...),如果多人同时访问可能需要排队等待,同时这是提供预览的;
  • 3、在线上预览版本注册的账号后续可能会清除,正式使用请用docker部署到本地;

前言

现有产品用的友盟统计。

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

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

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

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

  • 1、读取友盟自定义事件模板文件,存在则更新,不存在则插入;
  • 2、缓存友盟自定义事件列表到本地,根据筛选指定事件进行暂停操作,实现筛选并批量暂停;
  • 3、实现将“应用A”的自定义事件状态,批量复制(同步)到“应用B”、“应用C”上。

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

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

技术选型

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

开发历程

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

  • 1、操作更加便捷,比如上传自定义事件文件我想要简单的拖拽就行;
  • 2、执行友盟自定义任务事,希望及时看到相应的操作日志及进度;
  • 3、自定义事件有专门的筛选条件方便检索;

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

  • 1、希望直接从已有的友盟应用列表中选择需要操作的应用,而不是自己手动输入应用key;
  • 2、友盟的cookie能够一键更新,减少繁琐的复制粘贴操作;

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

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

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

运行docker镜像

  • 1、创建本地目录,用于挂载docker运行时的log目录、数据库(这小工具数据库目前使用的是sqlite3)
mkdir -p ~/umem/log
mkdir -p ~/umem/db
  • 2、运行 docker ( -e LANG=C.UTF-8 是解决python处理中文的问题, 这里的/home/samge/umem是对应宿主机的绝对路径,需要更换为上一步自己实际创建的本地目录 ):
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部署到本地使用)

使用

  • 1、注册账号登录
  • 2、进入“配置管理”页,配置友盟登录后的cookie等相关信息,这里可使用 UMEM-友盟登录助手 一键更新配置
  • 3、在“友盟key”页,选择需要操作的友盟应用
  • 4、配置完成,可进行测试/使用

相关截图

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

最后

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容