defmodule DateFile do # require Logger # require Superls def search(merged_indexes, cmd) do {sorter, datetimer} = case cmd do "do" -> {fn {{a, _}, _}, {{b, _}, _} -> a.mtime < b.mtime end, & &1.mtime} "dn" -> {fn {{a, _}, _}, {{b, _}, _} -> a.mtime >= b.mtime end, & &1.mtime} "ro" -> {fn {{a, _}, _}, {{b, _}, _} -> a.atime < b.atime end, & &1.atime} "rn" -> {fn {{a, _}, _}, {{b, _}, _} -> a.atime >= b.atime end, & &1.atime} end amount = Superls.confirm_float_default(1000) merged_indexes |> Tag.reject_banned_tokens() |> Tag.files_index_from_tokens() # |> dbg() |> Enum.sort(sorter) |> Enum.take(amount) # |> Enum.map(fn {{a, path}, _} -> Path.join([path, a.name]) end) |> output_friendly(datetimer) # [{{%Lister.File{ # name: "The.Plague.Dogs.1982.1080p.BluRay.x265-RARBG/The.Plague.Dogs.1982.1080p.BluRay.x265-RARBG.mp4", # size: 1731829780, # mtime: 1603044974, # atime: 1692872991 # }, "/home/k/Vidéos"}, ["the", "plague", "dogs", "1982"]}|_rest] end def output_friendly(result, field) do for {{f, path}, _} <- result do # for {{file1, vol1}, {{file2, vol2}, _jaro, _tags}} <- result do # " - " <> # " - " <> (IO.ANSI.bright() <> Path.basename(f.name) <> IO.ANSI.reset() <> "\t" <> Lister.File.pretty_print_file_size(f.size) <> "\t" <> datetime_human_str(field.(f)) <> "\t" <> Superls.bgcolor_of_string(path) <> path <> "/" <> Path.dirname(f.name) <> IO.ANSI.reset()) |> IO.puts() end end def date_human_str(posix_time), do: posix_time |> DateTime.from_unix!() |> DateTime.to_date() |> Date.to_string() def datetime_human_str(posix_time), do: posix_time |> DateTime.from_unix!() |> DateTime.to_string() end