Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.49 KB | None | 0 0
  1. var reg = (o, n) => o ? o[n] : '';
  2. var cn = (o, s) => o ? o.getElementsByClassName(s) : console.log(o);
  3. var tn = (o, s) => o ? o.getElementsByTagName(s) : console.log(o);
  4. var gi = (o, s) => o ? o.getElementById(s) : console.log(o);
  5. var rando = (n) => Math.round(Math.random() * n);
  6. var unq = (arr) => arr.filter((e, p, a) => a.indexOf(e) == p);
  7. var delay = (ms) => new Promise(res => setTimeout(res, ms));
  8. var ele = (t) => document.createElement(t);
  9. var attr = (o, k, v) => o.setAttribute(k, v);
  10.  
  11. async function getListingInfoByPage(p) {
  12. var res = await fetch("https://medium.com/_/api/users/7558e26f1503/followers?&page=" + p + "&fbclid=IwAR3Ddn76uLnRIpuVQLnnygTlSR9C1o_OUgCPlUFgx1zGg3dsJ3vthL30RPM", {
  13. "credentials": "include",
  14. "headers": {
  15. "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
  16. "accept-language": "en-US,en;q=0.9",
  17. "cache-control": "max-age=0",
  18. "upgrade-insecure-requests": "1"
  19. },
  20. "referrerPolicy": "no-referrer-when-downgrade",
  21. "body": null,
  22. "method": "GET",
  23. "mode": "cors"
  24. });
  25. var text = await res.text();
  26. var jdat = JSON.parse(text.replace(/.+?<\/x>/, ''));
  27. return jdat;
  28. }
  29.  
  30. async function looper() {
  31. var temp = [];
  32. var totalPages = 10;
  33. for (var i = 2; i < totalPages; i++) {
  34. var dat = await getListingInfoByPage(i + 1);
  35. console.log(i);
  36. await delay(2000);
  37. var arr = dat.payload.value;
  38. arr.forEach(el => {
  39. if (temp.every(itm => itm.userId != el.userId)) temp.push(el)
  40. });
  41. }
  42. var output = convertToTSV(temp);
  43. downloadr(output, 'converted_file.tsv');
  44.  
  45. }
  46.  
  47.  
  48. function downloadr(arr2D, filename) {
  49. var data = /\.json$|.js$/.test(filename) ? JSON.stringify(arr2D) : arr2D.map(el => el.reduce((a, b) => a + '\t' + b)).reduce((a, b) => a + '\r' + b);
  50. var type = /\.json$|.js$/.test(filename) ? 'data:application/json;charset=utf-8,' : 'data:text/plain;charset=utf-8,';
  51. var file = new Blob([data], {
  52. type: type
  53. });
  54. if (window.navigator.msSaveOrOpenBlob) {
  55. window.navigator.msSaveOrOpenBlob(file, filename);
  56. } else {
  57. var a = document.createElement('a'),
  58. url = URL.createObjectURL(file);
  59. a.href = url;
  60. a.download = filename;
  61. document.body.appendChild(a);
  62. a.click();
  63. setTimeout(() => {
  64. document.body.removeChild(a);
  65. window.URL.revokeObjectURL(url);
  66. }, 10);
  67. }
  68. }
  69.  
  70. var dateifdate = (s) => {
  71. if ((typeof s == "number" || typeof s == "string") && /\b1[1-6]\d{11}\b/.test(s.toString())) {
  72. return new Date(s);
  73. } else {
  74. return s;
  75. }
  76. };
  77.  
  78. function convertToTSV(fileArray) {
  79. var firstLevel = fileArray.map(el => Object.entries(el));
  80. var lens = Math.max(...firstLevel.map(el => el.length));
  81. var header = unq(firstLevel.map(el => el.map(itm => itm[0])).flat());
  82. var table = [header];
  83. var str = (o) => typeof o == 'object' ? JSON.stringify(o).replace(/\n|\r/g, ' ') : o.toString().replace(/\n|\r/g, ' ');
  84. for (var i = 0; i < firstLevel.length; i++) {
  85. var arr = [];
  86. var row = [];
  87. for (var s = 0; s < firstLevel[i].length; s++) {
  88. var place = header.indexOf(firstLevel[i][s][0]);
  89. arr[place] = dateifdate(firstLevel[i][s][1]);
  90. }
  91. for (var a = 0; a < arr.length; a++) {
  92. if (arr[a]) {
  93. row.push(arr[a]);
  94. } else {
  95. row.push('');
  96. }
  97. }
  98. table.push(row);
  99. }
  100.  
  101. var output = table.map(el => el.map(itm => str(itm)));
  102. return output;
  103. }
  104. looper();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement