Current section

Files

Jump to
superls lib date_file.ex
Raw

lib/date_file.ex

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.files_index_from_tokens()
# |> dbg()
|> Enum.sort(sorter)
|> Enum.take(amount)
|> 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