feat(directories): add schema adapters and preserve v2 metadata

Multi-adapter boundary in normalizeDirectoriesData() supports both
communities[] and directories[] upstream schemas. Sync script mirrors
logic and writes canonical format. Preserves directoryCode and features
for future use.
This commit is contained in:
plebeius
2026-02-15 18:27:12 +08:00
parent 2f563b441a
commit ec620238e3
3 changed files with 478 additions and 50 deletions
+172 -20
View File
@@ -2,101 +2,253 @@
"title": "/all/ - All 5chan Directories",
"description": "Each 5chan directory is assigned to a board handpicked by the team, until DAO curation is implemented.\n\nhttps://github.com/bitsocialhq/lists/blob/master/5chan-directories.json",
"createdAt": 1762179811,
"updatedAt": 1762179811,
"updatedAt": 1771140295,
"communities": [
{
"title": "/pol/ - Politically Incorrect",
"address": "politically-incorrect.eth",
"title": "/pol/ - Politically Incorrect",
"directoryCode": "pol",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": true,
"hasFlags": true,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": true
},
{
"title": "/biz/ - Business & Finance",
"address": "business-and-finance.eth",
"title": "/biz/ - Business & Finance",
"directoryCode": "biz",
"features": {
"pseudonymityMode": "per-post",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/sci/ - Science & Math",
"address": "science-and-math.eth",
"title": "/sci/ - Science & Math",
"directoryCode": "sci",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/g/ - Technology",
"address": "technology-posting.eth",
"title": "/g/ - Technology",
"directoryCode": "g",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/vg/ - Video Game Generals",
"address": "videogame-generals.eth",
"title": "/vg/ - Video Game Generals",
"directoryCode": "vg",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/fit/ - Fitness",
"address": "fitness-posting.eth",
"title": "/fit/ - Fitness",
"directoryCode": "fit",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/adv/ - Advice",
"address": "advice-posting.eth",
"title": "/adv/ - Advice",
"directoryCode": "adv",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/wsg/ - Worksafe GIF",
"address": "worksafe-gif.eth",
"title": "/wsg/ - Worksafe GIF",
"directoryCode": "wsg",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/diy/ - Do It Yourself",
"address": "do-it-yourself.eth",
"title": "/diy/ - Do It Yourself",
"directoryCode": "diy",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/out/ - Outdoors",
"address": "outdoors-posting.eth",
"title": "/out/ - Outdoors",
"directoryCode": "out",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/ic/ - Artwork/Critique",
"address": "artwork-critique.eth",
"title": "/ic/ - Artwork/Critique",
"directoryCode": "ic",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/mu/ - Music",
"address": "music-posting.eth",
"title": "/mu/ - Music",
"directoryCode": "mu",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/int/ - International",
"address": "international-sfw.eth",
"title": "/int/ - International",
"directoryCode": "int",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": true,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/lit/ - Literature",
"address": "literature-posting.eth",
"title": "/lit/ - Literature",
"directoryCode": "lit",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/tv/ - Television & Film",
"address": "television-and-film.eth",
"title": "/tv/ - Television & Film",
"directoryCode": "tv",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/vip/ - Very Important Posts",
"address": "very-important-posts.eth",
"title": "/vip/ - Very Important Posts",
"directoryCode": "vip",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": false,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": false
},
{
"title": "/gif/ - Adult GIF",
"address": "adult-gif.eth",
"title": "/gif/ - Adult GIF",
"directoryCode": "gif",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": true,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": true
},
{
"title": "/bant/ - International/Random",
"address": "international-nsfw.eth",
"title": "/bant/ - International/Random",
"directoryCode": "bant",
"features": {
"pseudonymityMode": "per-post",
"nsfw": true,
"hasFlags": true,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": true
},
{
"title": "/b/ - Random",
"address": "random-nsfw.eth",
"title": "/b/ - Random",
"directoryCode": "b",
"features": {
"pseudonymityMode": "per-reply",
"nsfw": true,
"hasFlags": false,
"requirePostLink": true,
"requirePostLinkIsMedia": true
},
"nsfw": true
}
]