MuseScore Download Bypass

Bypass the Pro-only download restrictions on musescore

  1. // ==UserScript==
  2. // @name MuseScore Download Bypass
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description Bypass the Pro-only download restrictions on musescore
  6. // @author flancast90
  7. // @match *://musescore.com/user/*/scores/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=musescore.com
  9. // @grant none
  10. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
  11. // ==/UserScript==
  12.  
  13. var urls = []
  14.  
  15. $(document).ready(async function() {
  16. async function wait_until_loaded() {
  17. setTimeout(function() {
  18. if (document.getElementsByClassName('_2zZ8u').length == 2) {
  19. urls.push(document.getElementsByClassName('_2zZ8u')[1].src);
  20. }else {
  21. urls.push(document.getElementsByClassName('_2zZ8u')[0].src);
  22. }
  23. }, 1000);
  24. }
  25.  
  26. var elem = parseInt(document.getElementsByClassName('JQKO_ Nj4E6 -sCT0')[0].scrollHeight);
  27.  
  28. var height = parseInt(document.getElementsByClassName('_2zZ8u')[0].height);
  29. var scrolled = 0;
  30. var scrollHeight = (elem - (elem % height));
  31.  
  32. function get_lazy_imgs() {
  33. if (scrolled < scrollHeight) {
  34. document.getElementsByClassName('JQKO_ Nj4E6 -sCT0')[0].scrollTop = scrolled;
  35. scrolled += height;
  36.  
  37. setTimeout(function(scrolled, scrollHeight) {
  38. var img = document.getElementsByClassName('_2zZ8u');
  39.  
  40. urls.push(img[img.length-1].src);
  41. // use recursion to execute syncroniously
  42. if (scrolled < scrollHeight) {
  43. get_lazy_imgs()
  44. }
  45. }, 1000, scrolled, scrollHeight);
  46. }
  47. }
  48.  
  49. get_lazy_imgs()
  50.  
  51. document.getElementById('a2ae0a5caabafb538105b98516c4c7d5').addEventListener('click', hijack_popup);
  52.  
  53. function hijack_popup() {
  54. if (document.getElementsByClassName('_1oLA0 IfSKv _22S7- _2OCeG')[0]) {
  55. for (var i = 0; i < urls.length; i++) {
  56. if (i == 0) {
  57. // replace existing content on first iteration
  58. document.getElementsByClassName('_2sLDi _222n2 _3vdd_')[0].innerHTML = `<img src="`+urls[i]+`" style="width:100%;"/>`;
  59. }else {
  60. // append to replaced content
  61. document.getElementsByClassName('_2sLDi _222n2 _3vdd_')[0].innerHTML += `<img src="`+urls[i]+`" style="width:100%;"/>`;
  62. }
  63. }
  64. }else {
  65. setTimeout(function() {
  66. hijack_popup();
  67. }, 100);
  68. }
  69. }
  70. });