代码之家  ›  专栏  ›  技术社区  ›  Besi

Python程序Airnef在下载图像时卡住了

  •  9
  • Besi  · 技术社区  · 6 年前

    Airnef

    我可以下载一个图片没有问题,所以整个设置似乎工作。然而,一旦我想下载另一个图像软件挂起。代码在我看来相当复杂。

    两个月前我发帖了 a thread

    我从命令行启动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
    相机型号佳能EOS 200D,序列号XXXXXXXXX

    现在艾尔内夫告诉我:


    我拍了一张照片,它会按预期下载:

    Airnef随后显示了有关此图像的更多信息:

    我又拍了一些照片,但没有下载,软件在提示时卡住了:

    正在等待从相机下载实时照片。按退出\

    源代码可以在Airnef网站上找到。我创建了一个github存储库来解决这个问题: https://github.com/besi/airnef

    airnefcmd.py:3203

    更新:论坛帖子

    这是到 forum post on testcams.com

    更新:调试

    第一张图片叫做IMG_ 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:
    

    当拍摄新照片时,同样的过程再次发生。

    1 回复  |  直到 6 年前
        1
  •  2
  •   CristiFati    4 年前

    我没有兼容的相机,所以我的答案完全基于日志(在 调试 模式)发布在论坛上。

    ...
    
    filename = DCIM\100CANON\IMG_0182.JPG
    captureDateSt = 20180926T071747
    modificationDateStr= 20180926T071748
    Download history file “/Users/besi/Library/Application Support/airnef/appdata/Canon EOS 200D-SN59074c1578e347a3bf1f6f85e8dec624-downloadhist” loaded – 53 entries
    >> MTP_OP_GetObject
    Downloading “IMG_0182.JPG”: 0%IMG_0182.JPG – downloading next piece, offset=0x0, count=0x100000
    
    ...
    
    filename = DCIM\100CANON\IMG_0183.JPG
    captureDateSt = 20180926T071759
    modificationDateStr= 20180926T071758
    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:
    
    ...
    

    如处理2时所示 文件( IMG_0183.JPG 一个( IMG_0182.JPG ),触发一切被抛弃。

    浏览 [TestCams]: airnef - Wireless download from your Nikon Camera! ,其中一个命令行参数(实际上,我建议的还有更多)引起了我的注意:
    ,我建议 (因此,覆盖默认值)。显然,这是主要的问题。
    另一部分是 --转让订单最新 . 默认情况下,在 实时下载 模式,设置为 最老的 (见下文)。删除(或冗余指定) --转让订单最早

    结论

    为了解决这个问题,有两件事是必须的 内核命令行 s代表 ):

    • 指定
    • 删除 --转让订单最新

    根据 [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
    

    我认为这是一个错误 艾尔内夫 --转让订单

    • 代码: --转让订单 实时
    • 博士 :指定 --转让订单最新 实时 模式
    推荐文章