Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix binary data carriage return error #325

Merged
merged 12 commits into from
Jan 1, 2018
Merged

Conversation

gaieepo
Copy link
Contributor

@gaieepo gaieepo commented Dec 31, 2017

adb shell 会转换\n 为\r\n 所以这个if条件内部状态应该适用于所有平台 请测试linux系统下的表现

@F-loat
Copy link
Contributor

F-loat commented Dec 31, 2017

@wangshub @binderclip @simpleton 你们有谁是用linux的吗

@F-loat
Copy link
Contributor

F-loat commented Dec 31, 2017

有条件的朋友也可以测试下直接执行下面的命令能否获取到截图

Linux下标准导出:
adb shell screencap -p | sed 's/\r$//' > autojump.png

Mac下标准导出
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > autojump.png

@F-loat
Copy link
Contributor

F-loat commented Dec 31, 2017

分平台用不同的方式获取倒也ok

@LisonFan
Copy link

LisonFan commented Dec 31, 2017

=====
Screen: Physical size: 1080x1920
Density: Physical density: 480
DeviceType: M2 E
=====
List of devices attached
xxxxxxx   device

Traceback (most recent call last):
  File "wechat_jump_auto.py", line 234, in <module>
    main()
  File "wechat_jump_auto.py", line 221, in main
    im = Image.open('./autojump.png')
  File "C:\Users\LisonFan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\PIL\Image.py", line 2572, in open
    % (filename if filename else fp))
OSError: cannot identify image file './autojump.png'

adb 没问题,手动截图也能保存到电脑
感觉是本程序保存截图到电脑的问题。

暂时用 #310 解决

@wangshub
Copy link
Owner

@F-loat 我在Linux下面测试adb shell screencap -p | sed 's/\r$//' > autojump.png,读上来的图片,无法打开。

@F-loat
Copy link
Contributor

F-loat commented Dec 31, 2017

@wangshub 网上查到的基本都是这个命令啊😯

@gexinworks
Copy link
Contributor

@F-loat linux 同样无法打开

@gexinworks
Copy link
Contributor

@F-loat 说不是一个png文件

@F-loat
Copy link
Contributor

F-loat commented Dec 31, 2017

@wjzhangcsu 文件大小不为0的话,多半是换行符的问题

@F-loat
Copy link
Contributor

F-loat commented Dec 31, 2017

sed 命令我不太熟,参数是正则吗,linux那个是把 \r 也删除了?

@wangshub
Copy link
Owner

oh,no,我也不太熟这个

@wangshub
Copy link
Owner

wangshub commented Dec 31, 2017

找到了! adb shell screencap -p | perl -pe 's/\x0D\x0D\x0A/\x0A/g' > screen2.png @F-loat
在linux下面,谁试试,我这边ok

@gexinworks
Copy link
Contributor

@wangshub 不行哦 PNG file corrupted by ASCII conversion

@gexinworks
Copy link
Contributor

翻墙出去google看看吧,我linux翻不出…

@wangshub
Copy link
Owner

不知道哪里问题,我是这样的
screen3

@F-loat
Copy link
Contributor

F-loat commented Dec 31, 2017

@wjzhangcsu 翻墙我自己搭了个ss服务器,但是只开了ipv6的,有需要吗

@wangshub
Copy link
Owner

@F-loat @wjzhangcsu
我找到了 adb exec-out screencap -p > test.png测试可以,谁能试试

@gexinworks
Copy link
Contributor

@F-loat 暂时先不要,我试试我另外一台电脑,好像是装了firefly 的……

@wangshub
Copy link
Owner

试试V2ray,速度不错

@gexinworks
Copy link
Contributor

gexinworks commented Dec 31, 2017

@wangshub ,这次我这边是图像载入失败,我这是ubuntu14.04,Android Debug Bridge version 1.0.31,虽然生成了图片,但是我adb 下面没有看到exec-out,这是个device command?

@F-loat
Copy link
Contributor

F-loat commented Dec 31, 2017

我流量每次都剩好多。。 @wangshub 那个命令windows也可以执行,但是是文本的形式,改了换行符也不行,折腾好久才实现windows上直接保存的,没想到linux还不兼容🙃

@gaieepo
Copy link
Contributor Author

gaieepo commented Dec 31, 2017

@F-loat @wangshub 试一试
adb shell screencap -p | sed 's/\r\n$/\n/' > autojump.png

@F-loat
Copy link
Contributor

F-loat commented Dec 31, 2017

你们调试可以把字节码输出看下,然后和正常截图保存下来的对比看有什么不一样

@gaieepo
Copy link
Contributor Author

gaieepo commented Dec 31, 2017

@F-loat 之前那个sed是吧\r结尾的删掉 应该有一点点的问题 我放的这个是吧\r\n换成\n 只是我的linux没adb目前 谁可以试一试 @wjzhangcsu

@wangshub
Copy link
Owner

@gaieepo 你的这条,我在linux下可以,ubuntu 16.04 x64

@gexinworks
Copy link
Contributor

@gaieepo PNG file corrupted by ASCII conversion,是不是我电脑问题。。。。。

@126g
Copy link

126g commented Dec 31, 2017

win10 64 py3.6
亲测 adb exec-out screencap -p > autojump.png可以

@KitGavinx
Copy link

Traceback (most recent call last):
File "wechat_jump_auto.py", line 234, in
main()
File "wechat_jump_auto.py", line 221, in main
im = Image.open('./autojump.png')
File "D:\Root\Python36\lib\site-packages\PIL\Image.
% (filename if filename else fp))
OSError: cannot identify image file './autojump.png'

window 7 要怎么改?

@wangshub wangshub mentioned this pull request Jan 1, 2018
@andrewforxcf
Copy link

adb shell /system/bin/screencap -p /sdcard/jp/1.png ,我在dos用命令行输入这个命令 可以正常运行,也能找到并打开截图,但是在代码里面用os.system()返回值,却是1。我是win10+python3.6,跟手机权限有关吗?

@F-loat
Copy link
Contributor

F-loat commented Jan 1, 2018

可以再把一些有效的命令加在 pull_screenshot 函数里,这样只要有一个方法能成功获取到截图就ok,其实现在这个pr直接合并后,应该大部分人就都可以用了

@F-loat
Copy link
Contributor

F-loat commented Jan 1, 2018

大家可以按照目前这个pr的内容修改试下,这里

@F-loat
Copy link
Contributor

F-loat commented Jan 1, 2018

最新进展 gaieepo#2

@wangshub
Copy link
Owner

wangshub commented Jan 1, 2018

@gaieepo 可以合并了么?^_^

@wangshub wangshub merged commit a1c83f1 into wangshub:master Jan 1, 2018
@gaieepo
Copy link
Contributor Author

gaieepo commented Jan 1, 2018

@wangshub 抱歉 我并没有全测试 不过目测是包含了大多数问题的解决 可以先合并了 我们接下来再改 先让它能跑通

@wangshub
Copy link
Owner

wangshub commented Jan 1, 2018

已合并 @gaieepo

@shangyangyinjiu
Copy link

C:\Users\hp>pip install -r

Usage:
pip install [options] [package-index-options] ...
pip install [options] -r [package-index-options] ...
pip install [options] [-e] ...
pip install [options] [-e] ...
pip install [options] <archive url/path> ...

-r option requires 1 argument
到这步不下载 换镜像 也是这样

@binderclip
Copy link
Collaborator

@F-loat F-loat added the 讨论 label Feb 2, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.