Skip to content

Instantly share code, notes, and snippets.

@oNguyenNgocTrung
Last active May 19, 2018 06:48
Show Gist options
  • Save oNguyenNgocTrung/ba92febece0627a19a04f49426da7de1 to your computer and use it in GitHub Desktop.
Save oNguyenNgocTrung/ba92febece0627a19a04f49426da7de1 to your computer and use it in GitHub Desktop.
Export csv use like post facebook
function convertArrayOfObjectsToCSV(args) {
var result, ctr, keys, columnDelimiter, lineDelimiter, data;
data = args.data || null;
if (data == null || !data.length) {
return null;
}
columnDelimiter = args.columnDelimiter || ',';
lineDelimiter = args.lineDelimiter || '\n';
keys = Object.keys(data[0]);
result = '';
result += keys.join(columnDelimiter);
result += lineDelimiter;
data.forEach(function(item) {
ctr = 0;
keys.forEach(function(key) {
if (ctr > 0) result += columnDelimiter;
result += item[key];
ctr++;
});
result += lineDelimiter;
});
return result;
}
function downloadCSV(args) {
var data, filename, link;
var csv = convertArrayOfObjectsToCSV({
data: args.stockData
});
if (csv == null) return;
filename = args.filename || 'export.csv';
if (!csv.match(/^data:text\/csv/i)) {
csv = 'data:text/csv;charset=utf-8,' + csv;
}
data = encodeURI(csv);
link = document.createElement('a');
link.setAttribute('href', data);
link.setAttribute('download', filename);
link.click();
}
function get_facebook_user_name(profile_url){
var facebook_url = 'https://www.facebook.com/';
var user_name = profile_url.slice(facebook_url.length, profile_url.indexOf('?')).replace("/", '');
return user_name === 'profile.php' ? '' : user_name;
}
function get_facebook_user_data(){
var stockData = [];
var profile_links = document.querySelectorAll('._5i_p:not(.hidden_elem) ul li div._5j0e.fsl.fwb.fcb a');
for (i = 0; i < profile_links.length; ++i) {
var id = JSON.parse(profile_links[i].getAttribute('data-gt'))['engagement']['eng_tid'];
var href = profile_links[i].getAttribute('href');
var name = profile_links[i].text;
stockData.push(
{
id: id,
name: name,
user_name: get_facebook_user_name(href),
avartar_url: 'https://avatars.io/facebook/' + id
}
);
}
return stockData;
}
downloadCSV({filename: 'stock-data.csv', stockData: get_facebook_user_data()});
// click loadmore
// document.querySelector("._5i_p:not(.hidden_elem) .uiMorePagerPrimary").click();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment