我正在使用Airnef通过python从佳能DSLR相机下载图片。
我可以下载一张图片而不会出现问题,因此整个设置似乎可以正常工作。但是,一旦我要下载其他镜像,软件就会挂起。对我来说,代码看起来很复杂。
两个月前,我确实在TestCams.com上发布了a thread。由于我没有得到回应,因此我将其发布为与Python相关的问题。
线程
我从命令行启动airnef。
python airnefcmd.py --ipaddress 192.168.188.84 --action getfiles --realtimedownload only --downloadexec open @pf@ --transferorder newestfirst --outputdir "/Users/besi/Desktop"
我连接了相机,并看到一些有关连接的信息:
现在airnef告诉我:
我拍了一张照片,并按预期下载了它:
然后,Airnef显示有关此图像的更多信息:
我拍了一些照片,但没有下载,并且该软件停留在提示符下:
源代码
源代码可在Airnef网站上找到。我创建了一个github存储库来解决此问题:https://github.com/besi/airnef
代码被卡住的地方是airnefcmd.py:3203
更新:论坛帖子
这是forum post on testcams.com的链接
更新:调试
第一张图片成功命名为IMG_0182 was downloaded。
在调试输出中,我可以看到正在拍摄一张新照片,但是由于先前的图像已经下载,因此下载被跳过了:
参见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:
现在,我们再次进入循环等待更多图片。
拍摄新照片时,相同的步骤会再次发生。
最佳答案
我没有兼容的相机,因此我的回答仅基于论坛上发布的日志(以“调试”模式)。另外,在其中一项评论中,它是一个反复试验的建议,因此它不是“科学”方法(在其中找出原因,然后加以解决)。
为了得出这个答案,需要一个团队(@Besi和我)进行努力(功劳应相应地分配)。
根据日志,这两种文件的处理方式有所不同:
从处理第二个文件(IMG_0183.JPG)时可以看出,第一个文件(IMG_0182.JPG)的存在会触发一切被放弃。
浏览命令行参数之一[TestCams]: airnef - Wireless download from your Nikon Camera!(实际上,我还建议更多)引起了我的注意: --rtd_mtppollingmethod_newobjdetection ,我建议指定numobjs(因此覆盖默认值)。显然,这是(主要)问题。另一部分是 --transferorder newestfirst 的存在。默认情况下,在实时下载模式下,它设置为最早的优先(请参见下文)。删除它(或多余地指定 --transferorder oldestfirst )就可以了。
结论
为了解决此问题,需要做两件事(就airnefcmd.py的cmdline args而言):
根据[GitHub]: besi/airnef - (master) airnef/airnefcmd.py#3403:
g.args['transferorder'] = 'oldestfirst' # so that downloadMtpFileObjects() will properly enumerate through multiple realtime images as we add them
我认为这是airnef方面的错误(关于--transferorder)。它位于关于Python程序Airnef在下载图像时卡住了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52457112/