Add support for BreezeWiki

Includes nightly build support for automatically pulling the most up to
date instance list.

Closes #104
This commit is contained in:
Ben Busby 2023-05-19 10:57:43 -06:00
parent dd51523faf
commit 0ce0832a28
No known key found for this signature in database
GPG key ID: B9B7231E01D924A1
4 changed files with 56 additions and 4 deletions

View file

@ -205,6 +205,17 @@ jobs:
apply_update
# ==============================================================
# BreezeWiki update
# ==============================================================
curl -s https://docs.breezewiki.com/files/instances.json | \
jq '[.[] | .instance]' > bw-tmp.json
jq --slurpfile breezewiki breezewiki-tmp.json \
'(.[] | select(.type == "breezewiki") )
.instances |= $breezewiki[0]' services-full.json > services-tmp.json
apply_update
# ==============================================================
# TODO: Update instances for other services
# ==============================================================

View file

@ -1,7 +1,7 @@
defmodule Farside do
@service_prefix Application.fetch_env!(:farside, :service_prefix)
@fallback_suffix Application.fetch_env!(:farside, :fallback_suffix)
@previous_suffix Application.fetch_env!(:farside, :previous_suffix)
@service_prefix Application.compile_env!(:farside, :service_prefix)
@fallback_suffix Application.compile_env!(:farside, :fallback_suffix)
@previous_suffix Application.compile_env!(:farside, :previous_suffix)
# Define relation between available services and their parent service.
# This enables Farside to redirect with links such as:
@ -19,6 +19,7 @@ defmodule Farside do
@imdb_regex ~r/imdb.com|libremdb/
@quora_regex ~r/quora.com|quetre/
@gsearch_regex ~r/google.com\/search|whoogle/
@fandom_regex ~r/fandom.com|breezewiki/
@parent_services %{
@youtube_regex => ["invidious", "piped"],
@ -33,7 +34,8 @@ defmodule Farside do
@tiktok_regex => ["proxitok"],
@imdb_regex => ["libremdb"],
@quora_regex => ["quetre"],
@gsearch_regex => ["whoogle"]
@gsearch_regex => ["whoogle"],
@fandom_regex => ["breezewiki"]
}
def get_services_map do
@ -127,6 +129,15 @@ defmodule Farside do
else
instance
end
String.match?(service, @fandom_regex) ->
# Fandom links require the subdomain to be preserved, otherwise the
# requested path won't work.
if String.contains?(service, ".fandom.com") do
wiki = String.replace(service, ".fandom.com", "")
"#{instance}/#{wiki}"
else
instance
end
true ->
instance
end

View file

@ -544,5 +544,20 @@
"https://dumb.lunar.icu",
"https://dumb.esmailelbob.xyz"
]
},
{
"type": "breezewiki",
"test_url": "/undertale/wiki/Hot_Dog...%3F",
"fallback": "https://breezewiki.com",
"instances": [
"https://breezewiki.com",
"https://antifandom.com",
"https://breezewiki.pussthecat.org",
"https://bw.projectsegfau.lt",
"https://breeze.hostux.net",
"https://bw.artemislena.eu",
"https://breeze.777.tf",
"https://breezewiki.esmailelbob.xyz"
]
}
]

View file

@ -501,5 +501,20 @@
"https://dumb.lunar.icu",
"https://dumb.esmailelbob.xyz"
]
},
{
"type": "breezewiki",
"test_url": "/undertale/wiki/Hot_Dog...%3F",
"fallback": "https://breezewiki.com",
"instances": [
"https://breezewiki.com",
"https://antifandom.com",
"https://breezewiki.pussthecat.org",
"https://bw.projectsegfau.lt",
"https://breeze.hostux.net",
"https://bw.artemislena.eu",
"https://breeze.777.tf",
"https://breezewiki.esmailelbob.xyz"
]
}
]