Greasy Fork Display User Information

Display user information.

  1. // ==UserScript==
  2. // @name Greasy Fork Display User Information
  3. // @namespace -
  4. // @version 0.3
  5. // @description Display user information.
  6. // @author NotYou
  7. // @match *greasyfork.org/*/users/*
  8. // @license GPL-3.0
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. const IDUS = location.pathname.slice(10).split('-'),
  13. ID = IDUS[0],
  14. $ = s => document.querySelector(s),
  15. $$ = s => document.querySelectorAll(s),
  16. USER = $('#about-user > h2').innerText.replace('MOD', ''),
  17. IS_MOD = $('#about-user > h2').innerHTML.includes('<span class="badge badge-moderator" title="Moderator">Mod</span>')
  18.  
  19. $('head').insertAdjacentHTML('beforeend', `<style>
  20. #user-information-card {
  21. background: rgb(47, 47, 47);
  22. color: rgb(255, 255, 255);
  23. border-radius: 4px;
  24. padding: 6px;
  25. width: 300px;
  26. display: grid;
  27. grid-template-columns: auto auto auto;
  28. text-align: center;
  29. }
  30. #user-info-copy-btn {
  31. margin-left: 4px;
  32. }
  33. .user-info-item {
  34. margin-bottom: 3px;
  35. margin-top: 3px;
  36. }
  37. </style>`)
  38.  
  39. $('#about-user').insertAdjacentHTML('beforeend', `<section id="user-information">
  40. <header><h3>User information<input id="user-info-copy-btn" type="button" value="Copy All"></h3></header>
  41. <div id="user-information-card">
  42. <li class="user-info-item">Username:</li>
  43. <li class="user-info-item">ID:</li>
  44. <li class="user-info-item">Moderator:</li>
  45. <b id="user-info-name" class="user-info-sub-item" title="Click to copy">${USER}</b>
  46. <b id="user-info-id" class="user-info-sub-item" title="Click to copy">${ID}</b>
  47. <b id="user-info-is-mod" class="user-info-sub-item" title="Click to copy">${IS_MOD ? 'Yes' : 'No'}</b>
  48. </div>
  49. </section>`)
  50.  
  51. $$('.user-info-sub-item').forEach((e) => {
  52. e.addEventListener('click', () => {
  53. navigator.clipboard.writeText(e.innerText)
  54. e.title = 'Copied'
  55. setTimeout(() => (e.title = 'Click to copy'), 2000)
  56. })
  57. })
  58.  
  59. $('#user-info-copy-btn').addEventListener('click', (e) => {
  60. navigator.clipboard.writeText(`Username: ${USER}, ID: ${ID}, Mod: ${IS_MOD ? 'Yes' : 'No'}`)
  61. $('#user-info-copy-btn').value = 'Copied'
  62. setTimeout(() => ($('#user-info-copy-btn').value = 'Copy All'), 2000)
  63. })
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.