Greasy Fork is available in English.

Etherscan Contract Downloader

batch download etherscan verified contract

As of 31.01.2022. See ბოლო ვერსია.

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