我一直在目录结构中将jpeg保存到seaweedfs
Camera-name/recordings/year/month/day/hour/minutes_seconds_000.jpg
我正在phoenix
创建一个删除端点,我已经写了一个def
,它给了我2个日期范围内所有可用的jpeg,带有时间戳。例如,如果用户选择开始日期为1525046400
(30-04-2018),结束日期为1525737599
(07-05-2018),则该方法会给我详细信息
{"snapshots":[{"notes":"Evercam Proxy","motion_level":null,"created_at":1525042801},{"notes":"Evercam Proxy","motion_level":null,"created_at":1525042803},{"notes":"Evercam Proxy","motion_level":null,"created_at":1525042805},{"notes":"Evercam Proxy","motion_level":null,"created_at":1525042807}]}
如果我从snapshots
获取第一个对象及其created_at
日期,请在将上述seaweedfs
目录结构视为
directory_path =
timestamp
|> Calendar.DateTime.Parse.unix!
|> Calendar.Strftime.strftime!("%Y/%m/%d/%H/%M_%S_000.jpg")
"#{seaweedfs}/#{camera_exid}/snapshots/recordings/#{directory_path}"
这将为我提供文件系统中JPEG的直接链接。我可以通过
删除它hackney = [pool: :seaweedfs_download_pool, recv_timeout: 30_000_000]
HTTPoison.delete!("#{url}?recursive=true", [], hackney: hackney)
这是问题所在。如果我在两个日期范围之间获取快照,并且日期范围超过一小时。或整整一个小时。或者一天。或一个月。然后我可以选择删除目录,完整目录而不是jpeg。但我不知道通过哪种逻辑,我可以做到。
例如:从快照对象中收集所有created_at
。然后先将它们分组,所有时间都在同一小时,然后计算是否整整一个小时。然后分别删除小时目录而不是每个文件,就像创建一整天后分组创建日期,然后删除一天而不是每小时一样。或单独提交。
它有点混乱的问题,但我不是要求手写的解决方案,而是建议,如果你正在解决它,你会做谁?