Выполнить поставленную в очередь работу, отчеканить и опубликовать мои твиты на платформе OpenSea.io.

Это третья часть серии статей «Как я автоматизировал чеканку своих твитов как NFT в OpenSea». В этой статье я расскажу, как я создал систему автоматизации пользовательского интерфейса OpenSear-Worker с помощью dAppeteer.

Чтобы прочитать первую и вторую часть этой серии статей,





В моих предыдущих статьях я рассказывал, как я создал OpenSear-API и как начать прослушивать события Twitter и ставить задания в очередь в соответствии с нашими конкретными сценариями.

В этой статье я рассказываю, как выполнить задание в очереди, чеканить и публиковать свои твиты на платформе OpenSea.io. Поскольку OpenSea не позволяет нам программно создавать NFT (используя их API), я использовал автоматизацию пользовательского интерфейса для решения этой задачи по созданию и публикации NFT. Как я упоминал в первой статье, нужно автоматизировать девять шагов. Итак, давайте приступим к делу.

  1. Получение скриншота твита

Есть так много способов получить скриншот твита. Для этой задачи я использую TweetPik Twitter Screenshot API.



Ниже показано, как использовать TweetPik API для получения и сохранения снимка экрана данного твита.

Для этого нам нужно предоставить четыре значения.

я. ID твита

Нам нужно установить идентификатор твита, который нам нужен, чтобы сделать снимок экрана. Здесь мы устанавливаем tweetId значение тела. Например,

https://twitter.com/Niweera/status/1497455677131739137
tweetId = `1497455677131739137`

II. Идентификатор темы

Для настройки скриншота мы можем установить тему, указав идентификатор темы TweetPik. Здесь мы устанавливаем значение themeId body равным TWEETPIK_THEME_ID.

III. часовой пояс

Мы можем указать часовой пояс для скриншота твита. Значение часового пояса должно быть предоставлено, как на следующей странице Wiki.



Я живу в Шри-Ланке, поэтому мой часовой пояс будет Asia/Colombo. Здесь мы устанавливаем значение timezone body равным Asia/Colombo.

IV. API-ключ TweetPik

Чтобы авторизовать запрос API, нам нужно установить значение заголовка authorization в файл TWEETPIK_API_KEY. Ключ API TweetPik можно получить для вошедшего в систему пользователя из панели инструментов TweetPik.

Теперь мы можем получить скриншот для данного идентификатора твита. Тем не менее, нам нужны некоторые штрихи для скриншота. Давайте обсудим это дальше.

2. Добавьте некоторые штрихи к скриншоту твита

Когда я говорю ретуширование, я имею в виду улучшение изображения и т. д. Для этого я использовал Jimp, программу обработки изображений JavaScript.



3.Войдите в OpenSea.io и перейдите на страницу добавления ресурсов

OpenSea.io — это не обычное приложение web2, в котором мы можем создать учетную запись, используя нашу электронную почту и пароль. Для OpenSea.io нам необходимо подключить наш кошелек MetaMask (или любой другой поддерживаемый поставщик кошелька) к платформе OpenSea. Это очень утомительная задача, которую нужно автоматизировать. Однако к нам на помощь приходит пакет @chainsafe/dappeteer как рыцарь в сияющих доспехах.



Используя пакет dappeteer, мы можем автоматизировать вход в систему с помощью кошелька MetaMask. Под капотом пакет dappeteer использует пакет puppeteer.



Давайте сначала запустим экземпляр автоматизации Chrome puppeteer и подключим наш кошелек MetaMask к платформе OpenSea.

Здесь мы сначала создаем экземпляр puppeteer, указав metamaskVersion. В настоящее время @chainsafe/dappeteer v2.4.1 поддерживает расширение MetaMask v10.8.1. Обязательно установите их следующим образом.

$ npm i puppeteer @chainsafe/[email protected]

Я тестировал вышеупомянутые версии, поэтому другие комбинации версий могут не работать, будьте осторожны.

После создания экземпляра puppeteer мы настроили MetaMask, предоставив METAMASK_MNEMONIC_PHRASE, который по сути является ключом восстановления, который вы получили при настройке кошелька MetaMask. Если вы еще не создали кошелек MetaMask или не знаете, как это сделать, посмотрите следующее видео.

METAMASK_PASSWORD — это строка, которую вы можете указать в качестве временного пароля. Даже если вы его опустите, это не будет проблемой, так как пакет dappeteer предоставит его вам. Самое странное в MetaMask то, что он полагается только на METAMASK_MNEMONIC_PHRASE, а не на пароль. Пароль можно менять каждый раз, когда вы подключаетесь к кошельку MetaMask.

Затем я настраиваю основную сеть Polygon в MetaMask, так как это безгазовый способ создания NFT.





После этого я использую dappeteer для входа на платформу OpenSea. Теперь мы можем перейти на страницу добавления актива и начать работать над нашими задачами по чеканке NFT.

4. Загрузить скриншот

Как указано в следующем списке, мы загружаем изображение в OpenSea.

Здесь нам нужно ввести два параметра, page и filepath. page — ссылка на страницу кукловода, а filepath — путь к скриншоту.

5. Добавьте уникальное имя в NFT.

Это очень важно, поскольку NFT должны иметь уникальные имена.

6. Добавьте внешнюю ссылку

Здесь я добавляю внешнюю ссылку на исходный твит, из которого сделан снимок экрана.

7. Добавьте описание

Здесь я добавляю небольшое описание твита, сделанного в виде скриншота.

8. Добавьте метаданные, связанные с объектом.

Здесь я делаю три вещи. Сначала я добавляю попытки, которые я использовал для завершения игры в угадайку Wordle, как уровень (как [попытки]/6). Затем я подсчитываю каждый цветной квадрат из 30 и добавляю их как числовую статистику для NFT. Оба эти шага сделаны просто для удовольствия. Наконец, я проверяю правильность вставки всех метаданных уровня и метаданных статистики. Если все метаданные вставлены правильно, я перехожу к созданию NFT.

В функции fillLevels я ввожу параметр tries, где это количество попыток из 6. В функции fillStats я ввожу параметр statistics, где это объект, следующим образом. (Как на примере ниже).

⬛⬛⬛⬛⬛
⬛⬛⬛🟩🟨
🟩⬛🟩🟩🟩
🟩🟩🟩🟩🟩

tries = "4"
statistics = {
               "blackBlocks" : "9",
               "greenBlocks" : "10",
               "yellowBlocks": "1"
             }

В функции checkNumericTraits я ввожу как tries, так и statistics, чтобы сверить их с ранее введенными значениями. Если какие-то из них не совпадают, программа сообщит об этом.

Если все метаданные введены правильно, программа перейдет к последнему шагу, где она создаст NFT. Когда я говорю «отчеканить NFT», я имею в виду, что программа нажмет кнопку Создать.

9. Отчеканить NFT

Последний шаг — создать NFT, нажав кнопку Создать. Это так просто.

Здесь я добавляю два параметра: page — это страница кукловода, а browser — браузер кукловода. После нажатия на кнопку «Создать» браузер закрывается, а программа завершается с возвратом URL-адреса актива созданного нами NFT. Теперь все, что нам нужно сделать, это создать ответный твит на исходный твит с упоминанием этого URL-адреса актива. Мы добавим ответ, в котором будет сказано: здесь указанный выше твит продается в OpenSea, и проверьте его по URL-адресу этого актива.

Ответ на твит с URL ресурса

Для этого мы используем Twitter API v2 client for NodeJS.

Здесь мы вводим tweetID и assetURL, полученные на предыдущем шаге. TwitterApi устроен так, как указано в статье один. После этого все наши шаги завершены и OpenSear-Worker завершил свою работу.

Но

Есть простое предостережение: вы не можете запускать расширение Chrome в безголовом браузере. Поэтому мы не можем развернуть этого работника на сервере (скажем, на машине с Ubuntu). Поэтому нам нужно найти обходной путь для этого. Чтобы решить эту проблему, я использовал следующий пакет, чтобы создать виртуальный дисплей и обмануть браузер кукольника, заставив его поверить, что у сервера есть дисплей.



Используя xvfb, я смог преодолеть вышеупомянутую проблему, и любой код, работающий между xvfb.startSync() и xvfb.stopSync(), будет полагать, что в системе есть дисплей, поэтому проблема решена.

Заключительные замечания

Итак, это конец моей истории Как я автоматизировал чеканку своих твитов как NFT в OpenSea. Есть так много замечательных людей, которых я должен поблагодарить. Я хотел бы поблагодарить Andre Rabold за его замечательную статью и его код, который стал для меня самым большим источником вдохновения. Я также хотел бы отметить вдохновение, которое я черпал из этой статьи.

Наконец, что не менее важно, я хотел бы поблагодарить сообщество StackOverflow, без их вопросов и ответов (чтобы я мог читать и вдохновляться), эта система OpenSear все еще была бы сумасшедшей мечтой, которая у меня когда-то была.

Если вы хотите взглянуть на окончательный продукт, полный исходный код системы OpenSear размещен на GitHub (Viva la open-source) ниже:



Это система OpenSear в действии.

  1. На маркетплейсе OpenSea.io

2. В Твиттере