Skip to content

Instantly share code, notes, and snippets.

@bboynton97
Created October 27, 2021 19:18
Show Gist options
  • Save bboynton97/6120d66f469495df6681724afb7ae97c to your computer and use it in GitHub Desktop.
Save bboynton97/6120d66f469495df6681724afb7ae97c to your computer and use it in GitHub Desktop.
Auto-list NFTs on OpenSea with Browser Automation
# First install Chrome, and the Selenium driver
# Next, download and save the MetaMask CRX (there are plenty of guides on how to do this)
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# The first time you do this, you'll need to connect your metamask wallet
# Leave the browser open with only one tab
op = Options()
op.add_extension('metamask.crx') # <-- route to the CRX file
chrome = webdriver.Chrome(ChromeDriverManager().install(), options=op)
chain = 'matic' # Change for other chains, but if you're using other chains just use the API instead
collection_address = '0x000' # Pull this from the URL of your collection
price = '0.0069' # must be a string
def list(i):
# Main window
chrome.switch_to.window(chrome.window_handles[0])
# Go to sale page
chrome.get('https://opensea.io/assets/{}/{}/{}/sell'.format(chain, collection_address, i))
# Check that it isn't already for sale - nevermind it just lists it again
# Set price
for i in range(50): # See if it's there
try:
chrome.find_element(By.XPATH, '//input[@name="price"]')
break
except:
time.sleep(0.5)
chrome.find_element(By.XPATH, '//input[@name="price"]').send_keys(price + Keys.RETURN)
# Click sign
for i in range(50):
try:
chrome.find_element(By.XPATH, '//button[text()="Sign"]')
break
except:
time.sleep(0.5)
chrome.find_element(By.XPATH, '//button[text()="Sign"]').click()
# Switch to new window
time.sleep(1)
chrome.switch_to.window(chrome.window_handles[1])
# Click sign
for i in range(50):
try:
chrome.find_element(By.XPATH, '//button[text()="Sign"]')
break
except:
time.sleep(0.5)
chrome.find_element(By.XPATH, '//button[text()="Sign"]').click()
start = int(input("Start index (included): "))
end = int(input("End index (included): "))
for i in range(start, end+1):
list(i)
print("Ended listing")
@samnaisy
Copy link

hi, you help so much, but how to automatically set the date?

@Wajid4040
Copy link

This is awesome! Does it still work? And have you tried running this from a cloud service?

Hi brother I am having error could you help it stuck adding on connectin metamask and then nothing does

@Valera-kg
Copy link

How to change Duration. Default - 7 Days.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment