Skip to content

Instantly share code, notes, and snippets.

@cgrinker
Created November 18, 2021 02:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cgrinker/02492369a2faf8ce04c8552c066a8955 to your computer and use it in GitHub Desktop.
Save cgrinker/02492369a2faf8ce04c8552c066a8955 to your computer and use it in GitHub Desktop.
NFT Shitpost Sources

NFT Drama Data Analysis

Now that the drama has died down about NFTs because of a Kyle (not the one that told Destiny about Justin.tv) there is still an outstanding question: How long do haters stay mad about ungrounded axioms?

An Example Hater

Hypothesis:

Experts estimate a period of two (2) days that Haters Stay Mad, Big Bag has them Big Mad, et al:

All right: we're done with that sponsor okay? Listen I told you guys a month ago. I'm going ultra sellout. I'll take any sponser that comes to me. I don't give a fuck.
I'm trying to cash out and get out of here before I get banned from this garbage ass website. When I said it before everybody laughed and thought I was joking, I'm not joking okay? If someone comes to me with a sponsor I will do it.
...
Clip that one, suck my dick. Be mad at me for two days on LSF. 

image

Methods

  • The top 1000 reddit posts in /r/destiny from the last 30 days by karma were scraped.
  • Posts from before the eternel.gg Tweet (60 total) were culled.
  • Posts were split into two catagories by whether their title or selftext contained the string NFT (case insensitive)
  • Posts containing the search string were assumed implicitly negative. Any postive posts are assumed to be made by Destiny stands worried about their social credit.
  • Graphs are left unsmoothed, much like the large brained readers currently in this thread.

Results

Post Count vs Karma Generation, 30 Day Period

NFTGate Produced a 1.58 Karma Multiplier (KM) against it's post count

image image

Discussion Profile by Flair Type

NFTGate produced a higher Shitpost and higher discussion percentile than other posts. Visualization of general flairs is complected by the use of "BIG IF TRUE" and "BINGCHILLING." Shitposting makes up just over half of subreddit content in general. Rejoice fellow proletariot in our sucsseful campagain against the mods

image image

Distribution of Posts per Day: Count vs Karma.

  • Peak posting occurs 15 days after eternal GG announcement. While post count never surpasses general discourse karma briefly shifts in favor of NFTGate during the peak.
  • Both Karma and total posts drop off substantially after three days.
  • Attempts for the terminally mad fail to produce a viral response 10 days after the intial peak.

image

image

Conclusions

NFTGate produced a highly leveraged (~1.5) post to karma response, and at it's peak became the dominant strain of DGG reddit drama. However it suffers a rapid, albiet attenuated falloff (~3.5 days vs an expected 2), and fails to reinfect the DGG host like other memes better designed to evade the immune system (eg BING CHILLING, starting shit with RTBA/4THOT, Linking to Kacey's Reddit comment history, Sigma Male memes)

import fetch from 'node-fetch';
import {writeFile} from 'fs/promises';
console.log("Yee");
function authHeader() {
const data = `${process.env.REDDIT_APP_ID}:${process.env.REDDIT_SECRET}`;
const buf = Buffer.from(data);
return buf.toString('base64');
}
interface RError {
error: string
}
interface Token {
access_token: string;
token_type: string;
expires_in: number;
scope: string;
}
async function auth(): Promise<Token&RError> {
return await (await fetch('https://www.reddit.com/api/v1/access_token', {
method: "POST",
headers: {
"Authorization": `Basic ${authHeader()}`,
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "github.com/cgrinker"
},
body: `grant_type=password&username=${process.env.REDIT_USER}&password=${process.env.REDDIT_PASSWORD}`,
})).json()
}
// EPOCH: 1634757420
async function wait(ms: number) {
return new Promise((yes, no) => {
setTimeout(()=>{yes(true)}, ms);
});
}
async function fetchPosts(token: string, after?: string) {
const query = after != "" ? `&after=${after}`: ""
return await (await fetch(`https://www.reddit.com/r/Destiny/top.json?t=month&limit=100${query}`, {
method: "GET",
headers: {
//"Authorization": `Bearer ${token}`,
// "Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "github.com/cgrinker"
},
})).json()
}
async function main() {
try {
const token = await auth();
if(token.error) {
throw token.error;
}
else {
let after = "";
let length = 1;
do
{
const p = await fetchPosts(token.access_token, after);
length = p.data.children.length;
after = p.data.children[p.data.children.length -1].data.name;
await writeFile(`data/${after != "" ? after: "00"}.json`, JSON.stringify(p));
await wait(250);
}
while(length != 0)
}
}
catch(e) {
console.error(e);
}
}
main();
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment