From 2abf03bb65361f7786e125661bd3f9d8354b9cd6 Mon Sep 17 00:00:00 2001 From: thepaperpilot Date: Thu, 17 Oct 2024 08:02:15 -0500 Subject: [PATCH] Add PESOS for reddit --- .gitignore | 3 + bun.lockb | Bin 591293 -> 611613 bytes package.json | 5 + syndications/archive_utils.ts | 15 + syndications/custom_data.ts | 81 ++++ syndications/indiekit.ts | 95 +++- syndications/reddit_utils.ts | 169 +++++++ syndications/subreddit_tags.json | 752 +++++++++++++++++++++++++++++++ syndications/update_reddit.ts | 235 ++++++++++ 9 files changed, 1336 insertions(+), 19 deletions(-) create mode 100644 syndications/archive_utils.ts create mode 100644 syndications/custom_data.ts create mode 100644 syndications/reddit_utils.ts create mode 100644 syndications/subreddit_tags.json create mode 100644 syndications/update_reddit.ts diff --git a/.gitignore b/.gitignore index 646c1d68b..74a26db5a 100755 --- a/.gitignore +++ b/.gitignore @@ -15,8 +15,11 @@ public/garden public/licenses.txt syndications/cache +syndications/ignored_subreddits.txt syndications/indiekit_token.json syndications/liked_songs.json syndications/media_urls.json +syndications/reddit-export +syndications/reddit_credentials.json syndications/youtube_credentials.json syndications/youtube_token.json diff --git a/bun.lockb b/bun.lockb index 7c5ef3612c31a39fc3d7364e86a157f7f3fc1f7a..efde0dec78b278499c7392976a2308fc2dcdd5fa 100644 GIT binary patch delta 132653 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 b0~-j*Pg-h$DG35eIWIHLNY3cYBbNUIPv(ir delta 119730 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 sTD7s-lAJ+?r r.text()); + let archiveJson; + try { + archiveJson = JSON.parse(archiveResponse); + } catch (err) { + console.error("Unexpected response from wayback machine:", archiveInfoUrl, archiveResponse, + err); + process.exit(0); + } + return archiveJson.archived_snapshots?.closest?.timestamp as string | undefined; +} diff --git a/syndications/custom_data.ts b/syndications/custom_data.ts new file mode 100644 index 000000000..89d12d188 --- /dev/null +++ b/syndications/custom_data.ts @@ -0,0 +1,81 @@ +import { getProperties, sendMessage, uploadMedia } from "./indiekit"; + +async function getInput(prompt: string) { + console.log(prompt); + for await (const code of console as unknown as AsyncIterable) { + return code; + } + throw "Couldn't get input from user; This shouldn't happen"; +} + +async function updatePost(url: string, properties: Record, action = "update") { + await sendMessage(JSON.stringify({ + action, + url, + ...properties + })).then(async res => { + if ([200, 201, 204].includes(res.status)) { + console.log(await res.json()); + } else { + console.warn("Failed to send message to indiekit", res, await res.text()); + throw res; + } + }); +} + +const command = process.argv[2]; +if (command === "list") { + listReplies(); +} else if (command === "add") { + addReply(); +} else if (command === "clear") { + clearReplies(); +} else { + console.log("Call this script with the command you'd like to perform:"); + console.log(`${process.argv.slice(0, 1).join(" ")} [COMMAND]`); + console.log("Available commands:"); + console.log(" list: Print the replies on a post"); + console.log(" add: Add a new reply to a post"); + console.log(" clear: Remove all replies from a post"); +} + +async function listReplies() { + const url = await getInput("Input the url of the post to list the replies of:"); + await getProperties(url, "replies").then(({ replies }) => + console.log(...(replies as unknown[]).map(r => JSON.stringify(r))) + ); +} + +async function addReply() { + const url = await getInput("Input the url of the post add a reply to:"); + const syndication = await getInput("Input the url of the reply:"); + const body = await getInput("Input the html of the reply:"); + const published = await getInput("Input the timestamp of the reply:"); + const author = { + name: await getInput("Input the name of the reply's author:"), + url: await getInput("Input the canonical url of the reply's author:"), + image: await uploadMedia(await getInput("Input the address of the reply's author's pfp:")) + }; + + await updatePost(url, { + add: { + replies: [ + { + body, + author, + published: new Date( + Number.isNaN(parseInt(published)) ? published : parseInt(published) + ).getTime(), + syndication + } + ] + } + }); +} + +async function clearReplies() { + const url = await getInput("Input the url of the post to clear the replies of:"); + await updatePost(url, { + delete: "replies" + }); +} diff --git a/syndications/indiekit.ts b/syndications/indiekit.ts index 6ad61fcf2..66f243e2f 100644 --- a/syndications/indiekit.ts +++ b/syndications/indiekit.ts @@ -1,7 +1,8 @@ import fs from "fs"; import open from 'open'; import { fileTypeFromBuffer } from 'file-type'; -import type { Author, Post } from "~/types"; +import { getArchiveUrl } from "./archive_utils"; +import type { Author, Post, Reply } from "~/types"; function getHash(data: Bun.BlobOrStringOrBuffer) { const hasher = new Bun.CryptoHasher("md5"); @@ -94,18 +95,18 @@ async function authenticate() { } let retries = 0; -async function sendPost(body: Record) { +export async function sendMessage(body: string): Promise { if (accessToken == null) { accessToken = await authenticate(); } - await fetch("https://indie.incremental.social/micropub", { + return await fetch("https://indie.incremental.social/micropub", { method: "POST", headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' }, - body: JSON.stringify({ type: "h-entry", properties: body }) + body }).then(async res => { if (res.status === 429) { retries++; @@ -114,22 +115,63 @@ async function sendPost(body: Record) { process.exit(0); } await new Promise(resolve => setTimeout(resolve, 1000)); - return await sendPost(body); + return await sendMessage(body); } retries = 0; - if (res.status === 202) { - console.log(await res.json().then(r => r.success_description as string)); - } else { - console.warn("Failed to send post to indiekit", res, await res.text()); - throw res; + return res; + }); +} + +async function sendPost(body: Record) { + await sendMessage(JSON.stringify({ type: "h-entry", properties: body })) + .then(async res => { + if (res.status === 202) { + console.log(await res.json().then(r => r.success_description as string)); + } else { + console.warn("Failed to send message to indiekit", res, await res.text()); + throw res; + } + }); +} + +export async function getProperties(postUrl: string, ...properties: string[]): +Promise> { + if (accessToken == null) { + accessToken = await authenticate(); + } + + let reqUrl = "https://indie.incremental.social/micropub?q=source"; + reqUrl += `&url=${encode(postUrl)}`; + if (properties.length > 0) { + reqUrl += '&' + properties.map(p => `properties[]=${encode(p)}`).join('&'); + } + + return await fetch(reqUrl, { + method: "GET", + headers: { + 'Authorization': `Bearer ${accessToken}`, + 'Content-Type': 'application/json' } + }).then(async res => { + if (res.status === 429) { + retries++; + if (retries > 3) { + console.error("Too many retries! Giving up."); + process.exit(0); + } + await new Promise(resolve => setTimeout(resolve, 1000)); + return await getProperties(postUrl, ...properties); + } + + retries = 0; + return (await res.json()).properties; }); } const MEDIA_URLS_PATH = "./syndications/media_urls.json"; let mediaUrls: Record | undefined = undefined; -async function uploadMedia(url: string) { +export async function uploadMedia(url: string) { if (mediaUrls == null) { mediaUrls = fs.existsSync(MEDIA_URLS_PATH) ? JSON.parse(fs.readFileSync(MEDIA_URLS_PATH).toString()) as {} : {}; @@ -139,10 +181,18 @@ async function uploadMedia(url: string) { return mediaUrls[url]; } - let res = await fetch(url); + let res = await fetch(url, { redirect: "follow" }); if (res.status !== 200) { - console.log("Failed to download media", url, res, await res.text()); - return undefined; + console.log("Failed to download media:", res.status, res.statusText); + const archiveUrl = await getArchiveUrl(url); + if (archiveUrl) { + console.log("...but it appears archive.org may have a copy! Download from there..."); + res = await fetch(archiveUrl, { redirect: "follow" }); + if (res.status !== 200) { + console.log("Archive.org failed as well. Giving up."); + return undefined; + } + } } // Check if its already uploaded @@ -195,6 +245,7 @@ export async function addArticle(article: { category: string | string[]; photo?: string; originalUrl?: string; + replies?: Reply[]; }) { const { photo, ...body } = article; const preview = photo == null ? undefined : await uploadMedia(photo); @@ -215,7 +266,8 @@ export async function addBookmark(bookmark: { if (author) { author.image = author.image == null ? undefined : await uploadMedia(author.image); } - await sendPost({ ...body, author, preview }); + const archiveUrl = await getArchiveUrl(bookmark["bookmark-of"], bookmark.published?.getTime()); + await sendPost({ ...body, author, preview, archiveUrl }); } export async function addFavorite(favorite: { @@ -232,17 +284,20 @@ export async function addFavorite(favorite: { if (author) { author.image = author.image == null ? undefined : await uploadMedia(author.image); } - await sendPost({ ...body, author, preview }); + const archiveUrl = await getArchiveUrl(favorite["like-of"], favorite.published?.getTime()); + await sendPost({ ...body, author, preview, archiveUrl }); } export async function addReply(reply: { 'in-reply-to': string; + name?: string; content: string; published?: Date; category: string | string[]; photo?: string; originalUrl?: string; - parent: Partial + parent: Partial; + replies?: Reply[]; }) { const { photo, parent, ...body } = reply; const preview = photo == null ? undefined : await uploadMedia(photo); @@ -252,7 +307,8 @@ export async function addReply(reply: { if (parent.author?.image != null) { parent.author.image = await uploadMedia(parent.author.image); } - await sendPost({ ...body, parent, preview }); + const archiveUrl = await getArchiveUrl(reply["in-reply-to"], reply.published?.getTime()); + await sendPost({ ...body, parent, preview, archiveUrl }); } export async function addRepost(repost: { @@ -269,5 +325,6 @@ export async function addRepost(repost: { if (author) { author.image = author.image == null ? undefined : await uploadMedia(author.image); } - await sendPost({ ...body, author, preview }); + const archiveUrl = await getArchiveUrl(repost["repost-of"], repost.published?.getTime()); + await sendPost({ ...body, author, preview, archiveUrl }); } diff --git a/syndications/reddit_utils.ts b/syndications/reddit_utils.ts new file mode 100644 index 000000000..b0ae454ce --- /dev/null +++ b/syndications/reddit_utils.ts @@ -0,0 +1,169 @@ +import fs from "fs"; +import UserAgent from "user-agents"; +import snoowrap from "snoowrap"; + +const { clientId, clientSecret, username, password } = + JSON.parse(fs.readFileSync("./syndications/reddit_credentials.json").toString()); + +// The snoowrap typings are bad/inaccurate +interface Comment { + body_html: string; + permalink: string; + created: number; + subreddit?: string | { display_name: string }; + subreddit_name_prefixed: string; + author: string | { name: string }; + link_id: string; + replies?: { + created: number; + body_html: string; + author: string; + permalink: string; + }[]; + // and a bunch more we're not using +} + +interface Submission { + selftext_html: string; + permalink: string; + title: string; + created: number; + subreddit: string | { display_name: string }; + subreddit_name_prefixed: string; + author: string | { name: string }; + url: string; + preview?: { + images?: { + source?: { + url?: string; + } + }[] + }; + replies?: { + created: number; + body_html: string; + author: string; + permalink: string; + }[]; + // and a bunch more we're not using +} + +let r: snoowrap; +function setupReddit() { + try { + r = new snoowrap({ + userAgent: new UserAgent().toString(), + clientId, clientSecret, username, password + }); + return true; + } catch (error) { + console.error("Failed to setup reddit:", error); + process.exit(0); + } +} +setupReddit(); + +let ignoredSubreddits = new Set(); +const IGNORED_SUBREDDITS_PATH = "./syndications/ignored_subreddits.txt"; +if (fs.existsSync(IGNORED_SUBREDDITS_PATH)) { + ignoredSubreddits = new Set(fs.readFileSync(IGNORED_SUBREDDITS_PATH).toString().split("\n")); +} + +let subredditTags: Record = {}; +const SUBREDDIT_TAGS_PATH = "./syndications/subreddit_tags.json"; +if (fs.existsSync(SUBREDDIT_TAGS_PATH)) { + subredditTags = JSON.parse(fs.readFileSync(SUBREDDIT_TAGS_PATH).toString()); +} + +// https://stackoverflow.com/a/52171480/4376101 +const cyrb53 = (str: string, seed = 0) => { + let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed; + for(let i = 0, ch; i < str.length; i++) { + ch = str.charCodeAt(i); + h1 = Math.imul(h1 ^ ch, 2654435761); + h2 = Math.imul(h2 ^ ch, 1597334677); + } + h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507); + h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909); + h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507); + h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909); + + return 4294967296 * (2097151 & h2) + (h1 >>> 0); +}; + +export function getAvatar(user: string) { + const index = cyrb53(user) % 8; + return `https://www.redditstatic.com/avatars/defaults/v2/avatar_default_${index}.png`; +} + +export function extractUsername(user: Comment["author"]) { + return typeof user === "string" ? user : user.name; +} + +export function extractSubreddit(comment: Comment | Submission) { + if (typeof comment.subreddit === "string") { + return comment.subreddit; + } else if (comment.subreddit != null) { + return comment.subreddit.display_name; + } + return comment.subreddit_name_prefixed.slice(2); +} + +// I believe we've been permanently rate-limited, so we just read comments and posts from cache +export function getComment(id: string) { + let comment: Comment | undefined; + const commentCachePath = `./syndications/cache/${id}.json`; + if (fs.existsSync(commentCachePath)) { + comment = JSON.parse(fs.readFileSync(commentCachePath).toString()); + } + if (comment == undefined) { + return undefined; + } + if (extractUsername(comment.author) === "[deleted]") { + return undefined; + } + if (Object.keys(comment).length === 0) { + return undefined; + } + if (ignoredSubreddits.has(extractSubreddit(comment))) { + return undefined; + } + comment.subreddit = subredditTags[(extractSubreddit(comment)).toLowerCase()]; + comment.permalink = "https://www.reddit.com" + comment.permalink; + return comment; +} + +export function getSubmission(id: string) { + let submission: Submission | undefined; + const submissionCachePath = `./syndications/cache/${id}.json`; + if (fs.existsSync(submissionCachePath)) { + submission = JSON.parse(fs.readFileSync(submissionCachePath).toString()); + } + if (submission == undefined) { + return undefined; + } + if (extractUsername(submission.author) === "[deleted]") { + return undefined; + } + if (Object.keys(submission).length === 0) { + return undefined; + } + if (ignoredSubreddits.has(extractSubreddit(submission))) { + return undefined; + } + submission.subreddit = subredditTags[(extractSubreddit(submission)).toLowerCase()]; + submission.permalink = "https://www.reddit.com" + submission.permalink; + return submission; +} + +export function getPostPreview(submission: Submission) { + return submission.preview?.images?.[0]?.source?.url; +} + +export function getAuthorObj(author: string) { + return { + name: author, + url: `https://www.reddit.com/u/${author}`, + image: getAvatar(author) + }; +} diff --git a/syndications/subreddit_tags.json b/syndications/subreddit_tags.json new file mode 100644 index 000000000..5c7607089 --- /dev/null +++ b/syndications/subreddit_tags.json @@ -0,0 +1,752 @@ +{ + "antijokes": "comedy", + "announcements": "reddit", + "animalcrossingmeme": "nintendo", + "androiddev": "android", + "androidapps": "android", + "amadisasters": "ama", + "airz23": "tales", + "talesfromtechsupport": "tales", + "themoddingtree": "incremental", + "195": "comedy", + "bioshockinfinite": "gaming", + "bioshock": "gaming", + "cyanideandhappiness": "comics", + "comedyheaven": "comedy", + "comedycemetery": "comedy", + "collegehumor": "comedy", + "code": "programming", + "clickerheroes": "incremental", + "incremental_games": "incremental", + "incremental_gamedev": "incremental", + "tuxedo_jack": "politics", + "texasforsanders": "politics", + "walkablestreets": "urbanism", + "sandersforpresident": "politics", + "yangforpresidenthq": "politics", + "webdev": "programming", + "undertaleshitposts": "gaming", + "u_srgrafo": "comics", + "videos": "entertainment", + "voidlinux": "linux", + "vrui": "gaming", + "vrphysics": "gaming", + "vive": "gaming", + "voxelgamedev": "gamedev", + "technoblade": "minecraft", + "teslamotors": "entertainment", + "thanksobama": "comedy", + "thebutton": "reddit", + "place": "reddit", + "theoryofreddit": "reddit", + "traaaaaaannnnnnnnnns": "comedy", + "trendingsubreddits": "reddit", + "truereddit": "reddit", + "starterpacks": "comedy", + "subredditdrama": "reddit", + "subredditoftheday": "reddit", + "subredditsimulator": "reddit", + "talesfromtales": "tales", + "talesfromthepizzaguy": "tales", + "talesfromthelaw": "tales", + "talesfromthecustomer": "tales", + "talesfromretail": "tales", + "talesfromnoreply": "tales", + "talesfromlife": "tales", + "tearsofthekingdom": "zelda", + "shadowban": "reddit", + "shittyprogramming": "programming", + "snoovatars": "reddit", + "softwaregore": "comedy", + "soccer": "entertainment", + "propagandaposters": "politics", + "prorevenge": "tales", + "psispellcompendium": "minecraft", + "phoenixsc": "comedy", + "pixelart": "art", + "placeapi": "reddit", + "playmindcrack": "minecraft", + "playmygame": "gaming", + "pokemongo": "pokemon", + "pokemongodev": "pokemon", + "pokemongomystic": "pokemon", + "pokemonpicross": "pokemon", + "polandball": "comics", + "politicalhumor": "politics", + "political_revolution": "politics", + "politicalvideo": "politics", + "polymclauncher": "minecraft", + "prequelmemes": "movies", + "pricefield": "lifeisstrange", + "programme_irl": "programming", + "programmerreactions": "programming", + "programmertil": "programming", + "programmerhumor": "programming", + "programminghorror": "programming", + "programmingtools": "programming", + "pewdiepiesubmissions": "comedy", + "oculus": "gaming", + "oneplus": "android", + "ooer": "comedy", + "patches765": "tales", + "pcmasterrace": "gaming", + "pettyrevenge": "tales", + "museumofreddit": "reddit", + "nameaserver": "reddit", + "neutralpolitics": "politics", + "nexus": "android", + "nfl": "entertainment", + "nexus6": "android", + "nonononoyes": "comedy", + "notkenm": "comedy", + "notmyjob": "comedy", + "nottheonion": "comedy", + "nuclearrevenge": "tales", + "nursing": "education", + "mariomaker": "nintendo", + "marvel": "movies", + "marvelstudios": "movies", + "maliciouscompliance": "tales", + "materialdesign": "design", + "maybemaybemaybe": "comedy", + "maydaystrike": "politics", + "meirl": "comedy", + "memes": "comedy", + "memerestoration": "comedy", + "memeyourenthusiasm": "comedy", + "mildlyinfuriating": "tales", + "mindcrack": "minecraft", + "mindcrackcirclejerk": "minecraft", + "mindcrackdiscussion": "minecraft", + "minecraftdungeons": "minecraft", + "minecraft_earth": "minecraft", + "minecraftinventions": "minecraft", + "minecraftsuggestions": "minecraft", + "karmacourt": "reddit", + "kenm": "comedy", + "keming": "comedy", + "kidsarefuckingstupid": "comedy", + "lasercleaningporn": "entertainment", + "latestagecapitalism": "politics", + "learnpython": "programming", + "letsplaymygame": "gaming", + "libertarian": "politics", + "linuxcirclejerk": "linux", + "linux_gaming": "linux", + "linuxhardware": "linux", + "linuxmasterrace": "linux", + "linuxmemes": "linux", + "lolphp": "programming", + "ludology": "gaming", + "ludwigahgren": "comedy", + "hyruleengineering": "zelda", + "hyrulewarriors": "zelda", + "iama": "ama", + "iamverybadass": "comedy", + "iamverysmart": "comedy", + "ideasfortheadmins": "reddit", + "idontworkherelady": "tales", + "itsaunixsystem": "linux", + "jakeandamir": "comedy", + "java": "programming", + "javascript": "programming", + "jokes": "comedy", + "justgamedevthings": "gamedev", + "gifbattles": "entertainment", + "gifsound": "entertainment", + "gifs": "entertainment", + "gifsthatkeepongiving": "entertainment", + "goldbenefits": "reddit", + "googlehome": "technology", + "googlepixel": "android", + "grilledcheese": "entertainment", + "hillaryforprison": "politics", + "highqualitygifs": "entertainment", + "hitboxgore": "gaming", + "holdmybeer": "comedy", + "holdmycatnip": "comedy", + "holup": "entertainment", + "hqgstudios": "music", + "humblebundles": "gaming", + "feedthebeast": "minecraft", + "fellowkids": "comedy", + "fixedbytheduet": "entertainment", + "formula1": "entertainment", + "fortnite": "gaming", + "fortnitebr": "gaming", + "financialindependence": "politics", + "funnyandsad": "comedy", + "funnyvideos": "comedy", + "galaxynote5": "android", + "funny": "comedy", + "galaxys7": "android", + "gamedeals": "gaming", + "gamedesign": "gamedev", + "gamedevelopment": "gamedev", + "gamedevscreens": "gamedev", + "gamerporn": "gaming", + "gamers": "gaming", + "games": "gaming", + "gametales": "tales", + "gaming4gamers": "gaming", + "gamingcirclejerk": "gaming", + "dndgreentext": "ttrpg", + "dnd": "ttrpg", + "dndhomebrew": "ttrpg", + "dndmemes": "ttrpg", + "eatcheapandhealthy": "politics", + "entitledparents": "tales", + "entitledpeople": "tales", + "fakealbumcovers": "entertainment", + "facepalm": "entertainment", + "circlejerk": "reddit", + "cpp": "programming", + "crappydesign": "design", + "cringe": "entertainment", + "creepyasterisks": "entertainment", + "cringepics": "entertainment", + "animalsbeingjerks": "entertainment", + "writingprompts": "writing", + "tifu": "tales", + "thesilphroad": "pokemon", + "workreform": "politics", + "antiwork": "politics", + "amitheasshole": "tales", + "amifreetogo": "tales", + "amibeingdetained": "tales", + "adviceanimals": "comedy", + "bollywoodrealism": "comedy", + "bettereveryloop": "entertainment", + "beetlejuicing": "reddit", + "changelog": "reddit", + "cgpgrey2": "education", + "casualiama": "ama", + "bulletjournal": "art", + "bujo": "art", + "buildapc": "technology", + "buildapcsales": "technology", + "breath_of_the_wild": "zelda", + "diwhy": "comedy", + "dadjokes": "comedy", + "crackpack": "minecraft", + "gamerghazi": "politics", + "breadtube": "politics", + "murica": "comedy", + "murderedbywords": "comedy", + "modnews": "reddit", + "modcoord": "reddit", + "mirrorsforsale": "comedy", + "militarystories": "tales", + "military": "politics", + "mildlyinteresting": "entertainment", + "me_irl": "comedy", + "pics": "entertainment", + "photoshopbattles": "comedy", + "phijkchu": "entertainment", + "a:t5_3bl3m": "entertainment", + "a:t5_30a68": "minecraft", + "personalfinancecanada": "politics", + "personalfinance": "politics", + "perfecttiming": "entertainment", + "perfectlycutscreams": "entertainment", + "perfectloops": "entertainment", + "peoplefuckingdying": "comedy", + "peoplebeingjerks": "entertainment", + "penspinning": "entertainment", + "penmanshipporn": "art", + "patientgamers": "gaming", + "pathfinder_rpg": "ttrpg", + "pathfinder": "ttrpg", + "palestine": "politics", + "oopsdidntmeanto": "comedy", + "self": "reddit", + "askmen": "entertainment", + "askpsychology": "education", + "askhistorians": "education", + "askculinary": "entertainment", + "assholedesign": "design", + "animalcrossing": "nintendo", + "amongus": "gaming", + "unexpectedhogwarts": "entertainment", + "unity3d": "gamedev", + "godot": "gamedev", + "unixporn": "linux", + "yugioh": "television", + "youtubehaiku": "entertainment", + "youtube": "entertainment", + "yesyesyesyesno": "comedy", + "yandere_simulator_b": "gaming", + "yandere_simulator": "gaming", + "xubuntu": "linux", + "wtf": "entertainment", + "worldnews": "politics", + "worldbuilding": "comedy", + "wow": "entertainment", + "wowthanksimcured": "comedy", + "written4reddit": "writing", + "woahdude": "entertainment", + "13reasonswhy": "television", + "3dprinting": "art", + "3ds": "nintendo", + "actlikeyoubelong": "comedy", + "adventuretime": "television", + "advice": "entertainment", + "agario": "gaming", + "antimatterdimensions": "incremental", + "apple": "technology", + "askreddit": "entertainment", + "askredditafterdark": "entertainment", + "askscience": "science", + "asksciencefiction": "entertainment", + "aspergers": "education", + "atheism": "politics", + "atom": "programming", + "autochess": "gaming", + "aww": "entertainment", + "baww": "entertainment", + "baduibattles": "design", + "bananasforscale": "comedy", + "battlefield_one": "gaming", + "battlestations": "technology", + "beamazed": "entertainment", + "beatsaber": "gaming", + "beginnersguide": "gaming", + "bestof": "entertainment", + "bestoflegaladvice": "tales", + "beta": "reddit", + "bikinibottomtwitter": "comedy", + "bitcoin": "technology", + "blackmagicfuckery": "comedy", + "blackops4": "gaming", + "blackpeoplegifs": "entertainment", + "blackpeopletwitter": "entertainment", + "bleachshirts": "art", + "blink182": "music", + "blunderyears": "comedy", + "boardgames": "gaming", + "bojackhorseman": "television", + "bokunoheroacademia": "television", + "books": "entertainment", + "bossfight": "comedy", + "botsrights": "entertainment", + "botwatch": "entertainment", + "bravestwarriors": "television", + "bsa": "tales", + "buildingarcadia": "gaming", + "bullshitadvertising": "design", + "bullshit_translator": "writing", + "buyitforlife": "politics", + "captaindisillusion": "entertainment", + "cartoonphysics": "comedy", + "casualconversation": "entertainment", + "catastrophicfailure": "entertainment", + "cats": "entertainment", + "chairsunderwater": "comedy", + "changemyview": "politics", + "chatgpt": "technology", + "chemicalreactiongifs": "science", + "choosingbeggars": "entertainment", + "chromeos": "technology", + "circleoftrust": "reddit", + "college": "entertainment", + "conspiracy": "entertainment", + "convenientcop": "entertainment", + "cookieclicker": "incremental", + "coolgamesinc": "gamedev", + "coronavirus": "politics", + "cosplay": "art", + "creepy": "entertainment", + "crypto": "technology", + "cscareerquestions": "programming", + "curiousvideos": "entertainment", + "cynicalbrit": "gaming", + "damnthatsinteresting": "entertainment", + "dankmemes": "comedy", + "dart": "urbanism", + "datahoarder": "technology", + "dataisbeautiful": "science", + "datascience": "science", + "deadpool": "movies", + "destinythegame": "gaming", + "discordapp": "technology", + "disenchantment": "television", + "diy": "entertainment", + "dncleaks": "politics", + "dota2": "gaming", + "dougdoug": "entertainment", + "elderscrolls": "gaming", + "elderscrollsonline": "gaming", + "eminem": "music", + "engineering": "technology", + "engineeringporn": "technology", + "enzocomics": "comics", + "esist": "politics", + "eve": "gaming", + "expectationvsreality": "entertainment", + "explainbothsides": "politics", + "eyebleach": "entertainment", + "fallout": "gaming", + "fantheories": "entertainment", + "fireemblem": "gaming", + "firewatch": "gaming", + "forager": "gaming", + "freesoftware": "technology", + "frogs": "entertainment", + "fuckcars": "urbanism", + "fucklawns": "urbanism", + "fuckthealtright": "politics", + "funkopop": "gaming", + "gamebuildergarage": "gamedev", + "gemcraft": "gaming", + "ghibli": "movies", + "glitch_art": "art", + "godus": "gaming", + "gopro": "entertainment", + "grassrootsselect": "politics", + "gravityfalls": "television", + "gwent": "gaming", + "h3h3productions": "entertainment", + "hadesthegame": "gaming", + "haltandcatchfire": "television", + "harmonquest": "television", + "harrypotter": "movies", + "hasan_piker": "politics", + "headphones": "technology", + "hearthstone": "gaming", + "heathers": "movies", + "hellointernet": "education", + "historyporn": "education", + "houston": "places", + "idiotsincars": "entertainment", + "im14andthisisdeep": "politics", + "india": "places", + "indiegames": "gaming", + "indiegaming": "gaming", + "inscryption": "gaming", + "instant_regret": "entertainment", + "interestingasfuck": "entertainment", + "irc": "technology", + "irleastereggs": "entertainment", + "ironicsigns": "entertainment", + "joinrobin": "politics", + "justfuckmyshitup": "entertainment", + "kakosindustries": "entertainment", + "kurzgesagt": "education", + "lastweektonight": "politics", + "latex": "programming", + "leagueoflegends": "gaming", + "learndota2": "gaming", + "learnuselesstalents": "entertainment", + "london": "places", + "lootcratespoilers": "gaming", + "luna_lovewell": "writing", + "mademesmile": "entertainment", + "magictcg": "gaming", + "mandelaeffect": "entertainment", + "marbleitup": "gaming", + "marblemachinex": "music", + "mario": "nintendo", + "masterofnone": "television", + "masterreturns": "entertainment", + "mechanicalkeyboards": "technology", + "melvoridle": "incremental", + "minimalism": "design", + "minionhate": "comedy", + "mobpsycho100": "television", + "monitors": "technology", + "morbidquestions": "entertainment", + "mrrobot": "television", + "mychemicalromance": "music", + "mythbusters": "television", + "netsec": "technology", + "newjersey": "places", + "niceguys": "entertainment", + "nickofstatic": "entertainment", + "nightvale": "entertainment", + "nintendoswitch": "nintendo", + "nolawns": "urbanism", + "nomansskythegame": "gaming", + "nosleep": "writing", + "nostupidquestions": "entertainment", + "notjustbikes": "urbanism", + "nvidia": "technology", + "oddlysatisfying": "entertainment", + "oddlyterrifying": "entertainment", + "oldpeoplefacebook": "entertainment", + "oldschoolcool": "entertainment", + "onepunchman": "television", + "ontario": "places", + "osu": "gaming", + "outerwilds": "gaming", + "outoftheloop": "news", + "outside": "entertainment", + "overwatch": "gaming", + "pax": "gaming", + "perfecttower": "incremental", + "piano": "music", + "pidgin": "technology", + "piracy": "technology", + "plastidip": "entertainment", + "playtemtem": "gaming", + "plex": "technology", + "pointlesslygendered": "comedy", + "privacy": "politics", + "proceduralgeneration": "gamedev", + "ps4": "gaming", + "psych": "television", + "psychonaut": "gaming", + "publicfreakout": "entertainment", + "punkfashion": "art", + "rainmeter": "technology", + "rarepuppers": "entertainment", + "reactiongifs": "entertainment", + "reallifedoodles": "entertainment", + "reallifeshinies": "entertainment", + "redditalternatives": "reddit", + "reddit.com": "reddit", + "redditonwiki": "reddit", + "redditsync": "reddit", + "reddit_themes": "reddit", + "relationship_advice": "tales", + "relayforreddit": "reddit", + "rickandmorty": "television", + "roastmycar": "entertainment", + "rocketjump": "entertainment", + "rocketleague": "gaming", + "roguegenesia": "gaming", + "rpgtables": "ttrpg", + "ruinedmyday": "entertainment", + "sadcringe": "entertainment", + "sandiego": "places", + "scotland": "places", + "scrapbooking": "art", + "selfhosted": "technology", + "shitcosmosays": "comedy", + "shittyaskscience": "science", + "shittyconspiracy": "entertainment", + "shittykickstarters": "entertainment", + "shittylifeprotips": "entertainment", + "shittyreactiongifs": "entertainment", + "shittyrobots": "entertainment", + "showerthoughts": "entertainment", + "siliconvalleyhbo": "television", + "simulated": "entertainment", + "sixwordstories": "writing", + "skyrim": "gaming", + "sodadungeon": "incremental", + "soylent": "entertainment", + "speedrun": "gaming", + "stallmanwasright": "technology", + "starcitizen": "gaming", + "stardewvalley": "gaming", + "starwars": "movies", + "steam": "valve", + "steamdeck": "valve", + "stolenseats": "entertainment", + "strangerthings": "television", + "survivor": "television", + "swiggityswootygifs": "entertainment", + "swipeforfacebook": "technology", + "sydney": "places", + "synology": "technology", + "tabletopsimulator": "gaming", + "taptitans": "incremental", + "taptitans2": "incremental", + "tasker": "technology", + "teachers": "education", + "teamscorpion": "television", + "telegram": "technology", + "texas": "places", + "thailand": "places", + "amazon": "technology", + "labor": "politics", + "legaladvice": "tales", + "legaladviceuk": "comedy", + "leopardsatemyface": "entertainment", + "lgv20": "android", + "lifeprotips": "entertainment", + "lilwa_dexel": "writing", + "magic": "entertainment", + "mashgifs": "television", + "masterhacker": "comedy", + "medalmasters": "gaming", + "museumreviews": "reddit", + "namenerdcirclejerk": "entertainment", + "namenerds": "entertainment", + "narcissisticparents": "tales", + "nevertellmetheodds": "entertainment", + "nextfuckinglevel": "politics", + "nycbike": "entertainment", + "offmychest": "tales", + "onemillionwords": "writing", + "osana": "gaming", + "osha": "entertainment", + "placestart": "reddit", + "posterhunt": "television", + "psycho_alpaca": "writing", + "purplelounge": "reddit", + "quityourbullshit": "entertainment", + "raisedbynarcissists": "tales", + "randallcooper": "writing", + "randomkindness": "comedy", + "randomtables": "ttrpg", + "recruitinghell": "politics", + "redditserials": "writing", + "rpg": "ttrpg", + "rust": "programming", + "second": "reddit", + "secretsanta": "reddit", + "sequence": "reddit", + "silhouwhat": "design", + "skincareaddiction": "education", + "medicine": "education", + "space": "science", + "spacex": "science", + "squaredcircle": "entertainment", + "squidward_irl": "comedy", + "standupshots": "comedy", + "steamgrid": "valve", + "stoppedworking": "comedy", + "stupidpol": "politics", + "supplychain": "politics", + "survival": "tales", + "sysadmin": "technology", + "tabled": "ama", + "team60s": "reddit", + "breathinginformation": "comedy", + "companybattles": "comedy", + "croatianspy": "writing", + "cyberpunk": "art", + "deepintoyoutube": "reddit", + "digital_manipulation": "politics", + "drumpf": "politics", + "eugene": "places", + "exjw": "politics", + "explainlikeiama": "entertainment", + "explainlikeimfive": "entertainment", + "fuckhoa": "tales", + "futurology": "technology", + "gametheorists": "entertainment", + "geek": "entertainment", + "gnome": "linux", + "helpme": "politics", + "hiphopheads": "music", + "icandrawthat": "art", + "iiiiiiitttttttttttt": "technology", + "ilerminaty": "comedy", + "imaginarygaming": "art", + "imaginarygatekeeping": "comedy", + "infographics": "politics", + "internetisbeautiful": "entertainment", + "isitbullshit": "entertainment", + "istj": "entertainment", + "jobs": "tales", + "joeintransition": "politics", + "joerogan": "politics", + "justiceporn": "tales", + "justiceserved": "tales", + "blog": "reddit", + "blackout2015": "reddit", + "acqr": "nintendo", + "allaccessplaylists": "music", + "thatsinsane": "entertainment", + "the_gaben": "valve", + "thenetherlands": "places", + "therewasanattempt": "comedy", + "thisismylifenow": "comedy", + "thriftstorehauls": "entertainment", + "tiktokcringe": "entertainment", + "tiltshift": "art", + "todayilearned": "entertainment", + "undertale": "gaming", + "unethicallifeprotips": "comedy", + "unexpected": "entertainment", + "unrealengine": "gamedev", + "upliftingnews": "news", + "vampyr": "gaming", + "vegetarian": "politics", + "verticalwallpapers": "art", + "wallpaper": "art", + "wallpapers": "art", + "wallstreetbets": "entertainment", + "wearos": "android", + "web_design": "design", + "wellthatsucks": "comedy", + "wellthatwaspointless": "comedy", + "westworld": "television", + "whatcouldgoright": "comedy", + "whatcouldgowrong": "comedy", + "whatisthisthing": "entertainment", + "wheredidthesodago": "comedy", + "whereisassange": "politics", + "whitepeopletwitter": "entertainment", + "wholesome": "entertainment", + "wholesomecompliance": "tales", + "wholesomegreentext": "tales", + "wholesomememes": "comedy", + "wiiu": "nintendo", + "wikileaks": "politics", + "wikipedia": "education", + "winnipeg": "places", + "witcher": "gaming", + "youdontsurf": "comedy", + "yourjokebutworse": "comedy", + "xboxone": "gaming", + "youshouldknow": "entertainment", + "alberta": "places", + "ashens": "entertainment", + "atlanta": "places", + "austin": "places", + "australia": "places", + "badroommates": "tales", + "blackmirror": "television", + "boston": "places", + "canada": "places", + "cgpgrey": "education", + "chicago": "places", + "china": "places", + "dallas": "places", + "denton": "places", + "doctorwho": "television", + "europe": "places", + "justneckbeardthings": "tales", + "philosophy": "gaming", + "psychology": "education", + "thehunter": "gaming", + "tidtrt": "tales", + "timberwolves": "entertainment", + "tmobile": "technology", + "tooafraidtoask": "entertainment", + "topmindsofreddit": "reddit", + "translator": "politics", + "trashy": "entertainment", + "traumatizethemback": "tales", + "trees": "comedy", + "trexgonewild": "comedy", + "trollxchromosomes": "entertainment", + "trollxfunny": "entertainment", + "trumpgret": "politics", + "tumblr": "entertainment", + "twoxchromosomes": "tales", + "u_bluecoatengineer": "tales", + "u_elpinko": "music", + "u_kermit_defrogg": "tales", + "u__mikebishop": "urbanism", + "underreportednews": "news", + "upvoted": "reddit", + "urealms": "entertainment", + "usefulredcircle": "comedy", + "videoessay": "television", + "math": "science", + "visualizedmath": "science", + "vzla": "places", + "weddingshaming": "tales", + "wholesomebpt": "entertainment", + "wigglegrams": "art", + "wtfgaragesale": "entertainment", + "parenting": "education", + "anime": "television", + "food": "entertainment", + "google": "technology", + "sports": "entertainment" +} diff --git a/syndications/update_reddit.ts b/syndications/update_reddit.ts new file mode 100644 index 000000000..c642943dc --- /dev/null +++ b/syndications/update_reddit.ts @@ -0,0 +1,235 @@ +import fs from "fs"; +import { parse } from "csv-parse"; +import { addArticle, addBookmark, addFavorite, addReply, addRepost } from "./indiekit"; +import { + extractSubreddit, + extractUsername, + getAuthorObj, + getComment, + getPostPreview, + getSubmission +} from "./reddit_utils"; + +// I don't use reddit anymore, so I just use the takeout data I exported +async function run() { + await updateCommentVotes(); + await updateComments(); + await updateSubmissionVotes(); + await updateSubmissions(); + await updateSavedComments(); + await updateSavedSubmissions(); +} +run(); + +async function updateCommentVotes() { + const comment_votes = fs + .createReadStream("./syndications/reddit-export/comment_votes.csv") + .pipe(parse({ columns: true })); + for await (const { id, permalink, direction } of comment_votes) { + if (direction !== "up") { + continue; + } + + const comment = getComment(id); + if (comment == null) { + continue; + } + + const author = extractUsername(comment.author); + const subreddit = extractSubreddit(comment); + console.log(JSON.stringify({ + + "repost-of": permalink, + content: comment.body_html, + published: new Date(comment.created * 1000), + category: [subreddit], + author: getAuthorObj(author) + })) + + await addRepost({ + "repost-of": permalink, + content: comment.body_html, + published: new Date(comment.created * 1000), + category: [subreddit], + author: getAuthorObj(author) + }); + return; + } +} + +async function updateComments() { + const comments = fs + .createReadStream("./reddit-export/comments.csv") + .pipe(parse({ columns: true })); + for await (const { id, permalink, parent } of comments) { + const comment = getComment(id); + if (comment == null) { + continue; + } + + const subreddit = extractSubreddit(comment); + const parentComment = parent == null ? undefined : getComment(parent); + const submission = parent == null ? + getSubmission(comment.link_id.replace(/t._/, '')) : undefined; + const parentObj = (parent == null ? submission : parentComment)!; + const author = extractUsername(parentObj.author); + + await addReply({ + "in-reply-to": parent == null ? + (submission!.selftext_html ? submission!.permalink : submission!.url) : + parentComment!.permalink, + category: [subreddit], + content: comment.body_html, + parent: { + kind: parent == null ? "article" : "reply", + title: parent == null ? submission!.title : undefined, + description: parent == null ? + (submission!.selftext_html ?? undefined) : + parentComment!.body_html, + url: parent == null ? + (submission!.selftext_html ? undefined : submission!.url) : undefined, + published: new Date(parentObj.created * 1000).getTime(), + author: getAuthorObj(author), + image: parent == null ? getPostPreview(submission!) : undefined, + tags: [subreddit], + syndications: [parentObj.permalink] + }, + originalUrl: permalink, + published: new Date(comment.created * 1000), + replies: submission?.replies?.map(reply => ({ + author: getAuthorObj(reply.author), + published: new Date(reply.created * 1000).getTime(), + body: reply.body_html, + syndication: reply.permalink + })) + }); + return; + } +} + +async function updateSubmissionVotes() { + const comments = fs + .createReadStream("./reddit-export/post_votes.csv") + .pipe(parse({ columns: true })); + for await (const { id, permalink, direction } of comments) { + if (direction !== "up") { + continue; + } + + const submission = getSubmission(id); + if (submission == null) { + continue; + } + + const subreddit = extractSubreddit(submission); + + if (submission.selftext_html) { + await addRepost({ + "repost-of": permalink, + category: [subreddit], + content: submission.selftext_html, + name: submission.title, + published: new Date(submission.created * 1000), + author: getAuthorObj(extractUsername(submission.author)) + }); + } else { + await addBookmark({ + "bookmark-of": submission.url, + category: [subreddit], + published: new Date(submission.created * 1000) + }); + return; + } + } +} + +async function updateSubmissions() { + const posts = fs + .createReadStream("./syndications/reddit-export/posts.csv") + .pipe(parse({ columns: true })); + for await (const { id, permalink, date, subreddit, title, url, body } of posts) { + if (title === "[deleted by user]") { + continue; + } + + if (body) { + const submission = getSubmission(id); + if (submission == null) { + continue; + } + + await addArticle({ + name: title, + category: [subreddit], + content: body, + originalUrl: permalink, + published: new Date(date), + replies: submission?.replies?.map(reply => ({ + author: getAuthorObj(reply.author), + published: new Date(reply.created * 1000).getTime(), + body: reply.body_html, + syndication: reply.permalink + })) + }); + } else { + // TODO some of these should probably be replaced with article posts from the linked url + await addBookmark({ + "bookmark-of": url, + category: [subreddit], + published: new Date(date) + }); + return; + } + } +} + +async function updateSavedComments() { + const posts = fs + .createReadStream("./syndications/reddit-export/saved_comments.csv") + .pipe(parse({ columns: true })); + for await (const { id, permalink } of posts) { + const comment = getComment(id); + if (comment == null) { + continue; + } + + await addFavorite({ + "like-of": permalink, + category: [extractSubreddit(comment)], + content: comment.body_html, + published: new Date(comment.created * 1000) + }); + return; + } +} + +async function updateSavedSubmissions() { + const posts = fs + .createReadStream("./syndications/reddit-export/saved_posts.csv") + .pipe(parse({ columns: true })); + for await (const { id, permalink } of posts) { + const submission = getSubmission(id); + if (submission == null) { + continue; + } + + const subreddit = extractSubreddit(submission); + + if (submission.selftext_html) { + await addFavorite({ + "like-of": permalink, + name: submission.title, + category: [subreddit], + content: submission.selftext_html, + published: new Date(submission.created * 1000) + }); + } else { + await addFavorite({ + "like-of": permalink, + category: [subreddit], + published: new Date(submission.created * 1000) + }); + return; + } + } +}