Etherscan Contract Downloader

batch download etherscan verified contract

2022-02-04 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

  1. // ==UserScript==
  2. // @name Etherscan Contract Downloader
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1.2
  5. // @description batch download etherscan verified contract
  6. // @author jason@trillion.fi
  7. // @match https://etherscan.io/address/*
  8. // @match https://ftmscan.com/address/*
  9. // @match https://bscscan.com/address/*
  10. // @match https://snowtrace.io/address/*
  11. // @match https://polygonscan.com/address/*
  12. // @match https://hecoinfo.com/address/*
  13. // @match https://optimistic.etherscan.io/address/*
  14. // @match https://arbiscan.io/address/*
  15. // @icon https://etherscan.io/images/brandassets/etherscan-logo-circle.png
  16. // @grant unsafeWindow
  17. // @license MIT
  18. // ==/UserScript==
  19.  
  20.  
  21.  
  22. (function() {
  23. 'use strict';
  24.  
  25. // Your code here...
  26. let editorIds = $("[id^=editor]")
  27. let spans = $("span[class=text-secondary]")
  28.  
  29. console.log(`found ${editorIds.length-1} editors`);
  30.  
  31.  
  32. function getAddr() {
  33. const regex = /0x[0-9A-Fa-f]{40}/g;
  34. const found = window.location.href.match(regex);
  35. return found[0]
  36. }
  37.  
  38. function downloadEditor(index) {
  39. let addr = getAddr()
  40. let editor = ace.edit(editorIds[index])
  41. let filename;
  42. try {
  43. filename = `${addr}-${spans[index].innerText.split(":")[1].trim()}`
  44. } catch {
  45. filename = `${addr}.sol`
  46. }
  47. console.log(filename)
  48. let HTMLhiddenElement = document.createElement("a");
  49. HTMLhiddenElement.href = 'data:attachment/text,' + encodeURIComponent(editor.getValue());
  50. HTMLhiddenElement.target = '_blank';
  51. HTMLhiddenElement.download = filename;
  52. HTMLhiddenElement.click();
  53. }
  54.  
  55. function downloadAll() {
  56. if (editorIds.length == 1) {
  57. downloadEditor(0)
  58. return
  59. }
  60. for (let i=0;i<editorIds.length-1;i++) {
  61. downloadEditor(i)
  62. }
  63. }
  64.  
  65. if(!unsafeWindow.downloadAll)
  66. {
  67. unsafeWindow.downloadAll = downloadAll;
  68. }
  69.  
  70. $("#nav_subtabs").append('<li><a class="nav-link show" href="#download" data-toggle="tab" onclick="javascript:downloadAll();"><span>Download</span></a></li>');
  71. //
  72. })();