30 lines
1.1 KiB
Elixir
30 lines
1.1 KiB
Elixir
defmodule Mix.Tasks.SystemBooster.Cron do
|
|
use Mix.Task
|
|
|
|
def run(args) do
|
|
Application.ensure_all_started(:hackney)
|
|
app = Application.get_env(:systembooster, :app)
|
|
oauth = Application.get_env(:systembooster, :oauth)
|
|
conn = Hunter.new(base_url: app[:base_url], bearer_token: oauth[:token])
|
|
|
|
conn
|
|
|> Hunter.Api.HTTPClient.list_timeline(
|
|
Application.get_env(:systembooster, :list)[:list_id],
|
|
[]
|
|
)
|
|
|> Enum.filter(fn x ->
|
|
x.reblogged == false and x.visibility in ["public", "unlisted"]
|
|
end)
|
|
|> Enum.reverse()
|
|
|> Enum.map(fn x -> Hunter.reblog(conn, x.id) end)
|
|
|> case do
|
|
[] -> "Up to date"
|
|
x -> x |> Enum.count() |> (fn x -> "updated #{x} statuses" end).()
|
|
end
|
|
|> IO.puts()
|
|
end
|
|
end
|
|
|
|
# realapp = %Hunter.Application{client_id: app[:client_id], client_secret: app[:client_secret], id: app[:app_id]}
|
|
# Enum.map(Enum.reverse(Enum.sort_by(Enum.filter(list, fn (x) -> x.reblogged == false and (x.visibility == "public" or x.visibility == "unlisted") end),fn x -> x.id end)), fn x -> Hunter.reblog(conn, x.id) end)
|