Skip to content

Stats: Reactions (Discord, Facebook, Reddit) #102

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import Discord from '../Discord'
import { StatisticType } from '../../../../../types/schemas/Statistic'

Discord.prototype.getReactedStatistics = async function getReactedStatistics() {
let Nyear = 1
const reactedData = await this.getReacted({
parsingOptions: {
pagination: {
offset: 0,
items: Infinity,
},
},
})

if (!reactedData) {
return null
}
reactedData.data.forEach((entry) => {
const end = new Date(new Date().setFullYear(new Date().getFullYear() - Nyear))
for (Nyear; entry.reaction.reactionDate! < end; Nyear += 1) {
Nyear += 1
break
}
})
return {
statistics: [
{
type: StatisticType.NUMBER,
value: (reactedData.data.length / Nyear).toFixed(2),
name: 'reactions over Time',
},
],
parsedFiles: reactedData?.parsedFiles ?? [],
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
import Facebook from '../Facebook'
import { StatisticType } from '../../../../../types/schemas/Statistic'

Facebook.prototype.getReactedStatistics = async function getReactedStatistics() {
let Nyear = 1
let like = 0
let laugh = 0
let wow = 0
let sorry = 0
let love = 0
let anger = 0
const reactedData = await this.getReacted({
parsingOptions: {
pagination: {
offset: 0,
items: Infinity,
},
},
})

if (!reactedData) {
return null
}
reactedData.data.forEach((entry) => {
const end = new Date(new Date().setFullYear(new Date().getFullYear() - Nyear))
for (Nyear; entry.reaction.reactionDate! < end; Nyear += 1) {
Nyear += 1
break
}
switch (entry.reaction.name) {
case 'HAHA': {
laugh += 1
break
}
case 'WOW': {
wow += 1
break
}
case 'LOVE': {
love += 1
break
}
case 'ANGER': {
anger += 1
break
}
case 'SORRY': {
sorry += 1
break
}
case 'LIKE': {
like += 1
break
}
default: {
like += 1
break
}
}
})
return {
statistics: [
{
type: StatisticType.NUMBER,
value: (reactedData.data.length / Nyear).toFixed(2),
name: 'reactions over Time',
},
{
type: StatisticType.NUMBER,
value: ((like / reactedData.data.length) * 100).toFixed(2),
name: 'Like emoji reacted over Time',
},
{
type: StatisticType.NUMBER,
value: ((love / reactedData.data.length) * 100).toFixed(2),
name: 'Love emoji reacted over Time',
},
{
type: StatisticType.NUMBER,
value: ((anger / reactedData.data.length) * 100).toFixed(2),
name: 'Anger emoji reacted over Time',
},
{
type: StatisticType.NUMBER,
value: ((wow / reactedData.data.length) * 100).toFixed(2),
name: 'Wow emoji reacted over Time',
},
{
type: StatisticType.NUMBER,
value: ((laugh / reactedData.data.length) * 100).toFixed(2),
name: 'Laugh emoji reacted over Time',
},
{
type: StatisticType.NUMBER,
value: ((sorry / reactedData.data.length) * 100).toFixed(2),
name: 'Sorry emoji reacted over Time',
},
],
parsedFiles: reactedData?.parsedFiles ?? [],
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import Reddit from '../Reddit'
import { StatisticType } from '../../../../../types/schemas/Statistic'

Reddit.prototype.getReactedStatistics = async function getReactedStatistics() {
let Nyear = 1
let up = 0
let down = 0
const reactedData = await this.getReacted({
parsingOptions: {
pagination: {
offset: 0,
items: Infinity,
},
},
})

if (!reactedData) {
return null
}
reactedData.data.forEach((entry) => {
const end = new Date(new Date().setFullYear(new Date().getFullYear() - Nyear))
for (Nyear; entry.reaction.reactionDate! < end; Nyear += 1) {
Nyear += 1
break
}
if (entry.reaction.name === 'up') {
up += 1
} else {
down += 1
}
})
return {
statistics: [
{
type: StatisticType.NUMBER,
value: (reactedData.data.length / Nyear).toFixed(2),
name: 'reactions over Time',
},
{
type: StatisticType.NUMBER,
value: ((up / reactedData.data.length) * 100).toFixed(2),
name: 'Up reacted over Time',
},
{
type: StatisticType.NUMBER,
value: ((down / reactedData.data.length) * 100).toFixed(2),
name: 'Down reacted over Time',
},
],
parsedFiles: reactedData?.parsedFiles ?? [],
}
}