У меня есть почти 100 тыс. Файлов в этом шаблоне.
["192.168.1.225_01_20190316070000734_TIMING.jpg",
"192.168.1.225_01_20190316071000736_TIMING.jpg",
"192.168.1.225_01_20190316072000736_TIMING.jpg",
"Camera_1_615696208_20190318075200317_TIMING.jpg",
"Camera_1_615696208_20190318080200322_TIMING.jpg",
"Camera_1_615696208_20190318082200326_TIMING.jpg",
"camera2_615696156_20190318080000375_TIMING.jpg",
"camera2_615696156_20190318081000377_TIMING.jpg",
"camera2_615696156_20190318093000394_TIMING.jpg"]
Они в основном на моем локальном диске, через который я делаю File.ls(@picture_directory)
все это картинки для 3 камер, которыеиметь идентификатор как
cameras = %{
"Camera_1_615696208_" => "nch1-zcpes",
"camera2_615696156_" => "nch2-zkhcy",
"192.168.1.225_01_" => "nch3-ipljs"
}
слева - префикс перед датой и временем ... а справа - идентификаторы.
Я пытаюсь сделать 3-tuple
,как это ..
[filename, datetime, indentifier]
, который должен быть в одном файле.
["192.168.1.225_01_20190316070000734_TIMING.jpg", "20190316070000734", "nch3-ipljs']
Я пробовал это до сих пор.
defmodule EvercamMedia.Nch do
@picture_directory "/home/junaid/Desktop/NCH"
def move do
cameras = %{
"Camera_1_615696208_" => "nch1-zcpes",
"camera2_615696156_" => "nch2-zkhcy",
"192.168.1.225_01_" => "nch3-ipljs"
}
File.ls!(@picture_directory)
|> Enum.sort
|> Enum.map(fn file ->
Enum.each(cameras, fn cam ->
{prefix, exid} = cam
with true <- String.contains?(file, prefix) do
datetime = file |> String.trim_leading(prefix) |> String.trim_trailing("_TIMING.jpg")
[file, datetime, exid]
else
_ -> :noop
end
end)
end)
end
end
но это тольковернуть список: ок ..