php录音时长统计,音频app阅读时长统计分析
描述
分析学习喜马拉雅app阅读时长统计机制,并应用到自己app中去
分析
使用抓包工具charles观测app统计发送时机,发现切换音频源,或本地缓存有阅读数据进入首页app时发送(nyx/v2/track/statistic/android)
image
播放过程中,查看本地播放时长记录,发现每隔一段时间向本地SharePreferences保存阅读时长数据,并且发现mListenedDuration大概每隔5秒变化一次,切换音频发送成功后,本地缓存相应条目被删除
adb shell cat /data/data/com.ximalaya.ting.android/shared_prefs/uploaders_com.ximalaya.ting.android\:player.xml
播放过程中,杀掉进程。后重启会发送本地缓存的记录,并清除本地条目
音频播放及切换音频源本地缓存数据变化
读取本地播放时长记录
使用代码代替adb shell cat /data/data/com.ximalaya.ting.android/shared_prefs/uploaders_com.ximalaya.ting.android:player.xml mListenedDuration每个5秒观测动作
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import datetime
import json
import time
def fenxi():
cmd = "adb shell cat /data/data/com.ximalaya.ting.android/shared_prefs/uploaders_com.ximalaya.ting.android\:player.xml"
timeStr = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# time = datetime.datetime.strptime(string,'%Y-%m-%d %H:%M:%S')
print("*" * 50 + "start:" + timeStr)
f = os.popen(cmd)
if f:
content = f.read()
# print(content)
content = content.replace(""", '"')
# print(content)
startIndex = content.find("[{")
endIndex = content.rfind("}]")
if startIndex != -1 and endIndex != -1:
# print(startIndex, endIndex)
content = content[startIndex:endIndex + 2]
# print(content)
jsonContent = json.loads(content)
# print(jsonContent)
for ct in jsonContent:
# print(ct)
mListenedDuration = ct.get('xmPlayRecord').get('mListenedDuration')
mSendDataTime = ct.get('xmPlayRecord').get('mSendDataTime')
mDuration = ct.get('xmPlayRecord').get('mDuration')
mStartTime = ct.get('xmPlayRecord').get('mStartTime')
mStartedPosition = ct.get('xmPlayRecord').get('mStartedPosition')
playUrl = ct.get('xmPlayRecord').get('playUrl')
mPlaySource = ct.get('xmPlayRecord').get('mPlaySource')
# timeArray = time.strptime(mStartTime, "%Y-%m-%d %H:%M:%S")
print("mListenedDuration=%s"%mListenedDuration)
print("mDuration=%s"%mDuration)
print("mSendDataTime=%s"%mSendDataTime)
print("mStartTime=%s"%mStartTime)
print("mStartedPosition=%s"%mStartedPosition)
print("playUrl=%s"%playUrl)
# print("mPlaySource=%s"%mPlaySource)
else:
print("无数据")
timeStr = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print("*" * 50 + "end:" + timeStr)
print("\n" * 2)
# nyx/v2/track/statistic/android
def main():
while True:
fenxi()
time.sleep(3)
if __name__ == "__main__":
main()
观测终端输出结果
**************************************************start:2018-09-29 15:27:10
mListenedDuration=9
mDuration=9
mSendDataTime=0
mStartTime=1538206021312
mStartedPosition=0
playUrl=http://audio.xmcdn.com/group36/M02/0E/9D/wKgJUlo3b7aiMSvIANicyKRiMZ4986.m4a
**************************************************end:2018-09-29 15:27:10
**************************************************start:2018-09-29 15:27:13
无数据
**************************************************end:2018-09-29 15:27:14
**************************************************start:2018-09-29 15:27:17
mListenedDuration=0
mDuration=0
mSendDataTime=0
mStartTime=1538206035483
mStartedPosition=0
playUrl=http://audio.xmcdn.com/group31/M0B/6C/F8/wKgJX1mG0w-Q7DXpAM_ILYxT6gU048.m4a
**************************************************end:2018-09-29 15:27:17
**************************************************start:2018-09-29 15:27:20
mListenedDuration=5
mDuration=5
mSendDataTime=0
mStartTime=1538206035483
mStartedPosition=0
playUrl=http://audio.xmcdn.com/group31/M0B/6C/F8/wKgJX1mG0w-Q7DXpAM_ILYxT6gU048.m4a
**************************************************end:2018-09-29 15:27:20
分析结果
image
php录音时长统计,音频app阅读时长统计分析相关推荐
- android 统计app使用时间,android开发之app在线时长统计sdk开发
引言: 很多app的在线时长统计都是通过在activity的生命周期中埋点来完成的.我这里既然是封装成sdk,当然就不能这样来了.封装sdk的规则,我想大家都清楚,入参尽量少,回调尽量全,权限尽量不要 ...
- Android 获取 App 累积时长
code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者:淮左明都 链接:https://www.jianshu.com/p/ec8627fe3fd7 声明:本文已获淮左 ...
- 如何估算文章阅读时长?
简评:包括 Medium 在内的很多阅读类网站或 App 都有阅读时长的提示,那么这个数值是怎么来的呢? 早些时候,阅读类平台还在野蛮生长. Medium 的工程师写着代码的同时,也在阅读自家平台上的 ...
- Hexo(sakura)文章增添字数统计和阅读时长功能
文章目录 一.文章增添字数统计和阅读时长功能 1. 安装hexo-wordcount 2. 文件配置(3步) 二.修复作者头像和链接显示问题 一.文章增添字数统计和阅读时长功能 1. 安装hexo-w ...
- 如何估算文章阅读时长? 1
简评:包括 Medium 在内的很多阅读类网站或 App 都有阅读时长的提示,那么这个数值是怎么来的呢? 早些时候,阅读类平台还在野蛮生长. Medium 的工程师写着代码的同时,也在阅读自家平台上的 ...
- java 读取音频/视频 文件时长
java 读取音频/视频 文件时长 支持mp3,mp4,mov,m4a,wav 格式文件 源码 https://github.com/opensourceteams/java-maven-projec ...
- JS获取音频的总时长,解决Audio元素duration为NaN || Infinity 问题
当我们在加载一个线上mp3地址或者获取audio的duration的时候,会发现有拿到duration是Infinity的情况,这时如果我们动态的展示录音时间时候就会有问题.首先明确一下这是chrom ...
- HTML5停留时长统计,平均停留时间
本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 这个指标由于其看上去是一个很容易理解的度量指标(不就是访客在这浏览这个网站时花了多少时间吗).因此不少管理人员特别是其他非网站 ...
- 2021-09-10 java 读取音频/视频 文件时长
java 读取音频/视频 文件时长 pom.xml <dependency><groupId>org</groupId><artifactId>jaud ...
最新文章
- 22岁天才少女加入华为俄罗斯研究院,曾获「编程界奥赛」冠军
- C++知识点39——运算符的重载概念与分数类实现(上)
- C ++中线程的简单示例
- 【CASS精品教程】Win7+CAD2008+CASS9.1(含CASS3D)完美安装教程(附完整软件安装包下载)
- java 向上舍入_介绍Java的大数类(BigDecimal)和八种舍入模式
- 程序员的代码写的再牛也没有马伊琍文章的分手语牛!
- 2678v3支持内存频率_电脑内存条用来干什么呢,怎么看参数?
- Linux之shell编程的shell工具
- istio:灰度发布与AB测试
- 字节架构师:来说说 Kafka 的消费者客户端详解,你都搞懂了吗?
- DEDE源码分析与学习之三: member/archives_add_action.php文件解读
- windowns下VS缺少头文件“unistd.h“的解决方案
- Git内部原理之深入解析环境变量
- windows不安装虚拟机如何使用Linux系统作为开发工具?
- java毕业设计项目基于JavaWeb酒店管理系统开发与设计
- Qt QPlainTextEdit和QTextEdit区别
- plantuml中如何加颜色
- ​区块链技术的重要性
- win98系统只能进安全模式的解决方法
- VS中使用QT,多国语言翻译问题