根据日期灵药

时间:2018-05-07 06:32:16

标签: elixir phoenix-framework

我一直在目录结构中将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。然后先将它们分组,所有时间都在同一小时,然后计算是否整整一个小时。然后分别删除小时目录而不是每个文件,就像创建一整天后分组创建日期,然后删除一天而不是每小时一样。或单独提交。

它有点混乱的问题,但我不是要求手写的解决方案,而是建议,如果你正在解决它,你会做谁?

0 个答案:

没有答案