我正在使用Airnef通过 python 从我的佳能数码单反相机下载图片。
我可以毫无问题地下载一张图片,因此整个设置似乎可以正常工作。但是,只要我想下载另一个图像,软件就会挂起。对我来说,代码看起来很复杂。
两个月前,我确实在 TestCams.com 上发布了一个帖子。由于我没有得到回复,我将其作为与 python 相关的问题发布在这里。
线程
我从命令行启动 airnef。
python airnefcmd.py --ipaddress 192.168.188.84 --action getfiles --realtimedownload only --downloadexec open @pf@ --transferorder newestfirst --outputdir "/Users/besi/Desktop"
我连接了相机,我看到了一些关于我的连接的信息:
已建立到 192.168.188.84:15740
相机型号“Canon EOS 200D”,序列号“XXXXXXXXX”的连接</p>
现在airnef告诉我:
等待从相机下载实时照片。
按退出 |
我拍照并按预期下载:
下载“IMG_0084.JPG”:96%
Airnef 然后显示有关此图像的更多信息:
/Users/besi/Desktop/IMG_0084.JPG [大小 = 4,602,357] 在 1.94 秒内 (2.26 MB/s)
我又拍了一些照片,但没有下载,软件卡在提示符下:
等待从相机下载实时照片。按退出\
源代码
源代码可在 Airnef 网站上获得。我创建了一个 github 存储库来解决这个问题:https ://github.com/besi/airnef
代码卡住的地方在airnefcmd.py:3203
更新:论坛帖子
更新:调试
第一个名为 IMG_0182 的图像已成功下载 。
在调试输出中,我可以看到正在拍摄一张新照片,但由于先前的图像已经下载,因此跳过了下载:
请参阅airnef.log:433:
filename = DCIM\100CANON\IMG_0183.JPG
captureDateSt = 20180926T071759
modificationDateStr= 20180926T071758
找到了一个名为的新图像IMG_0183.JPG
。
Skipping IMG_0182.JPG - already downloaded this session
旧下载的图像似乎阻止了对当前图像的进一步处理。
Skipping 100CANON - object is not file - MTP_OBJFORMAT_Assocation (0x3001)
Skipping DCIM - object is not file - MTP_OBJFORMAT_Assocation (0x3001)
Waiting for realtime photos from camera to download. Press <ctrl-c> to exit -execMtpOp: MTP_OP_GetObjectHandles - CmdReq payload:
现在我们再次进入循环等待更多图片。拍摄新照片时,会再次发生相同的过程。