見出し画像

プログラミング初心者がAIで挑戦:NFTデータ取得

どうも、コテツです
TheMafiaAnimalsSoldiers』のというNFTの販売されているNFTのデータを収集して
SNSで発信していたりします。

こちらはその収集データが詰まったGoogleスプレッドシートです

今まで、NFTのデータは手作業でMagicEdenを目視しながら収集していたのですが
毎日この作業を続けるのも大変なので

Claudeという生成AIを活用し、AIにプログラムコードを出力してもらうことで
データ収集の大半を自動化することに成功したため

今回はどんな感じで作業を進めたのか、記録を書いていこうと思います。

今回作成したプログラムの目標

さて、作成するにあたって設定した目標ですが
プログラム言語にはPython3を選択し、MagicEdenのAPIを使う

  • 『TheMafiaAnimalsSoldiers』のコレクションの中から販売されている個体のみデータ抽出を行う

  • NFTのトークンID,価格,動物の種類,所属ファミリー,レイズ,HP,ATK,DEF,INT,AGIを収集する

  • 収集したデータをCSV形式で出力する

の3つです

実際の作業の流れ

  1. まずはPCの開発環境を整える(私の場合は元々、環境を構築済み)

  2. Magic Eden Developer HomeからAPIのデータを取得する

  3. Claudeと対話しながらプログラムコードを生成

  4. できたプログラムを実行し、エラーコードなどをClaudeに渡して再生成

  5. 完成

といった流れでプログラムコードを完成させ、実行できました
という訳で、実際にやってみましょう~

PCの環境構築

まず、今回はPython3を使用するのでインストールしていきます
Pythonの公式ページを開きます

DownloadsからWindowsやmacOSなど、利用しているOSに対応した物を選択します

すると、Pythonのバージョン一や64bit版や32bit版など色々出てくるので
対応したものをダウンロードしてインストールしてください

また、今回はrequestsライブラリを使用するため
このライブラリのインストールを行います

コマンドプロンプト、またはターミナルを開いて

pip install requests

と入力して実行します、するとライブラリがインストールされます。

また、統合開発環境(IDE)を入れておくと便利なのでインストールしておきましょう
私の場合はVisual Studio Codeを使用しました

こちらからダウンロードできます

Magic Eden Developer HomeからAPIのデータを取得する

今回は、MagicEdenからデータの取得を行うので
MagicEdenのAPIを利用します

Magic Eden Developer Homeへアクセスして
今回はEthereumチェーンのNFTデータを取得したいのでEVM APIsを選択します

すると英語で書かれたドキュメントがずらーっと出てきます
左側にあるメニュー一覧を下にスクロールすると
Tokensとあるので、選択します


Path Paramsが『ethereum』になっているのを確認します

確認が終わったら『Path Params』からぐわーっと下まで選択してコピーします

コピーが終わったらClaudeを開きます

Claudeが開いたら(Claudeのアカウント登録がまだの場合はサクッとしちゃってください)
コピーした文章をペーストします

ここからプロンプトを打っていきます

プロンプト例としては…

こちらはMagicEdenのAPIドキュメントです このドキュメントを元にTheMafiaAnimalsSoldiersという NFTの販売されている個体の情報を収集するPythonのコードを作って欲しい このNFTのコントラクトアドレスは『0x99f419934192f8de7bf53b490d5bdb88527654bf』です 販売価格(ETH)が安い方から高くなる方にソートして表示したい

するとこんな感じのプログラムコードが生成されました

import requests
import json

def get_nft_sales_data(contract_address, chain='ethereum', sort_by='floorAskPrice', sort_direction='asc', limit=100):
    base_url = "https://api-mainnet.magiceden.dev/v3/rtp"
    endpoint = f"{base_url}/{chain}/tokens/v6"
    
    params = {
        'collection': contract_address,
        'sortBy': sort_by,
        'sortDirection': sort_direction,
        'limit': limit,
        'includeAttributes': 'true'
    }
    
    response = requests.get(endpoint, params=params)
    
    if response.status_code == 200:
        return response.json()
    else:
        print(f"Error: {response.status_code}")
        return None

def format_nft_data(nft_data):
    formatted_data = []
    for token in nft_data['tokens']:
        if 'floorAskPrice' in token:
            price_eth = token['floorAskPrice']
            token_id = token['tokenId']
            name = token['name']
            
            formatted_data.append({
                'name': name,
                'token_id': token_id,
                'price_eth': price_eth
            })
    
    return formatted_data

def main():
    contract_address = "0x99f419934192f8de7bf53b490d5bdb88527654bf"
    nft_data = get_nft_sales_data(contract_address)
    
    if nft_data:
        formatted_data = format_nft_data(nft_data)
        sorted_data = sorted(formatted_data, key=lambda x: x['price_eth'])
        
        print("TheMafiaAnimalsSoldiers NFT Sales Data (Sorted by Price):")
        for item in sorted_data:
            print(f"Name: {item['name']}, Token ID: {item['token_id']}, Price: {item['price_eth']} ETH")
    else:
        print("Failed to retrieve NFT sales data.")

if __name__ == "__main__":
    main()

これを実行したところ

TheMafiaAnimalsSoldiers NFT Sales Data (Sorted by Price):

と出て終了しました、上手くいってないですね

という訳で、実行で表示された
『TheMafiaAnimalsSoldiers NFT Sales Data (Sorted by Price):』を
そのまま次のプロンプトに入れてみましょう

すると改善したコードを生成してくれます
これを実行すると

TheMafiaAnimalsSoldiers NFT Sales Data (Sorted by Price)

とまた出てしまったので、プロンプトにまた同じ文章を入れます

するとまた改善したプログラムコードを生成してくれます、この繰り返しですね

またプログラムを実行すると…

何百行も出力されました

ものすごい量のデータをターミナルに送ってきました

データは取得できているようなので、CSV形式にまとめてもらいましょう

プロンプトに

データは無事に取得できました
このデータをCSV形式で保存できるようにコードを出力してください
保存するパラメータは
トークンID,価格(ETH),animal,family,raise,HP,ATK,DEF,INT,AGIです
パラメータの並びもこの順番にしてください
CSVのファイルはGUIを使い、保存先を選べるようにしてください

と打って、コードを書いてもらい、エラーコードを返して…と繰り返したところ

11回目のコードで目的通りに動くものができました。

こんな感じで、トライ&エラーをAIに繰り替えしてもらって
プログラムコードを生成していくと、目標物を生成してもらうことができます!

参考になれば幸いです

ここから先は、完成品のプログラムコードを置いておきます
作るのが面倒になった人だけ見てください…w

ここから先は

4,260字

¥ 500

この記事が気に入ったらチップで応援してみませんか?