Remove finmoji and add a way to download emojis in packs

These packs are stored in a git repo on pleroma gitlab
This commit is contained in:
Ekaterina Vaartis 2019-04-17 23:54:09 +03:00
parent 6ca82c18a7
commit c26724cc55
130 changed files with 141 additions and 88 deletions
config
lib
mix/tasks/pleroma
pleroma
priv/static/finmoji
1000px
128px

View file

@ -100,8 +100,8 @@
shortcode_globs: ["/emoji/custom/**/*.png"],
groups: [
# Put groups that have higher priority than defaults here. Example in `docs/config/custom_emoji.md`
Finmoji: "/finmoji/128px/*-128.png",
Custom: ["/emoji/*.png", "/emoji/custom/*.png"]
Finmoji: ["/finmoji/128px/*-128.png", "/instance/static/emoji/finmoji/128px/*-128.png"],
Custom: ["/emoji/*.png", "/emoji/custom/*.png", "/instance/static/emoji/**/*.png"]
]
config :pleroma, :uri_schemes,

View file

@ -0,0 +1,98 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Mix.Tasks.Pleroma.Emoji do
use Mix.Task
@shortdoc "Manages Pleroma instance"
@moduledoc """
"""
defp fetch_manifest do
Tesla.get!("https://git.pleroma.social/vaartis/emoji-index/raw/master/index.json").body
|> Poison.decode!()
end
def run(["ls-packs"]) do
Application.ensure_all_started(:hackney)
manifest = fetch_manifest()
Enum.each(manifest, fn {name, info} ->
to_print = [
{"Name", name},
{"Homepage", info["homepage"]},
{"Description", info["description"]},
{"License", info["license"]},
{"Source", info["src"]}
]
for {param, value} <- to_print do
IO.puts(IO.ANSI.format([:bright, param, :normal, ": ", value]))
end
end)
end
def run(["get-pack", pack_name]) do
Application.ensure_all_started(:hackney)
manifest = fetch_manifest()
if Map.has_key?(manifest, pack_name) do
pack = manifest[pack_name]
src_url = pack["src"]
IO.puts(
IO.ANSI.format([
"Downloading pack ",
:bright,
pack_name,
:normal,
" from ",
:underline,
src_url
])
)
binary_archive = Tesla.get!(src_url).body
IO.puts("Unpacking #{pack_name} pack")
static_path = Path.join(:code.priv_dir(:pleroma), "static")
pack_path =
Path.join([
static_path,
Pleroma.Config.get!([:instance, :static_dir]),
"emoji",
pack_name
])
files_to_unzip =
Enum.map(
pack["files"],
fn {_, f} -> to_charlist(f) end
)
{:ok, _} =
:zip.unzip(binary_archive,
cwd: pack_path,
file_list: files_to_unzip
)
IO.puts("Wriring emoji.txt for the #{pack_name} pack")
emoji_txt_str =
Enum.map(
pack["files"],
fn {shortcode, path} -> "#{shortcode}, /instance/static/emoji/#{pack_name}/#{path}" end
)
|> Enum.join("\n")
File.write!(Path.join(pack_path, "emoji.txt"), emoji_txt_str)
else
IO.puts(IO.ANSI.format([:bright, :red, "No pack named \"#{pack_name}\" found"]))
end
end
end

View file

@ -14,6 +14,8 @@ defmodule Pleroma.Emoji do
"""
use GenServer
require Logger
@type pattern :: Regex.t() | module() | String.t()
@type patterns :: pattern() | [pattern()]
@type group_patterns :: keyword(patterns())
@ -79,96 +81,50 @@ def code_change(_old_vsn, state, _extra) do
end
defp load do
finmoji_enabled = Keyword.get(Application.get_env(:pleroma, :instance), :finmoji_enabled)
shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || []
static_path = Path.join(:code.priv_dir(:pleroma), "static")
emojis =
(load_finmoji(finmoji_enabled) ++
load_from_file("config/emoji.txt") ++
load_from_file("config/custom_emoji.txt") ++
load_from_globs(shortcode_globs))
|> Enum.reject(fn value -> value == nil end)
emoji_dir_path =
Path.join([
static_path,
Pleroma.Config.get!([:instance, :static_dir]),
"emoji"
])
case File.ls(emoji_dir_path) do
{:error, :enoent} ->
# The custom emoji directory doesn't exist,
# don't do anything
nil
{:error, e} ->
# There was some other error
Logger.error("Could not access the custom emoji directory #{emoji_dir_path}: #{e}")
{:ok, packs} ->
# Print the packs we've found
Logger.info("Found emoji packs: #{Enum.join(packs, ", ")}")
# compat thing for old custom emoji handling
shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || []
emojis =
# Add the things fro
# Deprecated?
(Enum.flat_map(
packs,
fn pack -> load_from_file(Path.join([emoji_dir_path, pack, "emoji.txt"])) end
) ++
load_from_file("config/emoji.txt") ++
load_from_file("config/custom_emoji.txt") ++
load_from_globs(shortcode_globs))
|> Enum.reject(fn value -> value == nil end)
true = :ets.insert(@ets, emojis)
end
true = :ets.insert(@ets, emojis)
:ok
end
@finmoji [
"a_trusted_friend",
"alandislands",
"association",
"auroraborealis",
"baby_in_a_box",
"bear",
"black_gold",
"christmasparty",
"crosscountryskiing",
"cupofcoffee",
"education",
"fashionista_finns",
"finnishlove",
"flag",
"forest",
"four_seasons_of_bbq",
"girlpower",
"handshake",
"happiness",
"headbanger",
"icebreaker",
"iceman",
"joulutorttu",
"kaamos",
"kalsarikannit_f",
"kalsarikannit_m",
"karjalanpiirakka",
"kicksled",
"kokko",
"lavatanssit",
"losthopes_f",
"losthopes_m",
"mattinykanen",
"meanwhileinfinland",
"moominmamma",
"nordicfamily",
"out_of_office",
"peacemaker",
"perkele",
"pesapallo",
"polarbear",
"pusa_hispida_saimensis",
"reindeer",
"sami",
"sauna_f",
"sauna_m",
"sauna_whisk",
"sisu",
"stuck",
"suomimainittu",
"superfood",
"swan",
"the_cap",
"the_conductor",
"the_king",
"the_voice",
"theoriginalsanta",
"tomoffinland",
"torillatavataan",
"unbreakable",
"waiting",
"white_nights",
"woollysocks"
]
defp load_finmoji(true) do
Enum.map(@finmoji, fn finmoji ->
file_name = "/finmoji/128px/#{finmoji}-128.png"
group = match_extra(@groups, file_name)
{finmoji, file_name, to_string(group)}
end)
end
defp load_finmoji(_), do: []
defp load_from_file(file) do
if File.exists?(file) do
load_from_file_stream(File.stream!(file))

Binary file not shown.

Before

(image error) Size: 71 KiB

Binary file not shown.

Before

(image error) Size: 72 KiB

Binary file not shown.

Before

(image error) Size: 77 KiB

Binary file not shown.

Before

(image error) Size: 225 KiB

Binary file not shown.

Before

(image error) Size: 87 KiB

Binary file not shown.

Before

(image error) Size: 42 KiB

Binary file not shown.

Before

(image error) Size: 57 KiB

Binary file not shown.

Before

(image error) Size: 92 KiB

Binary file not shown.

Before

(image error) Size: 40 KiB

Binary file not shown.

Before

(image error) Size: 43 KiB

Binary file not shown.

Before

(image error) Size: 60 KiB

Binary file not shown.

Before

(image error) Size: 62 KiB

Binary file not shown.

Before

(image error) Size: 74 KiB

Binary file not shown.

Before

(image error) Size: 60 KiB

Binary file not shown.

Before

(image error) Size: 44 KiB

Binary file not shown.

Before

(image error) Size: 94 KiB

Binary file not shown.

Before

(image error) Size: 46 KiB

Binary file not shown.

Before

(image error) Size: 30 KiB

Binary file not shown.

Before

(image error) Size: 39 KiB

Binary file not shown.

Before

(image error) Size: 51 KiB

Binary file not shown.

Before

(image error) Size: 58 KiB

Binary file not shown.

Before

(image error) Size: 236 KiB

Binary file not shown.

Before

(image error) Size: 37 KiB

Binary file not shown.

Before

(image error) Size: 127 KiB

Binary file not shown.

Before

(image error) Size: 76 KiB

Binary file not shown.

Before

(image error) Size: 51 KiB

Binary file not shown.

Before

(image error) Size: 58 KiB

Binary file not shown.

Before

(image error) Size: 62 KiB

Binary file not shown.

Before

(image error) Size: 118 KiB

Binary file not shown.

Before

(image error) Size: 125 KiB

Binary file not shown.

Before

(image error) Size: 50 KiB

Binary file not shown.

Before

(image error) Size: 60 KiB

Binary file not shown.

Before

(image error) Size: 104 KiB

Binary file not shown.

Before

(image error) Size: 113 KiB

Binary file not shown.

Before

(image error) Size: 165 KiB

Binary file not shown.

Before

(image error) Size: 97 KiB

Binary file not shown.

Before

(image error) Size: 69 KiB

Binary file not shown.

Before

(image error) Size: 58 KiB

Binary file not shown.

Before

(image error) Size: 51 KiB

Binary file not shown.

Before

(image error) Size: 40 KiB

Binary file not shown.

Before

(image error) Size: 69 KiB

Binary file not shown.

Before

(image error) Size: 44 KiB

Binary file not shown.

Before

(image error) Size: 43 KiB

Binary file not shown.

Before

(image error) Size: 53 KiB

Binary file not shown.

Before

(image error) Size: 36 KiB

Binary file not shown.

Before

(image error) Size: 34 KiB

Binary file not shown.

Before

(image error) Size: 96 KiB

Binary file not shown.

Before

(image error) Size: 73 KiB

Binary file not shown.

Before

(image error) Size: 44 KiB

Binary file not shown.

Before

(image error) Size: 66 KiB

Binary file not shown.

Before

(image error) Size: 126 KiB

Binary file not shown.

Before

(image error) Size: 41 KiB

Binary file not shown.

Before

(image error) Size: 35 KiB

Binary file not shown.

Before

(image error) Size: 33 KiB

Binary file not shown.

Before

(image error) Size: 89 KiB

Binary file not shown.

Before

(image error) Size: 75 KiB

Binary file not shown.

Before

(image error) Size: 58 KiB

Binary file not shown.

Before

(image error) Size: 68 KiB

Binary file not shown.

Before

(image error) Size: 134 KiB

Binary file not shown.

Before

(image error) Size: 76 KiB

Binary file not shown.

Before

(image error) Size: 17 KiB

Binary file not shown.

Before

(image error) Size: 49 KiB

Binary file not shown.

Before

(image error) Size: 128 KiB

Binary file not shown.

Before

(image error) Size: 7.8 KiB

Binary file not shown.

Before

(image error) Size: 6.2 KiB

Binary file not shown.

Before

(image error) Size: 8.5 KiB

Binary file not shown.

Before

(image error) Size: 11 KiB

Binary file not shown.

Before

(image error) Size: 8.9 KiB

Binary file not shown.

Before

(image error) Size: 4.2 KiB

Binary file not shown.

Before

(image error) Size: 6.2 KiB

Binary file not shown.

Before

(image error) Size: 8.3 KiB

Binary file not shown.

Before

(image error) Size: 4.5 KiB

Binary file not shown.

Before

(image error) Size: 4.2 KiB

Binary file not shown.

Before

(image error) Size: 6.2 KiB

Binary file not shown.

Before

(image error) Size: 7.5 KiB

Binary file not shown.

Before

(image error) Size: 5.9 KiB

Binary file not shown.

Before

(image error) Size: 4 KiB

Binary file not shown.

Before

(image error) Size: 4 KiB

Binary file not shown.

Before

(image error) Size: 9.3 KiB

Binary file not shown.

Before

(image error) Size: 4.3 KiB

Binary file not shown.

Before

(image error) Size: 2.7 KiB

Binary file not shown.

Before

(image error) Size: 4.5 KiB

Binary file not shown.

Before

(image error) Size: 4.9 KiB

Binary file not shown.

Before

(image error) Size: 7.3 KiB

Binary file not shown.

Before

(image error) Size: 12 KiB

Binary file not shown.

Before

(image error) Size: 3.1 KiB

Binary file not shown.

Before

(image error) Size: 8.6 KiB

Binary file not shown.

Before

(image error) Size: 6.8 KiB

Binary file not shown.

Before

(image error) Size: 5.2 KiB

Binary file not shown.

Before

(image error) Size: 5.1 KiB

Binary file not shown.

Before

(image error) Size: 7.1 KiB

Binary file not shown.

Before

(image error) Size: 11 KiB

Binary file not shown.

Before

(image error) Size: 12 KiB

Binary file not shown.

Before

(image error) Size: 4.8 KiB

Binary file not shown.

Before

(image error) Size: 6.2 KiB

Binary file not shown.

Before

(image error) Size: 7.2 KiB

Binary file not shown.

Before

(image error) Size: 11 KiB

Some files were not shown because too many files have changed in this diff Show more