// var obj = document.getElementsByClassName("infinite-list-viewport")[0].getElementsByClassName("infinite-list-item infinite-list-item-transition"); // var topOfList = document.getElementsByClassName("_2wP_Y"); // topOfList.scrollTop = 50; // old = $("div.drawer-body").scrollTop() // $("div.drawer-body").scrollTop(old + 72) //Click the group Icon to open the Group info Window to the side // var openWAGroup = document.getElementsByClassName("_18tv-"); var openWAGroup = document.evaluate('//*[@id="main"]/header/div[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; var checkGroupInfoOpen = document.evaluate('//*[@id="app"]//div[contains(text(), "Group info")]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; if (!checkGroupInfoOpen){openWAGroup.click();} //Click the more Contacts button var btnClick_more = document.evaluate('//*[@id="app"]//span[@data-icon="down"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; if(btnClick_more) {btnClick_more.click();} // $("html, body").scrollTop(0); // SELECT "GROUP INFO" ELEMENT AS A WHOLE var scrollUp = document.getElementsByClassName("_2sNbV")[0]; // scrollUp.scrollTop = 0; // setTimeout(() => { // scrollUp.scrollTop = scrollUp.scrollHeight; // }, 3000); // var obj = document.getElementsByClassName("RLfQR")[0].getElementsByClassName("_2wP_Y"); //SELECT ALL PARTICIPANTS ELEMENT //var obj = document.getElementsByClassName("_37f_5")[0].getElementsByClassName("_3HZor")[0].getElementsByClassName("_3xdMj"); var obj = document.querySelector('[title="Exit group"]').parentNode.previousSibling.lastChild.firstChild.children var data = []; setTimeout(function() { for (var i = 0; i < obj.length; i++) { //GET PHONE NUMBER OR NAME IF ALREADY IN CONTACT // var num = obj[i].getElementsByClassName("emojitext ellipsify")[0].title; var namenum = obj[i].querySelector('[dir="auto"]').innerText; // var img = obj[i].getElementsByClassName("avatar-image is-loaded")[0].src.replace("t=s", "t=l"); //GET PROFILE IMAGE AND REPLACE WITH LARGE SIZE INSTEAD OF THUMBNAIL // try {var img = obj[i].getElementsByClassName("_3RWII")[0].src.replace("t=s", "t=l"); try {var img = obj[i].querySelector('[tabindex="-1"]').firstChild.firstChild.firstChild.getElementsByTagName('img')[0].src; var num = img.match(/u=(\d*)/)[1];} catch (err) { var img = "No Pic"; num = namenum.match(/\d+/g); } // img = img.src.replace("t=s", "t=l"); //GET SCREEN NAME // try { var name = obj[i].getElementsByClassName("emojitext screen-name-text")[0].outerText; } try { var name = obj[i].querySelector('[tabindex="-1"]').firstChild.lastChild.lastChild.lastChild.querySelector('[dir="auto"]').outerText; } catch (err) { var name = namenum; namenum = "IN_CONTACTS"; } //GET STATUS TEXT // try { var status = obj[i].getElementsByClassName("emojitext")[1].title } try { var status = obj[i].querySelector('[tabindex="-1"]').firstChild.lastChild.lastChild.querySelector('[dir="auto"]').title } catch (err) { var status = "NONE" } data[i] = { num: num, namenum: namenum, name: name, img: img, status: status }; } /* $(document).ready(function(){ $('button').click(function(){ var data = $('#txt').val(); if(data == '') return; JSONToCSVConvertor(data, "Whatsapp Contacts", true); }); }); */ // function JSONToCSVConvertor(JSONData, ReportTitle, ShowLabel) { //If JSONData is not an object then JSON.parse will parse the JSON string in an Object // var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData; var arrData = typeof data != 'object' ? JSON.parse(data) : data; var CSV = ''; //Set Report title in first row or line // CSV += ReportTitle + '\r\n\n'; var ReportTitle = "Whatsapp Contacts"; CSV += ReportTitle + '\r\n\n'; CSV += "Group Name : " +document.querySelector('[accept="image/gif,image/jpeg,image/jpg,image/png"]').parentNode.parentNode.nextSibling.querySelector('[contenteditable="false"]').textContent + '\r\n' + "Number of participants : " + obj.length + '\r\n\n'; //CSV += "Group Name : " + document.evaluate('//*[@id="main"]/header/div[2]/div[1]/div/span', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.innerHTML + '\r\n' + "Number of participants : " + obj.length + '\r\n\n'; //This condition will generate the Label/Header // if (ShowLabel) { if (true) { var row = ""; //This loop will extract the label from 1st index of on array for (var index in arrData[0]) { //Now convert each value to string and comma-seprated row += index + ','; } row = row.slice(0, -1); //append Label row with line break CSV += row + '\r\n'; } //1st loop is to extract each row for (var i = 0; i < arrData.length; i++) { var row = ""; //2nd loop will extract each column and convert it in string comma-seprated for (var index in arrData[i]) { row += '"' + arrData[i][index] + '",'; } row.slice(0, row.length - 1); //add a line break after each row CSV += row + '\r\n'; } /* if (CSV == '') { alert("Invalid data"); return; } */ //Generate a file name var fileName = "WAGroup_"; //this will remove the blank-spaces from the title and replace it with an underscore // fileName += document.getElementsByClassName("input-wrapper locked")[0].getElementsByTagName("div")[1].innerHTML.replace(/ /g,"_"); fileName += document.evaluate('//*[@id="main"]/header/div[2]/div[1]/div/span', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.innerHTML.replace(/ /g,"_"); //Initialize file format you want csv or xls var uri = 'data:text/csv;charset=utf-8,' + escape(CSV); // Now the little tricky part. // you can use either>> window.open(uri); // but this will not work in some browsers // or you will not get the correct file extension //this trick will generate a temp tag var link = document.createElement("a"); link.href = uri; //set the visibility hidden so it will not effect on your web-layout link.style = "visibility:hidden"; link.download = fileName + ".csv"; //this part will append the anchor tag and remove it after automatic click document.body.appendChild(link); link.click(); document.body.removeChild(link); // } }, 2000);