This commit is contained in:
2021-11-01 18:38:58 -05:00
commit 0d2d278260
19 changed files with 875 additions and 0 deletions

106
runner/js/facebook_data.js Normal file
View File

@@ -0,0 +1,106 @@
() => {
function getTimeStamp(time_string) {
let d = new Date();
if (time_string.includes("Yesterday")) {
return (new Date(d.setDate(d.getDate() - 1)))
} else if (time_string.includes("AM") || time_string.includes("PM")) {
var date_strings = time_string.split(" ")
if (date_strings.length === 5) {
var month_string = date_strings[0]
var month = 0
switch (month_string) {
case "January":
month = 1
break
case "February":
month = 2
break
case "March":
month = 3
break
case "April":
month = 4
break
case "May":
month = 5
break
case "June":
month = 6
break
case "July":
month = 7
break
case "August":
month = 8
break
case "September":
month = 9
break
case "October":
month = 10
break
case "November":
month = 11
break
case "December":
month = 12
break
}
var day = parseInt(date_strings[1])
var year = d.getFullYear()
if (month === 12 && d.getMonth() !== month) {
year += 1
}
var hours = parseInt(date_strings[3].split(":")[0])
if (hours < 12 && date_strings[4] === "PM") {
hours += 12
}
var minutes = parseInt(date_strings[3].split(":")[1])
return new Date(year, month - 1, day, hours, minutes)
}
} else {
return (new Date())
}
}
function getURL(elm) {
res = elm.getElementsByTagName("a")
for (let i = 0; i < res.length; i++) {
if (res[i].href.includes("story.php?") && res[i].getAttribute("aria-label") == "Open story") {
return res[i].href
}
}
}
function getEngagement(elm) {
res = elm.getElementsByTagName("footer")[0]
engage_reg = /\d+/g
total = 0
try {
res.innerText.match(engage_reg).forEach(match => {
total += parseInt(match)
})
} catch (e) { return 0 }
return total
}
//Followers
followers = parseInt(document.getElementsByName("description")[0].getAttribute("content").replace(/,/g, '').match(/\d+/g)[0])
arts = document.getElementsByTagName("article")
posts = []
for (var i = 0; i < arts.length; i++) {
var timestamp = getTimeStamp(arts[i].getElementsByTagName("abbr")[0].innerText)
//Not accurate
var body = arts[i].innerText
var url = getURL(arts[i])
var engagement = getEngagement(arts[i])
if(url){
posts.push({ timestamp: timestamp.toISOString(), body: body, engagement: engagement, url: url })
}
}
return { followers: followers, posts: posts }
}