qqgroupmember.js

qqgroupmember extractor

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/405906/838701/qqgroupmemberjs.js

  1. var localurl = location.href;
  2. function addbtn(){
  3. var btn = '<button id="getlitbtn" style="color: white;margin-left:20px;background-color: red;border: none;padding: 5px 10px;">提取群成员</button>';
  4. $('.group-tit').append(btn);
  5. $('#getlitbtn').click(run);
  6. }
  7.  
  8. function addstatus(){
  9. var s = '<div id="getliststatus" style=" position: fixed; top: 50%; left: 50%; background-color: black; color: white; padding: 20px; font-size: 20px; opacity: 70%; border-radius: 5px;">提取群成员中... </div>';
  10. $('body').append(s);
  11. }
  12. function changestatus(n,t){
  13. document.querySelector('#getliststatus').innerText = `提取群成员中(${n}/${t})...`;
  14. }
  15.  
  16. function adddownloadbtn(srcdata){
  17. var blob = new Blob(["\ufeff" + srcdata], {type: 'text/csv'});
  18. var btn = `<a id="numlistdl" class="btn" style="margin-left:20px;" href="${URL.createObjectURL(blob)}" download="${document.querySelector('#groupTit').innerText+'/'+new Date(new Date().getTime()).toLocaleDateString()}.csv">下载CSV</a>`;
  19. $('.group-tit').append(btn);
  20. }
  21. function showlist(){
  22. //console.log('showlist');
  23. var totalnum = parseInt(document.querySelector('#groupMemberNum').innerText);
  24. var num = document.querySelectorAll('tr.mb').length;
  25. //console.log('totalnum:',totalnum,' num get:',num);
  26. changestatus(num,totalnum);
  27. if(num<totalnum){
  28. scrollTo(0,document.documentElement.scrollHeight);
  29. setTimeout(showlist,500);
  30. }else{
  31. document.querySelector('#getliststatus').remove();
  32. //var nlist = getlist();
  33. var csvinfo = getcsvinfo();
  34. //console.log(csvinfo);
  35. scrollTo(0,0);
  36. adddownloadbtn(csvinfo);
  37. }
  38. }
  39.  
  40. function getlist(){
  41. console.log('getlist')
  42. var nlist = document.querySelectorAll('tr.mb');
  43. var res=[];
  44. for(var i=0;i<nlist.length;i++){
  45. res.push(document.querySelectorAll('tr.mb')[i].className.match(/(\d.*)/)[0])
  46. }
  47. return res
  48. }
  49. // Your code here...
  50. function run(){
  51. addstatus();
  52. console.log('run')
  53. if(document.querySelectorAll('tr.mb').length>0){
  54. showlist();
  55.  
  56. }else{
  57. setTimeout(run,500)
  58. }
  59. }
  60. function getcsvinfo(){
  61. var csvinfolist=[];
  62. var trs = document.querySelectorAll('tr');
  63. for(var i=0;i<trs.length;i++){
  64. var memberinfolist=[];
  65. var member = trs[i].children;
  66. for(var j=0;j<member.length;j++){
  67. memberinfolist.push(member[j].innerText);
  68. }
  69. csvinfolist.push(memberinfolist.join(','))
  70. }
  71. return csvinfolist.join('\n');
  72. }
  73. function checkurl(){
  74. if(location.href!==localurl){
  75. if(document.querySelectorAll('#numlistdl').length>0){document.querySelector('#numlistdl').remove();}
  76. localurl = location.href;
  77. checkurl();
  78. }else{
  79. setTimeout(checkurl,500);
  80. }
  81. }
  82. addbtn();
  83. checkurl();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址