Python带你在朋友圈环球旅行
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
python免费学习资料以及群交流解答点击即可加入
1.目 标 场 景
出门旅行谁不爱呢?可是,现实中总有各种各样的原因让我们无法随时随地去往远方。比如没时间,比如长假景点人太多,比如穷
……尤其像现在这种特殊时期,“家里蹲”或许是更安全也更负责任的选择。
可是,偶尔看到朋友圈里别人在浪的照片,难免又心痒痒。那么今天,我就来分享一个S操作:利用 Python 带你实现一次 说走就走的环球旅行,完胜朋友圈摄影大赛。
2.准 备 工 作
在开始编写脚本之前,需要做如下准备工作:
1、一部 Root 后的 Android 手机
2、配置好 Android ADB 开发环境
3、Python 虚拟环境内安装 pocoui 依赖库
4、虚拟定位应用 FackLocation
5、选好一个景点,下载对应景点的一些照片,并准备一段装X的文字
3.编 写 代 码
一共分7个步骤来完成这次操作,分别是:通过位置拿到经度和纬度、开启虚拟定位服务、导入图片到手机相册、打开朋友圈、选择相册图片、编辑内容和选择地理位置、发布朋友圈。
首先第1步,利用 adb 命令拿到 FackLocation 和微信的应用包名和 LaunchActivity。
adb shell dumpsys activity | grep -i run
拿到应用包名和 LaunchActivity 之后,利用Airtest和Monitor工具可以非常方便的打开 FackLocation 应用、添加地理位置。
到达搜索界面之后,由于搜索的结果在 Monitor 下找不到。
因此,这里借助开发者选项内的 指针位置,拿到列表第一项的坐标,利用 adb 执行点击操作,既可以完成选择经纬度的操作。
def __mock_location(self):"""模拟定位:return:"""home()stop_app(package_name_location)start_my_app(package_name_location, activity_location)# 点击添加位置self.poco('com.lerist.fakelocation:id/fab').click()# 点击搜索self.poco('com.lerist.fakelocation:id/m_item_search').click()# 输入框输入目的地self.poco('com.lerist.fakelocation:id/l_search_panel_et_input').set_text(self.location)sleep(2)# 宽、高size = self.poco.get_screen_size()# 由于选择结果UI树查找不到,这里使用坐标来执行点击操作adb_click(500, 283)# 确定位置while self.poco('com.lerist.fakelocation:id/a_map_btn_done').exists():self.poco('com.lerist.fakelocation:id/a_map_btn_done').click()
第2步,通过元素文字内容来判断服务是否开启,如果没有开启,就通过一次点击操作,完成定位服务的开启。
def __start_mock(self):"""开启模拟位置:return:"""mock_element = self.poco('com.lerist.fakelocation:id/f_fakeloc_tv_service_switch')if mock_element.get_text() == '启动模拟':mock_element.click()# 等待启动模拟完成self.poco('com.lerist.fakelocation:id/f_fakeloc_tv_service_switch', text='停止模拟').wait_for_appearance()else:passprint('模拟已经开启')
第3步,把 PC 端的图片利用 adb push 命令导入到 手机相册目录下。
# 本地等待发送的图片
files = get_all_files('./image/')# 一共待发送的图片数目
self.image_num = 9 if len(files) > 9 else len(files)# 手机相册目录
phone_image_path = 'sdcard/DCIM/Camera/'# 一张一张图片导入到手机相册内
for file in files[:self.image_num]:exec_cmd('adb push %s %s' % (file, phone_image_path))
需要注意的是,导入图片后需要再发送一次刷新广播,相册中才能找到这些图片。
# 更新手机相册
exec_cmd('adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///%s' % phone_image_path)
第4步,同样是利用 Airtest 打开微信客户端,然后自动化跳转到朋友圈界面。
def __open_friend_circle(self):"""打开朋友圈:return:"""# 等待完全打开微信Appself.poco(text='微信').wait_for_appearance()self.poco(text='通讯录').wait_for_appearance()self.poco(text='发现').wait_for_appearance()self.poco(text='我').wait_for_appearance()print('微信完全打开')# 点击【发现】Tabself.poco('com.tencent.mm:id/djv', text='发现').parent().click()# 打开朋友圈self.poco('android:id/title', text='朋友圈').click()# 等待朋友圈动态加载完全self.poco('com.tencent.mm:id/eyx').wait_for_appearance()
第5步,从手机相册内选择图片。
手机相册的照片是按时间进行排序的,根据上面推送的图片数目,选择相册的前面的 具体数目 的照片即可。
# 选择指定数目的照片
cbs = self.poco('com.tencent.mm:id/ek8').offspring('com.tencent.mm:id/bwn')index = 0# 选中固定数目的照片
for cb in cbs:if index < self.image_num:cb.click()else:breakindex += 1# 确认选择图片
self.poco('com.tencent.mm:id/lm').click()
第6步,输入文字内容,并选择具体的位置。
由于虚拟定位刷新的不及时,为了保证位置的准确性,连续进行两次定位。
def __put_content_and_gps(self):"""输入内容和定位:return:"""# 输入朋友圈内容self.poco('com.tencent.mm:id/d3k').set_text(self.msg)# 定位的次数,一般需要两次location_count = 0# 点击定位图标while True:self.poco('com.tencent.mm:id/d0a', text='所在位置').click()# 等待搜索列表中有结果出现self.poco('com.tencent.mm:id/du7').wait_for_appearance()if location_count == 0:# 返回keyevent('BACK')location_count += 1else:# 排除ListView的前两项(不显示、市区),直接点击第三项(具体位置)self.poco('com.tencent.mm:id/dul').children()[2].click()break
第7步,拿到顶部的发布按钮,就可以 一键发布动态了。
比如,我在深圳就发了一条在北京看阅兵的朋友圈。
4.结 论
跟着上面的操作,就能实现全国任意一个景点,随时随地去玩这一骚操作。
Python带你在朋友圈环球旅行相关推荐
- python 爬取微信朋友圈的一些信息
一.工具:使用python 3.6 自带的编辑器IDEL,在命令行可以正常运行. 二.此程序用到的一些库和包: (1)itchat:itchat是一个开源的微信个人号接口,可以登录微信账号:点击打开链 ...
- Python数据 分析微信朋友圈
个人兴趣爱好,通过python对微信朋友圈进行了分析,主要对微信好友进行提取,对好友地区分布,签名等进行可视化 需要安装包如下: pip3 install itchat pip3 install pa ...
- python微信朋友圈刷图_10分钟用Python做个微信朋友圈抽奖九宫格
最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 哈哈,笑出猪叫!这个玩法利用了朋友圈发长图会显示中间局部的设定,搞笑之余也为朋友圈广告营销贡献了新思路. 制作图的过程也不复杂,长图对应部分设计好 ...
- 利用python深度分析微信朋友圈好友
最近看了wxpy这个包,感觉还不错,分析一下微信的好友. 分析的目的: 1.看看好友的性别占比.地域分布 2.分析好友的个性签名 3.对好友的签名进行情感分析 环境:python 3.6 需要的包wx ...
- python抓取微信朋友圈动态_2018最全如何利用Python网络爬虫抓取微信朋友圈的动态...
今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...
- Python编程:朋友圈看起来太low?教你用python实现高逼格朋友圈
小编今天要给大家介绍一个Python库: PIL(Python Image Library) 下面我们用一个实际的例子 看看50行python代码可以做什么神奇的事情 这是小编发的一个朋友圈 切图前是 ...
- Python爬取微信朋友圈 ! 让屏蔽你的女神无处可躲 ?
接下来,我们将实现微信朋友圈的爬取. 如果直接用 Charles 或 mitmproxy 来监听微信朋友圈的接口数据,这是无法实现爬取的,因为数据都是被加密的.而 Appium 不同,Appium 作 ...
- python数据挖掘分析微信朋友圈(调用itchat库)
参考https://blog.csdn.net/qinyuanpei/article/details/79360703,基于python3.6实现微信朋友圈性别.地区.个性签名.头像四个维度的分析. ...
- 用Python助女神发朋友圈
爱美是人类的天性,特别是女性.她们不仅喜欢打扮自己,还喜欢晒圈儿分享美好的事物.今天就教大家一个朋友圈晒图利器--切割图片. 目标需求 我们要做的就是将一张完整的图片分割成9张小图片,制作成朋友圈九宫 ...
- 利用Python网络爬虫成为朋友圈内斗图小高手
[一.项目背景] 你是否在寻找可以与高手斗图的应用? 你是否在寻找可以自制表情的应用?你是否在寻找最全.最爆笑的表情库? 斗图网是一个收集了成千上万的撕逼斗图表情包,在这里你可以快速找到想要的表情, ...
最新文章
- 【Java学习笔记之十】Java中循环语句foreach使用总结及foreach写法失效的问题
- maven 安装下载与配置 代理设置 《解决下载慢问题》
- R语言ggplot2可视化:ggplot2可视化两个水平条形图(horizontal)、并设置两个条形图使用共享的X轴、使用类似population pyramid可视化的方式绘制共享X轴的水平条形图
- 从hello server开始,到hello client结束
- python爬取js加载的数据_Python爬虫学习,记一次抓包获取js,从js函数中取数据的过程...
- sql语法中 什么值需要用单引号‘’修饰?
- JZOJ 5460. 【NOIP2017提高A组冲刺11.7】士兵训练
- java中ThreadLocal的使用
- Shareplex 错误 can't open or read object cache file
- java B2B2C Springcloud多租户电子商城系统-Spring Cloud Sleuth
- java学习(151):字节输出流
- mysql权重怎么配置_mysql如何按权重查询数据啊?
- JAVA 中转义符的理解
- 求职时,我问过的问题
- STM32串口通信UARTx
- 电工模拟接线软件 app_电气工程师手机必备APP
- 2021年最新Java学习路线图指南
- java——7个小案例
- 微信小程序之自定义计时器
- PS自用(抠图、调色)