Avatar Uploader

A simple Avatar Uploader

  1. // ==UserScript==
  2. // @name Avatar Uploader
  3. // @namespace https://drawaria.online/profile/?uid=63196790-c7da-11ec-8266-c399f90709b7
  4. // @version 2.0.1
  5. // @description A simple Avatar Uploader
  6. // @author ᴄᴜʙᴇ
  7. // @match https://*.drawaria.online/
  8. // @match https://*.drawaria.online/room/*
  9. // @icon64 data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAPWSURBVHhe7ZjPaxNBFMff5oetWOvNKqJYmyCCQjXqH6AHRS8eBc81FASpbUHwIN4KjfUiaNSr9/bg0R70JoYKFjwkTQsiojfbSqslu37f5KUkadLdabJN4s4Hlpk3P7KZN+9XQgaDIdBY0tYlHo870u1IstnstmcMSRtYjAKkDSzaMcDNp1qN7vc1LiBtYDExQNq6uPmUbp3gdwwxMUATowBpA0vDMaDdMDFAE98tQDdLVNPo+4wFuGAUIG1g8T0G7DYmBmjScgtodpYwFqCJUYC0gaXlMaDZmBigScstQDcLuL3fWIAmRgHSBpaWx4BmY2KAJr5bQLOjvBvGAjRpGwU4jjNdKBT6RNwxfOP8RKPRrnA4fFKG69I2LsCHz+fzP0XcNXxXgC75x1TxvhOjtb/j4kPqtnto2ArRLew4jVVdMlXEoT8Ym3dseh1apWf9j2hdZiroyBiQTdFRZz99wOGnICa2HJ4pjiV4Da/lPcWJStrGBUqfW88CYrHYXC6XO4eb7+IDYfSMWuARx6H50ApdqLaETrKANB6HzV738IxlwU0OYG8VHaOASCQyy63y+Uqm99rUx5ZS/jjrdAi3PiNrFJCr93aOCyQSiWgmk9nIp2DCZT5v4/Cxcdpx9vBdAbq4ZYFmK6DzsgBSm/QUoRClv0/SQRG1adgCvJp4CTcLcrOAhUkakfS3Pf9rHcCHweE+i1gfj3WAbwoo1fZ84+WPTO8YvskC0XVPSiiBtBkmesPVo4xs4psCbNtO+lXbx8foq7VCF2He9yBmlLm7ASWoGqKKhmOAGwsp+osiJCoiLdvUMzhOv0Ws4NMk7esN0aqInLc3BsZoj4hacGBcQ4BE90ZxRJFBTDkvfYXvMQDaWpKuoteiy9LdQo25ir06HEZqRIGUFLEI/2iqwncFwHxUBVcC8sRCGkVpFWrMogkRS1Ts9QPfXWAxRWdtmB7cYHMfTPsLhPvLDr1lWW5+AitOscxgjYPbSfSP0ZwMKZAmP6JJFCW1bgYRIDnwgH7IkMKrC2grQAPOuzEo7BviwAsoYKg47A0c7CX8/zbefwRiDlllBL8Gny9O0Qjm3OuAGnDQHBinJyIq/HSBbnzpFHeiFt2F7b9Xo17AWrWHu8XP4PTF/mzRL3oGBVRUg55A2lQ1RBW+xgDLsm7id/zwsVFai1h0BXX7KzZtmd4Cz/HN81rew3v5M3gO7SCsYYjrALjUNT6Q2uQFrOXaoVY16KcLlLBxqjswX6V9iQlJvPgSPvg4j6G/hP4sbiNd8nk5/FN0yy9pDc9VuNW7Zv0lZjAYggzRPwdv42CLMor1AAAAAElFTkSuQmCC
  10. // @grant none
  11. // @license GNU GPLv3
  12. // @run-at document-idle
  13. // ==/UserScript==
  14.  
  15. (function () {
  16. function uploadToAvatar(img) {
  17. fetch(window.LOGGEDIN ? 'https://drawaria.online/saveavatar' : 'https://drawaria.online/uploadavatarimage', {
  18. method: 'POST',
  19. body: 'imagedata=' + encodeURIComponent(img) + '&fromeditor=true',
  20. headers: {
  21. 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
  22. Accept: 'text/plain, */*; q=0.01',
  23. 'X-Requested-With': 'XMLHttpRequest',
  24. },
  25. }).then((e) => alert(e.statusText));
  26. }
  27.  
  28. function avatarUploaderVisual() {
  29. document.querySelectorAll('label[for="avataruploader"]').forEach((e) => e.remove());
  30. let input = document.createElement('input');
  31. input.style.display = 'none';
  32. input.id = 'avataruploader';
  33. input.type = 'file';
  34. input.addEventListener('change', onchange);
  35.  
  36. let label = document.createElement('label');
  37. label.style = 'display:flex; text-align: left;';
  38. label.className = 'badge border btn-outline-primary border-primary';
  39. label.innerHTML =
  40. '<img class="playerlist-avatar" src="https://media.tenor.com/pOv7SnZx7xAAAAAC/upload-cat.gif"><div class="playerlist-name"><span>Upload to Avatar</span><br/><sub>by ≺ᴄᴜʙᴇ³≻</sub></div>';
  41. label.setAttribute('for', input.id);
  42. label.append(input);
  43.  
  44. function onchange() {
  45. if (!this.files || !this.files[0]) return;
  46. let e = new FileReader();
  47. e.addEventListener('load', (e) => {
  48. let a = e.target.result.replace('image/gif', 'image/png');
  49. uploadToAvatar(a);
  50. });
  51. e.readAsDataURL(this.files[0]);
  52. }
  53.  
  54. document.querySelector('#playerlist').before(label);
  55. }
  56.  
  57. return avatarUploaderVisual;
  58. })()();