Created
March 4, 2019 02:45
-
-
Save monokaijs/677a2c0eee2a88e0f4918fbe30d64f92 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(() => { | |
/* | |
** Author: @MonokaiJsp (MonokaiJs | omfg.vn) | |
** Home: https://monokai.dev | |
** Please credit me if you're interested in my work :D | |
** DO NOT remove these credit line when sharing! | |
*/ | |
const exceptions = ['100030089564311', '100011158877849', '100001467593814']; | |
const LIMIT_POSTS = 100; | |
const ACCESS_TOKEN = ''; // GET TOKEN HERE: https://gist.github.com/monokaijs/ce3abbc37d6bd435f70e39fd59eb3f67 | |
var getFriendList = (e, o) => {var a = new XMLHttpRequest;a.onreadystatechange = (() => {4 == a.readyState && 200 == a.status && o(JSON.parse(a.responseText).data)}), a.open("GET", "https://graph.facebook.com/me/friends?limit=5000&fields=id,name&access_token=" + e), a.send()} | |
var getPosts = (e, o) => {var a = new XMLHttpRequest;a.onreadystatechange = (() => {4 == a.readyState && 200 == a.status && o(JSON.parse(a.responseText).data)}), a.open("GET", "https://graph.facebook.com/me/posts?limit="+LIMIT_POSTS+"&fields=id,name&access_token=" + e), a.send()} | |
var getShares=(e,n,o=!1)=>{o||(o="https://graph.facebook.com/"+n+"/comments?limit=5000&fields=from.id&access_token="+e);var t=new XMLHttpRequest;t.open("GET",o),t.send(),t.onreadystatechange=(()=>{if(4==t.readyState&&200==t.status){var e=JSON.parse(t.responseText);e.data.forEach(e=>{void 0!==friendsList[e.from.id]&&(friendsList[e.from.id].point+=1)}),void 0!==e.paging&&void 0!==e.paging.next?console.log("Continue scanning reactions for "+n):(console.log("Scanned comments on post "+n),completedPosts.push(n))}})},getComments=(e,n,o=!1)=>{o||(o="https://graph.facebook.com/"+n+"/comments?limit=5000&fields=from.id&access_token="+e);var t=new XMLHttpRequest;t.open("GET",o),t.send(),t.onreadystatechange=(()=>{if(4==t.readyState&&200==t.status){var o=JSON.parse(t.responseText);o.data.forEach(e=>{void 0!==friendsList[e.from.id]&&(friendsList[e.from.id].point+=1)}),void 0!==o.paging&&void 0!==o.paging.next?console.log("Continue scanning reactions for "+n):(console.log("Scanned comments on post "+n),getShares(e,n))}})},getReactions=(e,n,o=!1)=>{o||(o="https://graph.facebook.com/"+n+"/reactions?limit=5000&access_token="+e);var t=new XMLHttpRequest;t.open("GET",o),t.send(),t.onreadystatechange=(()=>{if(4==t.readyState&&200==t.status){var o=JSON.parse(t.responseText);o.data.forEach(e=>{void 0!==friendsList[e.id]&&(friendsList[e.id].point+=1)}),void 0!==o.paging&&void 0!==o.paging.next?console.log("Continue scanning reactions for "+n):(console.log("Scanned reactions on post "+n),getComments(e,n))}})},removeFriend=(e,n)=>{var o=new XMLHttpRequest,t=new FormData;t.append("fb_dtsg",require("DTSGInitialData").token),t.append("uid",e.id),t.append("unref","bd_profile_button"),t.append("floc","profile_button"),t.append("nctr[_mod]","pagelet_timeline_profile_actions"),t.append("__req","x"),t.append("__be","1"),t.append("__pc","PHASED:ufi_home_page_pkg"),t.append("dpr","1"),o.open("POST","https://www.facebook.com/ajax/profile/removefriendconfirm.php"),o.send(t),o.onreadystatechange=(()=>{4==o.readyState&&200==o.status&&n(e)})}; | |
var friendsList = {}, completedPosts = []; | |
console.log('Loading friends list...'); | |
getFriendList(ACCESS_TOKEN, graph_friendlist => { | |
console.log('Successfully loaded ' + graph_friendlist.length + ' friends...'); | |
for (fid in graph_friendlist) { | |
friendsList[graph_friendlist[fid].id] = {}; | |
friendsList[graph_friendlist[fid].id].name = graph_friendlist[fid].name; | |
friendsList[graph_friendlist[fid].id].point = 0; | |
} | |
console.log('Loading posts...'); | |
getPosts(ACCESS_TOKEN, posts => { | |
console.log('Loaded ' + posts.length + ' posts.'); | |
console.log('Loading posts reactions...'); | |
posts.forEach(post => { | |
getReactions(ACCESS_TOKEN, post.id, false); | |
}); | |
var interval = setInterval(() => { | |
if (completedPosts.length == posts.length) { | |
console.log('> Done scanning progress!'); | |
var removeList = []; | |
for (friend_id in friendsList) if (friendsList[friend_id].point == 0 && !exceptions.includes(friend_id)) removeList.push({ | |
id: friend_id, | |
name: friendsList[friend_id].name | |
}); | |
console.log('> Done filtered friends to be removed!'); | |
console.log('⚠️ ' + removeList.length + ' friends will be removed due to have no interaction!'); | |
var timer = 0; | |
removeList.forEach(rem => { | |
timer += 1; | |
setTimeout(() => { | |
removeFriend(rem, (removed) => { | |
console.log('✔️ [' + removed.id + '] ' + removed.name + ' has just been removed from friends list!'); | |
}); | |
}, timer * 800); | |
}); | |
clearInterval(interval); | |
} | |
}, 500); | |
}); | |
}); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Is this still working without any limitation or danger?