() => { 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 } }