lurldownloader

download file in lurl

  1. // ==UserScript==
  2. // @name lurldownloader
  3. // @version 0.0.1
  4. // @author Zoosewu
  5. // @description download file in lurl
  6. // @match https://lurl.cc/*
  7. // @license MIT
  8. // @name:zh-TW lurl下載器
  9. // @namespace https://github.com/zoosewu/
  10. // @description:zh-tw 下載lurl的檔案
  11. // @run-at document-idle
  12. // @homepageURL https://github.com/zoosewu/
  13. // ==/UserScript==
  14.  
  15. (function () {
  16. 'use strict';
  17. const body = $('body')
  18. body.append($("<button id='z-download-button' type='button'>download</button>"))
  19. body.append($("<label id='z-download-label' for='url'>url: </label>"))
  20. body.append($("<input id='z-download-input' type='text' id='url' name='url' required size='140'>"))
  21. const button = $("#z-download-button")
  22. const input = $("#z-download-input")
  23. button.on("click", function () {
  24. download(input[0].value)
  25. });
  26. })();
  27. const download = (link) => {
  28. console.log('link: ', link);
  29. console.log('start downloading file,please wait a minute...');
  30. const xhr = new XMLHttpRequest();
  31. xhr.open('GET', link, true);
  32. xhr.responseType = 'blob';
  33. xhr.onload = function () {
  34. console.log('file downloaded.');
  35. const urlCreator = window.URL || window.webkitURL;
  36. const imageUrl = urlCreator.createObjectURL(this.response);
  37. const tag = document.createElement('a');
  38. tag.href = imageUrl;
  39. tag.target = '_blank';
  40. const regex = /[^\/\\&\?]+\.\w{3,4}(?=([\?&].*$|$))/;
  41. const result = regex.exec(link);
  42. let name = 'download.jpg';
  43. if (result && result.length > 0) name = result[0]
  44. tag.download = name;
  45. document.body.appendChild(tag);
  46. tag.click();
  47. document.body.removeChild(tag);
  48. };
  49. xhr.onerror = err => { console.log('failed to download file'); };
  50. xhr.send();
  51. }