Libreddit -> Redlib (update instances)

This commit is contained in:
Matthew Esposito 2024-01-02 14:44:32 -05:00
parent d0a744151b
commit 62bc0789ab
No known key found for this signature in database
4 changed files with 35 additions and 188 deletions

View File

@ -1,16 +1,16 @@
# Libreddit Instances # Redlib Instances
This repository maintains a list of [Libreddit](https://github.com/spikecodes/libreddit) instances in JSON format, providing the URL, location, and Libreddit version for each instance. A helper script exists in this repository to generate the list in JSON form. This repository maintains a list of [Redlib](https://github.com/redlib-org/redlib) instances in JSON format, providing the URL, location, and Redlib version for each instance. A helper script exists in this repository to generate the list in JSON form.
# Contents # Contents
This repo consists of four files: This repo consists of four files:
1. `instances.json`: This is the list of Libreddit instances. 1. `instances.json`: This is the list of Redlib instances.
1. `instances-schema.json`: JSON Schema governing `instances.json`. 1. `instances-schema.json`: JSON Schema governing `instances.json`.
1. `instances.txt`: This is a CSV of libreddit instances. While this is also machine-readable, it is recommended to use `instances.json` instead. `instances.txt` is meant for contributors to add and remove instances, and `generate-instances-json.sh` will validate those instances and generate `instances.json`. 1. `instances.txt`: This is a CSV of Redlib instances. While this is also machine-readable, it is recommended to use `instances.json` instead. `instances.txt` is meant for contributors to add and remove instances, and `generate-instances-json.sh` will validate those instances and generate `instances.json`.
1. `instances.md`: This is table in Markdown format of the Libreddit instances in `instances.json`. It is generated by the script `generate-instances-markdown.py`. 1. `instances.md`: This is table in Markdown format of the Redlib instances in `instances.json`. It is generated by the script `generate-instances-markdown.py`.
1. `generate-instances-json.sh`: This script takes in a CSV file as input, typically `instances.txt`, and outputs a JSON object with a list of Libreddit instances. This is the script that generates `instances.json`. 1. `generate-instances-json.sh`: This script takes in a CSV file as input, typically `instances.txt`, and outputs a JSON object with a list of Redlib instances. This is the script that generates `instances.json`.
## Adding or removing an instance ## Adding or removing an instance
@ -24,7 +24,7 @@ Pull requests to add or remove instances are always welcome.
## `generate-instances-json.sh` ## `generate-instances-json.sh`
`generate-instances-json.sh` is the script that produces a JSON of [Libreddit](https://github.com/libreddit/libreddit) instances, given a CSV input of Libreddit instances. `generate-instances-json.sh` is the script that produces a JSON of [Redlib](https://github.com/redlib-org/redlib) instances, given a CSV input of Redlib instances.
Unless `-i` and `-o` are specified (see [Usage](#Usage) below), the input and output are assumed the stdin and stdout streams respectively. Unless `-i` and `-o` are specified (see [Usage](#Usage) below), the input and output are assumed the stdin and stdout streams respectively.
@ -36,7 +36,7 @@ USAGE
./generate-instances-json.sh -h ./generate-instances-json.sh -h
DESCRIPTION DESCRIPTION
Generate a JSON of Libreddit instances, given a CSV file at INPUT_CSV Generate a JSON of Redlib instances, given a CSV file at INPUT_CSV
listing those instances. If INPUT_CSV is not given, this script will listing those instances. If INPUT_CSV is not given, this script will
read the CSV file from stdin. read the CSV file from stdin.
@ -71,7 +71,7 @@ DESCRIPTION
OPTIONS OPTIONS
-I INPUT_JSON -I INPUT_JSON
Import the list of Libreddit onion and I2P instances from the file Import the list of Redlib onion and I2P instances from the file
INPUT_JSON. To use stdin, provide `-I -`. Implies -T, and further INPUT_JSON. To use stdin, provide `-I -`. Implies -T, and further
causes the script to ignore the value in I2P_HTTP_PROXY. Note that the causes the script to ignore the value in I2P_HTTP_PROXY. Note that the
argument provided to this option CANNOT be the same as the argument argument provided to this option CANNOT be the same as the argument
@ -112,7 +112,7 @@ ENVIRONMENT
USER_AGENT USER_AGENT
Sets the User-Agent that curl will use when making the GET to each Sets the User-Agent that curl will use when making the GET to each
website. By default, this script will tell curl to set its User-Agent website. By default, this script will tell curl to set its User-Agent
string to "libreddit-instance-updater/0.1". string to "redlib-instance-updater/0.1".
I2P_HTTP_PROXY I2P_HTTP_PROXY
HTTP proxy for connecting to the I2P network. This is required in HTTP proxy for connecting to the I2P network. This is required in
@ -135,7 +135,7 @@ The CSV must take on the form:
``` ```
Each field described: Each field described:
- **url** (REQUIRED): The url to the Libreddit instance. This _must_ be HTTPS, unless the instance is an onion site. - **url** (REQUIRED): The url to the Redlib instance. This _must_ be HTTPS, unless the instance is an onion site.
- **country code** (REQUIRED): The two-letter code for the country in which the instance is hosted, in caps. - **country code** (REQUIRED): The two-letter code for the country in which the instance is hosted, in caps.
- **cloudflare enabled** (REQUIRED): A boolean; true if the instance sits behind Cloudflare. - **cloudflare enabled** (REQUIRED): A boolean; true if the instance sits behind Cloudflare.
- **description** (REQUIRED): A description of the instance; a description can be blank, but one must be provided for the script to parse the CSV correctly. **As this description string becomes a JSON value without any transformation, any special characters, including and especially newlines, must be escaped.** - **description** (REQUIRED): A description of the instance; a description can be blank, but one must be provided for the script to parse the CSV correctly. **As this description string becomes a JSON value without any transformation, any special characters, including and especially newlines, must be escaped.**
@ -170,11 +170,11 @@ This script will attempt to connect to instances that are onion or I2P sites.
##### Tor ##### Tor
To make sure it can connect to onion sites, the script will see if Tor is running and if torsocks is installed. If neither condition is met, the script will not attempt to connect to Libreddit onion sites and will skip them. The exit code will still be 0, assuming that the WWW Libreddit sites were processed without error. To make sure it can connect to onion sites, the script will see if Tor is running and if torsocks is installed. If neither condition is met, the script will not attempt to connect to Redlib onion sites and will skip them. The exit code will still be 0, assuming that the WWW Redlib sites were processed without error.
##### I2P ##### I2P
In order to allow the script to connect to I2P, you must specify a proxy host and port in the environment variable `I2P_HTTP_PROXY`. This is typically 127.0.0.1:4444, unless your proxy listens on a separate address and/or port. If this environment variable is not defined or it is empty, the script will not attempt to connect to Libreddit I2P sites and will skip them. The exit code will still be 0, assuming that the WWW Libreddit sites were processed without error. In order to allow the script to connect to I2P, you must specify a proxy host and port in the environment variable `I2P_HTTP_PROXY`. This is typically 127.0.0.1:4444, unless your proxy listens on a separate address and/or port. If this environment variable is not defined or it is empty, the script will not attempt to connect to Redlib I2P sites and will skip them. The exit code will still be 0, assuming that the WWW Redlib sites were processed without error.
## `generate-instances-markdown.py` ## `generate-instances-markdown.py`
@ -185,7 +185,7 @@ In order to allow the script to connect to I2P, you must specify a proxy host an
``` ```
usage: generate-instances-markdown.py [-h] [-o OUTPUT_FILE] [INPUT_FILE] usage: generate-instances-markdown.py [-h] [-o OUTPUT_FILE] [INPUT_FILE]
Generate a markdown table of the Libreddit instances in the instances.JSON file. By default, this will read the file 'instances.json' in the Generate a markdown table of the Redlib instances in the instances.JSON file. By default, this will read the file 'instances.json' in the
current working directory, and will write to 'instances.md' in that same directory. WARNING: This script will overwrite the output file if it current working directory, and will write to 'instances.md' in that same directory. WARNING: This script will overwrite the output file if it
exists. exists.

View File

@ -1,37 +1,6 @@
{ {
"updated": "2024-01-01", "updated": "2024-01-02",
"instances": [ "instances": [
{
"url": "https://safereddit.com",
"country": "US",
"version": "v0.30.1",
"description": "SFW only"
},
{
"url": "https://reddit.invak.id",
"country": "BG",
"version": "v0.30.2"
},
{
"url": "https://reddit.simo.sh",
"country": "BG",
"version": "v0.30.1"
},
{
"url": "https://libreddit.strongthany.cc",
"country": "US",
"version": "v0.30.1"
},
{
"url": "https://libreddit.northboot.xyz",
"country": "DE",
"version": "v0.30.1"
},
{
"url": "https://libreddit.privacydev.net",
"country": "US",
"version": "v0.30.1"
},
{ {
"url": "https://l.opnxng.com", "url": "https://l.opnxng.com",
"country": "SG", "country": "SG",
@ -42,67 +11,30 @@
"country": "LU", "country": "LU",
"version": "v0.30.2" "version": "v0.30.2"
}, },
{
"url": "https://libreddit.oxymagnesium.com",
"country": "US",
"version": "v0.30.1"
},
{
"url": "https://reddit.utsav2.dev",
"country": "US",
"version": "v0.30.1"
},
{
"url": "https://libreddit.freedit.eu",
"country": "US",
"version": "v0.30.2",
"cloudflare": true
},
{
"url": "https://lr.artemislena.eu",
"country": "DE",
"version": "v0.30.1"
},
{ {
"url": "https://libreddit.bus-hit.me", "url": "https://libreddit.bus-hit.me",
"country": "CA", "country": "CA",
"version": "v0.30.2" "version": "v0.30.2"
}, },
{ {
"url": "https://libreddit.lunar.icu", "url": "https://reddit.invak.id",
"country": "DE", "country": "BG",
"version": "v0.30.1", "version": "v0.30.2"
"cloudflare": true
}, },
{ {
"onion": "http://ojwp2gtj7dq7scd7gnbac6wp53tklgsicteabrnx2pr7zai64wriiaad.onion", "url": "https://redlib.catsarch.com",
"country": "US", "country": "US",
"version": "v0.22.9" "version": "v0.30.2"
}, },
{ {
"onion": "http://libreddit.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion", "url": "https://reddit.idevicehacked.com",
"country": "CA",
"version": "v0.25.0"
},
{
"onion": "http://ojwp2gtj7dq7scd7gnbac6wp53tklgsicteabrnx2pr7zai64wriiaad.onion",
"country": "US", "country": "US",
"version": "v0.22.9" "version": "v0.30.2"
}, },
{ {
"onion": "http://lr.lpoaj7z2zkajuhgnlltpeqh3zyq7wk2iyeggqaduhgxhyajtdt2j7wad.onion", "url": "https://redlib.matthew.science",
"country": "DE", "country": "US",
"version": "v0.25.0" "version": "v0.30.2"
},
{
"onion": "http://snoo.habeehrhadazsw3izbrbilqajalfyqqln54mrja3iwpqxgcuxnus7eid.onion",
"country": "CA",
"version": "v0.25.0"
},
{
"i2p": "http://wilr7fk4bx3lnubdhxgwxg37oubmkyiqkamgfoivrz5ldtjwyitq.b32.i2p",
"country": "CA",
"version": "v0.25.0"
} }
] ]
} }

View File

@ -1,22 +1,9 @@
|URL|Network|Version|Location|Behind Cloudflare?|Comment| |URL|Network|Version|Location|Behind Cloudflare?|Comment|
|-|-|-|-|-|-| |-|-|-|-|-|-|
|https://safereddit.com|WWW|v0.30.1|🇺🇸 US||SFW only|
|https://reddit.invak.id|WWW|v0.30.2|🇧🇬 BG|||
|https://reddit.simo.sh|WWW|v0.30.1|🇧🇬 BG|||
|https://libreddit.strongthany.cc|WWW|v0.30.1|🇺🇸 US|||
|https://libreddit.northboot.xyz|WWW|v0.30.1|🇩🇪 DE|||
|https://libreddit.privacydev.net|WWW|v0.30.1|🇺🇸 US|||
|https://l.opnxng.com|WWW|v0.30.2|🇸🇬 SG||| |https://l.opnxng.com|WWW|v0.30.2|🇸🇬 SG|||
|https://libreddit.projectsegfau.lt|WWW|v0.30.2|🇱🇺 LU||| |https://libreddit.projectsegfau.lt|WWW|v0.30.2|🇱🇺 LU|||
|https://libreddit.oxymagnesium.com|WWW|v0.30.1|🇺🇸 US|||
|https://reddit.utsav2.dev|WWW|v0.30.1|🇺🇸 US|||
|https://libreddit.freedit.eu|WWW|v0.30.2|🇺🇸 US|✅||
|https://lr.artemislena.eu|WWW|v0.30.1|🇩🇪 DE|||
|https://libreddit.bus-hit.me|WWW|v0.30.2|🇨🇦 CA||| |https://libreddit.bus-hit.me|WWW|v0.30.2|🇨🇦 CA|||
|https://libreddit.lunar.icu|WWW|v0.30.1|🇩🇪 DE|✅|| |https://reddit.invak.id|WWW|v0.30.2|🇧🇬 BG|||
|http://ojwp2gtj7dq7scd7gnbac6wp53tklgsicteabrnx2pr7zai64wriiaad.onion|Tor|v0.22.9|🇺🇸 US||| |https://redlib.catsarch.com|WWW|v0.30.2|🇺🇸 US|||
|http://libreddit.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion|Tor|v0.25.0|🇨🇦 CA||| |https://reddit.idevicehacked.com|WWW|v0.30.2|🇺🇸 US|||
|http://ojwp2gtj7dq7scd7gnbac6wp53tklgsicteabrnx2pr7zai64wriiaad.onion|Tor|v0.22.9|🇺🇸 US||| |https://redlib.matthew.science|WWW|v0.30.2|🇺🇸 US|||
|http://lr.lpoaj7z2zkajuhgnlltpeqh3zyq7wk2iyeggqaduhgxhyajtdt2j7wad.onion|Tor|v0.25.0|🇩🇪 DE|||
|http://snoo.habeehrhadazsw3izbrbilqajalfyqqln54mrja3iwpqxgcuxnus7eid.onion|Tor|v0.25.0|🇨🇦 CA|||
|http://wilr7fk4bx3lnubdhxgwxg37oubmkyiqkamgfoivrz5ldtjwyitq.b32.i2p|I2P|v0.25.0|🇨🇦 CA|||

View File

@ -1,81 +1,9 @@
https://libreddit.spike.codes,US,false,"official instance"
https://libreddit.org,DE,true,""
https://safereddit.com,US,false,"SFW only"
https://libreddit.kavin.rocks,IN,false,""
https://reddit.invak.id,BG,false,""
https://libreddit.eu.org,DE,true,""
https://reddit.simo.sh,BG,false,""
https://lr.riverside.rocks,US,false,""
https://libreddit.strongthany.cc,US,false,""
https://libreddit.privacy.com.de,DE,false,""
https://reddit.baby,DE,false,"mirror of libreddit.privacy.com.de"
https://libreddit.domain.glass,US,true,""
https://r.nf,DE,true,""
https://reddit.stuehieyr.com,DE,false,""
https://lr.mint.lgbt,CA,false,""
https://libreddit.drivet.xyz,PL,false,""
https://libreddit.de,DE,false,""
https://libreddit.pussthecat.org,DE,false,""
https://libreddit.northboot.xyz,DE,false,""
https://libreddit.hu,FI,true,""
https://libreddit.totaldarkness.net,CA,false,""
https://libreddit.esmailelbob.xyz,CA,false,""
https://lr.vern.cc,US,false,""
https://libreddit.nl,NL,false,""
https://reddi.tk,US,true,""
https://r.walkx.fyi,NL,true,""
https://libreddit.kylrth.com,CA,false,""
https://libreddit.tiekoetter.com,DE,false,""
https://reddit.rtrace.io,DE,false,""
https://libreddit.privacydev.net,US,false,""
https://r.ahwx.org,NL,true,""
https://bob.fr.to,US,false,""
https://libreddit.dcs0.hu,HU,false,""
https://reddit.dr460nf1r3.org,DE,true,""
https://rd.777.tf,FI,false,""
https://libreddit.foss.wtf,DE,false,""
https://libreddit.encrypted-data.xyz,FR,true,""
https://l.opnxng.com,SG,false,"" https://l.opnxng.com,SG,false,""
https://libreddit.cachyos.org,DE,true,""
https://rd.funami.tech,KR,false,""
https://libreddit.projectsegfau.lt,LU,false,"" https://libreddit.projectsegfau.lt,LU,false,""
https://lr.slipfox.xyz,US,false,""
https://libreddit.oxymagnesium.com,US,false,""
https://reddit.utsav2.dev,US,false,""
https://libreddit.freedit.eu,US,true,""
https://libreddit.mha.fi,FI,false,""
https://libreddit.garudalinux.org,FI,true,""
https://libreddit.mask.sh,US,false,""
https://www.futureddit.gq,IT,true,""
https://lr.4201337.xyz,FR,false,""
https://lr.odyssey346.dev,FR,false,""
https://reddit.selfhostable.net,NL,false,""
https://lr.artemislena.eu,DE,false,""
https://discuss.whatever.social,US,false,"uses CDN"
https://libreddit.pufe.org,NZ,false,""
https://libreddit.marcopisco.com,PT,true,""
https://lr.aeong.one,KR,true,""
https://reddit.smnz.de,DE,false,""
https://libreddit.bus-hit.me,CA,false,"" https://libreddit.bus-hit.me,CA,false,""
https://reddit.leptons.xyz,GB,false,"" https://reddit.invak.id,BG,false,""
https://libreddit.lunar.icu,DE,true,"" https://redlib.catsarch.com,US,false,""
https://lbr.frail.duckdns.org,BR,false,"" https://reddit.idevicehacked.com,US,false,""
https://reddit.thekitty.zone,DE,false,"" https://redlib.matthew.science,US,false,""
https://reddit.moe.ngo,ID,true,"" https://redlib.freedit.eu,CA,false,""
https://r.darklab.sh,US,false,"" http://redlib.catsarchywsyuss6jdxlypsw5dc7owd5u5tr6bujxb7o6xw2hipqehyd.onion,US,false,""
https://lr.rfl890.cf,CA,true,""
https://libreddit.albr.to,DE,false,""
https://snoo.habedieeh.re,CA,false,""
https://libreddit.kutay.dev,DE,false,""
https://libreddit.tux.pizza,US,false,""
https://libreddit.billbert.co,US,true,""
https://libreddit.gq,US,false,""
http://ojwp2gtj7dq7scd7gnbac6wp53tklgsicteabrnx2pr7zai64wriiaad.onion,US,false,""
http://ecue64ybzvn6vjzl37kcsnwt4ycmbsyf74nbttyg7rkc3t3qwnj7mcyd.onion,DE,false,""
http://libreddit.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion,CA,false,""
http://ojwp2gtj7dq7scd7gnbac6wp53tklgsicteabrnx2pr7zai64wriiaad.onion,US,false,""
http://lr.lpoaj7z2zkajuhgnlltpeqh3zyq7wk2iyeggqaduhgxhyajtdt2j7wad.onion,DE,false,""
http://libreddit.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion,US,false,""
http://kphht2jcflojtqte4b4kyx7p2ahagv4debjj32nre67dxz7y57seqwyd.onion,FR,false,""
http://snoo.habeehrhadazsw3izbrbilqajalfyqqln54mrja3iwpqxgcuxnus7eid.onion,CA,false,""
http://wilr7fk4bx3lnubdhxgwxg37oubmkyiqkamgfoivrz5ldtjwyitq.b32.i2p,CA,false,""