今天给大家分享一篇有趣的文章,灵感来自于前几天与室友的聊天,他告诉我抖音可以实时显示人的在线情况,如下图:
只需要进入抖音消息框,然后进入用户聊天窗口,就可以看到上述在线状态了。
然后我灵机一动,是不是用python可以实时监测一个人全天的在线情况?
说干就干,决定先拿我室友“开刀”
1.逻辑分析
俗话说,磨刀不误砍柴工,做任何事之前,都要先把逻辑分析清楚,要不然只会事倍功半。
起初本来想用手机模拟器来操作,但是不幸的是手机模拟器不显示在线状态,没办法,只能把自己的心爱的手机贡献出来了。
首先用appium客户端打开抖音(关于appium的安装和使用,请参考之前的文章),配置如图:
点击start session:
点击“消息”元素:
再点击进入聊天窗口:
显示在线状态元素的id为:
com.ss.android.ugc.aweme:id/blc
那么,我们只需要在当前页面一直请求获取该元素的值就可以获取该好友的在线状态了,如果返回“在线”,则判该用户在线;否则,判为不在线。
2.Python代码撸起来
1.appium模块操控打开抖音
desired_caps = { "platformName": "Android", "deviceName": "MHA_AL00", "appPackage": "com.ss.android.ugc.aweme", "appActivity": ".main.MainActivity", "noReset": "true", "fullReset": "false" } server = 'http://localhost:4723/wd/hub' driver = webdriver.Remote(server, desired_caps)
2.依次点击进入消息列表、用户聊天窗
driver.find_element_by_xpath('//android.widget.TextView[contains(@text,"消息")]').click() time.sleep(1) driver.find_element_by_xpath('//android.widget.TextView[contains(@text,"女神的昵称")]').click()
3.获取在线状态和时间并保存
while True: status=driver.find_element_by_id('com.ss.android.ugc.aweme:id/blc').text strtime = time.strftime("%H:%M:%S", time.localtime(time.time())) if status=='在线': status='在线' else: status='不在线' wb = xlrd.open_workbook('1.xls') tabsheet = wb.sheets()[0] k = tabsheet.nrows #表格已有的行数 worksheet.write(k , 0, i['name']) # 酒店名字 worksheet.write(k , 1, i['addr']) # 酒店地址 time.sleep(60)
4.根据在线状态画出折线图
df = pd.read_excel('1.xls', encoding='gbk', usecols=['时间', '状态']) line = Line("折线图") line.add("在线状态", df['时间'], df['状态'], xaxis_rotate=45) line.render('折线图.html')
根据当代“恶臭”青年的生活习惯,睡前醒后十有八九是在刷抖音,所以可以推断出,室友今天是在9点20分左右醒的、23点左右睡的,看起来作息还是比较规律的。
总结
到此这篇关于如何使用python记录室友的抖音在线时间的文章就介绍到这了,更多相关python记录抖音在线时间内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
问题内容: 现在,我在框架中有一个中央模块,该模块使用模块产生多个进程。由于使用,因此存在模块级的多处理感知日志。根据文档,此记录器具有进程共享的锁,因此你不会通过同时写入多个进程来乱码内容(或任何文件句柄)。 我现在遇到的问题是框架中的其他模块不支持多处理。以我的方式看,我需要使这个中央模块上的所有依赖项都使用支持多处理的日志记录。在框架内这很烦人,更不用说框架的所有客户了。有我没有想到的替代方
问题内容: 我正在尝试用Python记录一个软件包。目前,我具有以下目录结构: 这棵树是开火的结果。在我没有评论,我有。 我的是: 在所有的文件中,我都有一个文档字符串,模块和。但是,在项目中运行时,我看不到任何文档。 问题答案: 这里是一个大纲: 在源文件中使用文档字符串记录您的软件包。 使用 sphinx-quickstart 创建一个Sphinx项目。 运行 sphinx-apidoc 生成
我已经尝试PostSharp AOP一段时间了。我能够设计简单的方面并很好地使用它们。但是我正在努力找到实现这个场景的最佳方法。 场景: > 在方法中记录开发人员指定的语句。 假设我构建了一个Apsect(LogMethodAspect),在进入和退出期间记录该方法。 但是,现在我想记录一条特定的语句。我希望此语句是同一日志的一部分。 选项: 创建另一个将记录参数的方面(LogStatementA
我想从 cosmos db 读取记录,并使用 python 更新 cosmos db 中的相同记录。 示例: 我想阅读上面的记录并将其更新为。 我发现很少链接,但似乎他们只创建或删除记录,而不是更新现有记录: 但无法获取如何更新现有记录。 在我的场景中,我想从cosmos db中读取所有记录并更新一些值。 我怎么能在python中做到这一点。
问题内容: 我试图了解Python中的线程。我看过文档和示例,但坦率地说,许多示例过于复杂,我难以理解它们。 你如何清楚地显示为多线程而划分的任务? 问题答案: 我将在下面进行总结-最终仅是几行代码: 这是以下内容的多线程版本: 描述 Map是一个很棒的小功能,是轻松将并行性注入Python代码的关键。对于那些不熟悉的人来说,地图是从Lisp等功能语言中提炼出来的。它是将另一个功能映射到序列上的功
问题内容: 默认情况下,使用以下格式打印: 其中638是毫秒。我需要将逗号更改为点: 要格式化时间,我可以使用: 但是,文档未指定如何设置毫秒格式。我已经找到了这个关于微秒的问题,但是a)我更喜欢毫秒,并且b)由于以下原因,以下内容在Python 2.6(我正在开发)上不起作用: 问题答案: 请注意,[ 克雷格·麦克丹尼尔(CraigMcDaniel)的解决方案显然更好。 这也应该工作: logg