Re: ExUserTagStat

From nat, 4 Years ago, written in JavaScript, viewed 395 times. This paste is a reply to ExUserTagStat from nat - view diff
URL https://code.nat.moe/view/7f792879 Embed
Download Paste or View Raw
  1. // ==UserScript==
  2. // @name         ExUserTagStat
  3. // @namespace    http://nat.moe/
  4. // @version      0.1
  5. // @description  Stat visited exhentai tags.
  6. // @author       nat <nat@nat.moe>
  7. // @match        https://exhentai.org/g/*/*/
  8. // @grant        none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12.     'use strict';
  13.     var ehus = {};
  14.  
  15.     if (localStorage.eh_usertagstat) {
  16.         try {
  17.           ehus = JSON.parse(localStorage.eh_usertagstat);
  18.         } catch (e) {
  19.           console.log('[eh-uts] db error', e);
  20.           ehus = {};
  21.         }
  22.     }
  23.  
  24.     if (!ehus.visited) ehus.visited = [];
  25.     if (!ehus.tags) ehus.tags = {};
  26.  
  27.     var viewstat = document.createElement('a');
  28.     viewstat.innerHTML = 'view tags stat';
  29.     viewstat.onclick = () => {
  30.         var visited = ehus.visited.length;
  31.         var taglist = Object.keys(ehus.tags);
  32.         var tagcount = taglist.length;
  33.         var sum = 0;
  34.         taglist.forEach(tag => {
  35.             sum += ehus.tags[tag];
  36.         });
  37.         var tagstat = [];
  38.         taglist.forEach(tag => {
  39.             tagstat.push({tag, count: ehus.tags[tag], precent: (ehus.tags[tag]/sum*100).toFixed(2), cprecent: (ehus.tags[tag]/visited*100).toFixed(2)});
  40.         });
  41.         var statstr = '';
  42.         tagstat.sort((a, b) => b.count - a.count).forEach(tag => {
  43.             statstr += `\n${tag.cprecent}% (${tag.count}) ${tag.tag}.`;
  44.         });
  45.         alert(`Total visits: ${visited}\nTotal Tags:${tagcount}${statstr}`);
  46.     };
  47.  
  48.     document.getElementById('taglist').appendChild(viewstat);
  49.  
  50.     if (ehus.visited.some(visited => visited == gid)) {
  51.         console.log('[eh-uts] gid visited, not adding to stat.');
  52.         return 0;
  53.     }
  54.  
  55.     ehus.visited.push(gid);
  56.  
  57.     var xhr = new XMLHttpRequest();
  58.     xhr.open('POST', 'https://exhentai.org/api.php');
  59.     xhr.setRequestHeader("Content-Type", "application/json");
  60.     xhr.send(JSON.stringify({"method":"gdata","gidlist":[[gid,token]]}));
  61.     xhr.onload = function () {
  62.         if (this.status == 200) {
  63.             var tags = JSON.parse(xhr.response).gmetadata[0].tags;
  64.             tags.forEach(tag => {
  65.                 if (ehus.tags[tag]) ehus.tags[tag]++;
  66.                 else ehus.tags[tag] = 1;
  67.             });
  68.             console.log('[eh-uts] db updated:', ehus);
  69.             localStorage.eh_usertagstat = JSON.stringify(ehus);
  70.         }
  71.     };
  72. })();

Reply to "Re: ExUserTagStat"

Here you can reply to the paste above

captcha