diff --git a/.github/workflows/update-instances.yml b/.github/workflows/update-instances.yml index e0c4899..0ee818c 100644 --- a/.github/workflows/update-instances.yml +++ b/.github/workflows/update-instances.yml @@ -166,19 +166,19 @@ jobs: # ============================================================== # teddit update + # Note: no longer maintained # ============================================================== - curl -s https://codeberg.org/teddit/teddit/raw/branch/main/instances.json | \ - jq '[ - .[] | - select(.url != null) | - select(.url | contains("https")) | - .url ] | - sort' > teddit-tmp.json - jq --slurpfile teddit teddit-tmp.json \ - '( .[] | select(.type == "teddit") ) - .instances |= $teddit[0]' services-full.json > services-tmp.json + #curl -s https://codeberg.org/teddit/teddit/raw/branch/main/instances.json | \ + #jq '[ + #.[] | + #select(.url | contains("https")) | + #.url ] | + #sort' > teddit-tmp.json + #jq --slurpfile teddit teddit-tmp.json \ + #'( .[] | select(.type == "teddit") ) + #.instances |= $teddit[0]' services-full.json > services-tmp.json - apply_update + #apply_update # ============================================================== # Wikiless update @@ -197,18 +197,25 @@ jobs: #apply_update # ============================================================== - # libreddit update + # libreddit + redlib update # ============================================================== - curl -s https://raw.githubusercontent.com/libreddit/libreddit-instances/master/instances.json | \ + curl -s https://raw.githubusercontent.com/redlib-org/redlib-instances/main/instances.json | \ jq '[ .instances[] | select(.url) | .url ] | sort' > libreddit-tmp.json + jq --slurpfile libreddit libreddit-tmp.json \ '( .[] | select(.type == "libreddit") ) .instances |= $libreddit[0]' services-full.json > services-tmp.json + mv services-tmp.json services-full.json + + jq --slurpfile redlib libreddit-tmp.json \ + '( .[] | select(.type == "redlib") ) + .instances |= $redlib[0]' services-full.json > services-tmp.json + apply_update # ============================================================== diff --git a/lib/farside.ex b/lib/farside.ex index 7b7809b..348f77c 100644 --- a/lib/farside.ex +++ b/lib/farside.ex @@ -1,4 +1,4 @@ -defmodule Farside do + defmodule Farside do @service_prefix Application.compile_env!(:farside, :service_prefix) @fallback_suffix Application.compile_env!(:farside, :fallback_suffix) @previous_suffix Application.compile_env!(:farside, :previous_suffix) @@ -7,9 +7,9 @@ defmodule Farside do # This enables Farside to redirect with links such as: # farside.link/https://www.youtube.com/watch?v=dQw4w9WgXcQ @youtube_regex ~r/youtu(.be|be.com)|invidious|piped/ - @reddit_regex ~r/reddit.com|libreddit|teddit/ - @instagram_regex ~r/instagram.com|bibliogram/ @twitter_regex ~r/twitter.com|x.com|nitter/ + @reddit_regex ~r/reddit.com|libreddit|redlib/ + @instagram_regex ~r/instagram.com|proxigram/ @wikipedia_regex ~r/wikipedia.org|wikiless/ @medium_regex ~r/medium.com|scribe/ @odysee_regex ~r/odysee.com|librarian/ @@ -25,8 +25,8 @@ defmodule Farside do @parent_services %{ @youtube_regex => ["invidious", "piped"], - @reddit_regex => ["libreddit", "teddit"], - @instagram_regex => ["bibliogram"], + @reddit_regex => ["libreddit", "redlib"], + @instagram_regex => ["proxigram"], @twitter_regex => ["nitter"], @wikipedia_regex => ["wikiless"], @medium_regex => ["scribe"], @@ -122,17 +122,6 @@ defmodule Farside do def amend_instance(instance, service, path) do cond do - String.match?(service, @instagram_regex) -> - # Bibliogram doesn't have a 1:1 matching to Instagram URLs for users, - # so a "/u" is appended if the requested path doesn't explicitly include - # "/p" for a post or an empty path for the home page. - if String.length(path) > 0 and - !String.starts_with?(path, "p/") and - !String.starts_with?(path, "u/") do - "#{instance}/u" - else - instance - end String.match?(service, @fandom_regex) -> # Fandom links require the subdomain to be preserved, otherwise the # requested path won't work. diff --git a/lib/farside/router.ex b/lib/farside/router.ex index ce0eb0a..00d98e2 100644 --- a/lib/farside/router.ex +++ b/lib/farside/router.ex @@ -56,23 +56,21 @@ defmodule Farside.Router do Enum.join(glob, "/") end - instance = cond do + cond do conn.assigns[:throttle] != nil -> - Farside.get_service(service_name) - |> Farside.last_instance - |> Farside.amend_instance(service_name, path) + send_resp(conn, :too_many_requests, "Too many requests - max request rate is 1 per second") true -> - Farside.get_service(service_name) - |> Farside.pick_instance - |> Farside.amend_instance(service_name, path) - end + instance = Farside.get_service(service_name) + |> Farside.pick_instance + |> Farside.amend_instance(service_name, path) - # Redirect to the available instance - conn - |> Plug.Conn.resp(:found, "") - |> Plug.Conn.put_resp_header( - "location", - "#{instance}/#{path}#{get_query_params(conn)}" - ) + # Redirect to the available instance + conn + |> Plug.Conn.resp(:found, "") + |> Plug.Conn.put_resp_header( + "location", + "#{instance}/#{path}#{get_query_params(conn)}" + ) + end end end diff --git a/services-full.json b/services-full.json index 89c2cb0..ee0d5de 100644 --- a/services-full.json +++ b/services-full.json @@ -2,19 +2,31 @@ { "type": "libreddit", "test_url": "/r/popular", - "fallback": "https://libreddit.spike.codes", + "fallback": "https://redlib.freedit.eu", "instances": [ "https://l.opnxng.com", - "https://libreddit.freedit.eu", - "https://libreddit.kylrth.com", - "https://libreddit.lunar.icu", - "https://libreddit.northboot.xyz", - "https://libreddit.privacydev.net", + "https://libreddit.bus-hit.me", "https://libreddit.projectsegfau.lt", - "https://libreddit.strongthany.cc", - "https://lr.artemislena.eu", + "https://reddit.idevicehacked.com", "https://reddit.invak.id", - "https://reddit.simo.sh" + "https://redlib.catsarch.com", + "https://redlib.freedit.eu", + "https://redlib.matthew.science" + ] + }, + { + "type": "redlib", + "test_url": "/r/popular", + "fallback": "https://redlib.freedit.eu", + "instances": [ + "https://l.opnxng.com", + "https://libreddit.bus-hit.me", + "https://libreddit.projectsegfau.lt", + "https://reddit.idevicehacked.com", + "https://reddit.invak.id", + "https://redlib.catsarch.com", + "https://redlib.freedit.eu", + "https://redlib.matthew.science" ] }, { @@ -53,14 +65,17 @@ ] }, { - "type": "bibliogram", + "type": "proxigram", "test_url": "/p/Ch2WRmiLMjj", - "fallback": "https://bibliogram.1d4.us", + "fallback": "https://ig.opnxng.com", "instances": [ - "https://bibliogram.1d4.us", - "https://bibliogram.froth.zone", - "https://bibliogram.priv.pw", - "https://ig.femboy.hu" + "https://ig.opnxng.com", + "https://proxigram.lunar.icu", + "https://gram.whatever.social", + "https://ig.snine.nl", + "https://ig.floppa.one", + "https://proxigram.kyun.li", + "https://proxigram.ducks.party" ] }, { diff --git a/services.json b/services.json index e6ff3d2..17ac6a4 100644 --- a/services.json +++ b/services.json @@ -2,18 +2,29 @@ { "type": "libreddit", "test_url": "/r/popular", - "fallback": "https://libreddit.spike.codes", + "fallback": "https://redlib.freedit.eu", "instances": [ "https://l.opnxng.com", - "https://libreddit.kylrth.com", - "https://libreddit.lunar.icu", - "https://libreddit.northboot.xyz", - "https://libreddit.privacydev.net", + "https://libreddit.bus-hit.me", "https://libreddit.projectsegfau.lt", - "https://libreddit.strongthany.cc", - "https://lr.artemislena.eu", + "https://reddit.idevicehacked.com", "https://reddit.invak.id", - "https://reddit.simo.sh" + "https://redlib.catsarch.com", + "https://redlib.matthew.science" + ] + }, + { + "type": "redlib", + "test_url": "/r/popular", + "fallback": "https://redlib.freedit.eu", + "instances": [ + "https://l.opnxng.com", + "https://libreddit.bus-hit.me", + "https://libreddit.projectsegfau.lt", + "https://reddit.idevicehacked.com", + "https://reddit.invak.id", + "https://redlib.catsarch.com", + "https://redlib.matthew.science" ] }, { @@ -47,14 +58,17 @@ ] }, { - "type": "bibliogram", + "type": "proxigram", "test_url": "/p/Ch2WRmiLMjj", - "fallback": "https://bibliogram.1d4.us", + "fallback": "https://ig.opnxng.com", "instances": [ - "https://bibliogram.1d4.us", - "https://bibliogram.froth.zone", - "https://bibliogram.priv.pw", - "https://ig.femboy.hu" + "https://ig.opnxng.com", + "https://proxigram.lunar.icu", + "https://gram.whatever.social", + "https://ig.snine.nl", + "https://ig.floppa.one", + "https://proxigram.kyun.li", + "https://proxigram.ducks.party" ] }, { @@ -125,6 +139,9 @@ "https://nitter.io.lol", "https://nitter.ktachibana.party", "https://nitter.kylrth.com", + "https://nitter.kavin.rocks", + "https://nitter.unixfox.eu", + "https://n.actionsack.com", "https://nitter.moomoo.me", "https://nitter.net", "https://nitter.no-logs.com", @@ -188,7 +205,8 @@ "https://translate.dr460nf1r3.org", "https://translate.whateveritworks.org", "https://translate.sapti.me", - "https://translate.colinslegacy.com" + "https://translate.colinslegacy.com", + "https://translate.igna.rocks" ] }, {