Advertisement
AHOHNMYC

МЯТеж

Dec 7th, 2018
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         МЯТеж
  3. // @namespace    FM veshtschaniye
  4. // @version      0.0.0.1
  5. // @author       AHOHNMYC
  6. // @match        https://anon.fm/info.html
  7. // @grant        unsafeWindow
  8. // ==/UserScript==
  9.  
  10. function strHash(str) {
  11.     let hash = 0;
  12.     if (str.length == 0)
  13.         return hash;
  14.     for (let i = 0; i < str.length; i++) {
  15.         let char = str.charCodeAt(i);
  16.         hash = ((hash<<5)-hash)+char;
  17.         hash = hash & hash; // Convert to 32bit integer
  18.     }
  19.     return hash;
  20. }
  21.  
  22. /*
  23. function hashToName(hash) {
  24.     let s = '';
  25.     for (let i=0; i<5; i++) {
  26.         s += String.fromCharCode('A'.charCodeAt() + (hash & 0b1111) + (((hash >> 4) & 0b1) == 1 ? 10 : 0));
  27.         hash >>= 5;
  28.     }
  29.     s += String.fromCharCode('A'.charCodeAt() + 6 * (hash & 0b1) + 4 * (hash & 0b10));
  30.     return hash;
  31. }
  32. */
  33.  
  34. function hashToMyata(hash) {
  35.  
  36.     if (!hash)
  37.         return "";
  38.  
  39.     const o = JSON.parse('{"Г":["Л","В","А","О"],"Л":["А","Ю","У","О"],"А":["М","В","Н","Р","Т","Ч","З","Д"],"В":["А","О","И"],"С":["Е","Т","А","Л","И","У"],"Е":["М","Р","П","Д","В","З","Ж","С","Н"],"Р":["Ж","Д","Е","И","А","О"],"Ж":["А","Н","Е"],"Н":["Т","О","А","Е","Ы","И","Н"],"Д":["И","А","К"],"И":["М","И","Н","С","Р","Л","Е"],"О":["Ж","С","Е","К","В","Р","Д","О","Т","П"],"Т":["Ы","У","Е","А"],"К":["Р","А"],"П":["О","У","Р"],"Ю":["О"],"У":["Г","П","К","Д","Е"],"Ч":["Е"],"З":["В","Л"],"М":["Я"],"Я":["Т"]}');
  40.     const p = 'ГЛАВСЕРЖНДИОТКПЮУЧЗМЯ';
  41.  
  42.     let lettr = p[(hash & 0b1111) + (((hash >> 4) & 0b1) == 1 ? 5 : 0)];
  43.     hash >>= 5;
  44.     let out = lettr;
  45.     let leftBits = 32 - 5;
  46.  
  47. //    debugger
  48.  
  49.     while (leftBits > 0) {
  50.         const nextPossiblLen = o[lettr].length;
  51.         let t = 0;
  52.         if (nextPossiblLen > 1) {
  53.             t = (hash & 0b111);
  54.             hash >>= 3;
  55.             leftBits -= 3;
  56.             while (t >= nextPossiblLen)
  57.                 t -= Math.trunc(nextPossiblLen/2) + 1;
  58.         }
  59.         lettr = o[lettr][t];
  60.         out += lettr.toLowerCase();
  61.     }
  62.     return out;
  63. }
  64.  
  65. const _renderKooka = renderKooka;
  66. unsafeWindow.renderKooka = (type, hash, quote, time, who, text) => {
  67.     const respec = text.match(/<br><br>С уважением, (\W+ \W+ \W+)/);
  68.  
  69.     if (!respec)
  70.         return _renderKooka(type, hash, quote, time, who, text);
  71.  
  72.     const name = respec[1];
  73.     text = text.replace(respec[0], '');
  74.  
  75.     if (hash == '!')
  76.         return `<p><span class="user_id">${hashToMyata(strHash(name))}</span> в ${time} - ${text}</p>`;
  77.     else
  78.         return `<p><span class="user_id">${hashToMyata(strHash(hash))}</span> в ${time} - <span class="userpost">${quote}</span><br><span class="user_id">${hashToMyata(strHash(name))}: </span>${text}</p>`;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement