描述

分析学习喜马拉雅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阅读时长统计分析相关推荐

  1. android 统计app使用时间,android开发之app在线时长统计sdk开发

    引言: 很多app的在线时长统计都是通过在activity的生命周期中埋点来完成的.我这里既然是封装成sdk,当然就不能这样来了.封装sdk的规则,我想大家都清楚,入参尽量少,回调尽量全,权限尽量不要 ...

  2. Android 获取 App 累积时长

    code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者:淮左明都 链接:https://www.jianshu.com/p/ec8627fe3fd7 声明:本文已获淮左 ...

  3. 如何估算文章阅读时长?

    简评:包括 Medium 在内的很多阅读类网站或 App 都有阅读时长的提示,那么这个数值是怎么来的呢? 早些时候,阅读类平台还在野蛮生长. Medium 的工程师写着代码的同时,也在阅读自家平台上的 ...

  4. Hexo(sakura)文章增添字数统计和阅读时长功能

    文章目录 一.文章增添字数统计和阅读时长功能 1. 安装hexo-wordcount 2. 文件配置(3步) 二.修复作者头像和链接显示问题 一.文章增添字数统计和阅读时长功能 1. 安装hexo-w ...

  5. 如何估算文章阅读时长? 1

    简评:包括 Medium 在内的很多阅读类网站或 App 都有阅读时长的提示,那么这个数值是怎么来的呢? 早些时候,阅读类平台还在野蛮生长. Medium 的工程师写着代码的同时,也在阅读自家平台上的 ...

  6. java 读取音频/视频 文件时长

    java 读取音频/视频 文件时长 支持mp3,mp4,mov,m4a,wav 格式文件 源码 https://github.com/opensourceteams/java-maven-projec ...

  7. JS获取音频的总时长,解决Audio元素duration为NaN || Infinity 问题

    当我们在加载一个线上mp3地址或者获取audio的duration的时候,会发现有拿到duration是Infinity的情况,这时如果我们动态的展示录音时间时候就会有问题.首先明确一下这是chrom ...

  8. HTML5停留时长统计,平均停留时间

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 这个指标由于其看上去是一个很容易理解的度量指标(不就是访客在这浏览这个网站时花了多少时间吗).因此不少管理人员特别是其他非网站 ...

  9. 2021-09-10 java 读取音频/视频 文件时长

    java 读取音频/视频 文件时长 pom.xml <dependency><groupId>org</groupId><artifactId>jaud ...

最新文章

  1. 22岁天才少女加入华为俄罗斯研究院,曾获「编程界奥赛」冠军
  2. C++知识点39——运算符的重载概念与分数类实现(上)
  3. C ++中线程的简单示例
  4. 【CASS精品教程】Win7+CAD2008+CASS9.1(含CASS3D)完美安装教程(附完整软件安装包下载)
  5. java 向上舍入_介绍Java的大数类(BigDecimal)和八种舍入模式
  6. 程序员的代码写的再牛也没有马伊琍文章的分手语牛!
  7. 2678v3支持内存频率_电脑内存条用来干什么呢,怎么看参数?
  8. Linux之shell编程的shell工具
  9. istio:灰度发布与AB测试
  10. 字节架构师:来说说 Kafka 的消费者客户端详解,你都搞懂了吗?
  11. DEDE源码分析与学习之三: member/archives_add_action.php文件解读
  12. windowns下VS缺少头文件“unistd.h“的解决方案
  13. Git内部原理之深入解析环境变量
  14. windows不安装虚拟机如何使用Linux系统作为开发工具?
  15. java毕业设计项目基于JavaWeb酒店管理系统开发与设计
  16. Qt QPlainTextEdit和QTextEdit区别
  17. plantuml中如何加颜色
  18. ​区块链技术的重要性
  19. win98系统只能进安全模式的解决方法
  20. VS中使用QT,多国语言翻译问题

热门文章

  1. Python青少年等级考试实操题(二级)
  2. 2022.09青少年软件编程(Python)等级考试试卷(二级)
  3. 2021年秋季PAT乙级题解(C语言)
  4. LaTex 制作简历
  5. 数据中台技术汇 | CDP,线下零售顾客运营中台
  6. SIFT特征点提取及描述论文算法详解
  7. 2021年计算机类考研人数,2021考研报名人数最多的八大专业
  8. 一个让我用得很爽的个性导航h2w1.com
  9. epson r330语言设置_爱普生打印机使用方法 爱普生r330打印机故障
  10. TTCALL 网络电话