前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

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带你在朋友圈环球旅行相关推荐

  1. python 爬取微信朋友圈的一些信息

    一.工具:使用python 3.6 自带的编辑器IDEL,在命令行可以正常运行. 二.此程序用到的一些库和包: (1)itchat:itchat是一个开源的微信个人号接口,可以登录微信账号:点击打开链 ...

  2. Python数据 分析微信朋友圈

    个人兴趣爱好,通过python对微信朋友圈进行了分析,主要对微信好友进行提取,对好友地区分布,签名等进行可视化 需要安装包如下: pip3 install itchat pip3 install pa ...

  3. python微信朋友圈刷图_10分钟用Python做个微信朋友圈抽奖九宫格

    最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 哈哈,笑出猪叫!这个玩法利用了朋友圈发长图会显示中间局部的设定,搞笑之余也为朋友圈广告营销贡献了新思路. 制作图的过程也不复杂,长图对应部分设计好 ...

  4. 利用python深度分析微信朋友圈好友

    最近看了wxpy这个包,感觉还不错,分析一下微信的好友. 分析的目的: 1.看看好友的性别占比.地域分布 2.分析好友的个性签名 3.对好友的签名进行情感分析 环境:python 3.6 需要的包wx ...

  5. python抓取微信朋友圈动态_2018最全如何利用Python网络爬虫抓取微信朋友圈的动态...

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...

  6. Python编程:朋友圈看起来太low?教你用python实现高逼格朋友圈

    小编今天要给大家介绍一个Python库: PIL(Python Image Library) 下面我们用一个实际的例子 看看50行python代码可以做什么神奇的事情 这是小编发的一个朋友圈 切图前是 ...

  7. Python爬取微信朋友圈 ! 让屏蔽你的女神无处可躲 ?

    接下来,我们将实现微信朋友圈的爬取. 如果直接用 Charles 或 mitmproxy 来监听微信朋友圈的接口数据,这是无法实现爬取的,因为数据都是被加密的.而 Appium 不同,Appium 作 ...

  8. python数据挖掘分析微信朋友圈(调用itchat库)

    参考https://blog.csdn.net/qinyuanpei/article/details/79360703,基于python3.6实现微信朋友圈性别.地区.个性签名.头像四个维度的分析. ...

  9. 用Python助女神发朋友圈

    爱美是人类的天性,特别是女性.她们不仅喜欢打扮自己,还喜欢晒圈儿分享美好的事物.今天就教大家一个朋友圈晒图利器--切割图片. 目标需求 我们要做的就是将一张完整的图片分割成9张小图片,制作成朋友圈九宫 ...

  10. 利用Python网络爬虫成为朋友圈内斗图小高手

    [一.项目背景] 你是否在寻找可以与高手斗图的应用? 你是否在寻找可以自制表情的应用?你是否在寻找最全.最爆笑的表情库? 斗图网是一个收集了成千上万的撕逼斗图表情包,在这里你可以快速找到想要的表情, ...

最新文章

  1. 【Java学习笔记之十】Java中循环语句foreach使用总结及foreach写法失效的问题
  2. maven 安装下载与配置 代理设置 《解决下载慢问题》
  3. R语言ggplot2可视化:ggplot2可视化两个水平条形图(horizontal)、并设置两个条形图使用共享的X轴、使用类似population pyramid可视化的方式绘制共享X轴的水平条形图
  4. 从hello server开始,到hello client结束
  5. python爬取js加载的数据_Python爬虫学习,记一次抓包获取js,从js函数中取数据的过程...
  6. sql语法中 什么值需要用单引号‘’修饰?
  7. JZOJ 5460. 【NOIP2017提高A组冲刺11.7】士兵训练
  8. java中ThreadLocal的使用
  9. Shareplex 错误 can't open or read object cache file
  10. java B2B2C Springcloud多租户电子商城系统-Spring Cloud Sleuth
  11. java学习(151):字节输出流
  12. mysql权重怎么配置_mysql如何按权重查询数据啊?
  13. JAVA 中转义符的理解
  14. 求职时,我问过的问题
  15. STM32串口通信UARTx
  16. 电工模拟接线软件 app_电气工程师手机必备APP
  17. 2021年最新Java学习路线图指南
  18. java——7个小案例
  19. 微信小程序之自定义计时器
  20. PS自用(抠图、调色)

热门文章

  1. catia投图只投外轮廓线_catia作图小技巧
  2. 推荐一个谷歌浏览器去广告插件
  3. 西门子plc 用c语言编程,西门子PLC常用指令举例
  4. 西门子atch指令详解_西门子PLC指令集.PDF
  5. Docker Desktop 安装使用教程
  6. Solaris 查看系统信息命令
  7. 前端 - base64原理浅析
  8. Faster RCNN 中的Anchor
  9. 常用破解教程仅供参考,仅供学习用途
  10. cpu压测 windows_怎么用AIDA64进行CPU压力测试?