MENU

DMM Web APIでAI生成同人作品を検索する方法

目次

前提条件

  • Pythonの実行環境が構築されていること
  • DMM API IDが発行されていること
  • 運営しているサイト

DMM API IDの発行手順

APIを使用するには、DMMへのアカウント登録とDMMアフィリエイトの登録が必要です。

詳細な手順については、下記の記事が参考になります。スクリーンショット付きで丁寧に解説されています。

DMMアフィリエイトの登録には運営しているサイトのURLが必要になるため、事前に用意しておきましょう。

DMM APIの基本的な使い方

API IDとアフィリエイトIDを取得できれば、DMMの様々な情報を取得できるようになります。

基本的な使い方については、下記の公式ドキュメントを参照してください。ただし、最低限の情報しか記載されていないため、以下で具体的な使用方法を解説します。

フロア検索

フロア検索は、パラメータが最小限のため、APIの使用を始めるのに適しています。

使用するURLは以下の通りです。

https://api.dmm.com/affiliate/v3/FloorList?api_id=[APIID]&affiliate_id=[アフィリエイトID]&output=json

[APIID][アフィリエイトID]には、取得したAPI IDとアフィリエイトIDを入力してください。前後の[ ]は不要です。

ブラウザでの実行

手軽に情報を取得するには、ブラウザのアドレスバーにこのURLを入力して検索します。

すると、以下のようにデータが画面に表示されます。ただし、この形式では内容が分かりにくいです。

このデータを表形式で整理したものが以下になります。フロアの情報を返してくれているわけです。この中のサービスコードやフロアコード、フロアIDは、他のAPIでもパラメータとして使用するので覚えておきましょう。

サイトサービスサービスコードフロアフロアコードフロアID
DMM.com(一般)AKB48グループlodAKB48akb481
SKE48ske482
NMB48nmb483
HKT48hkt484
NGT48ngt485
REVIVAL!! ON DEMANDrod6
STU48stu4893
DMMブックスebookコミックcomic19
写真集photo20
文芸・ラノベnovel21
ビジネス・実用otherbooks22
PCゲーム/ソフトウェアpcsoftPCゲームdigital_pcgame23
ソフトウェアdigital_pcsoft24
通販monoDVD・Blu-raydvd25
CDcd26
本・コミックbook27
ホビーhobby29
家電・日用品kaden30
DMMTVdmmtvDMMTVdmmtv_video95
FANZA(アダルト)動画digitalビデオvideoa43
素人videoc44
成人映画nikkatsu45
アニメ動画anime46
月額動画monthly見放題ch デラックスpremium68
VRchvr91
見放題chstandard98
通販monoDVDdvd74
大人のおもちゃgoods75
アニメanime76
PCゲームpcgame77
ブックbook78
フィギュア・グッズfigure94
アダルトPCゲームpcgameアダルトPCゲームdigital_pcgame80
同人doujin同人digital_doujin81
FANZAブックスebookコミックcomic82
美少女ノベル・官能小説novel83
アダルト写真集・雑誌photo84
BLbl96
TLtl97
FANZAブックス読み放題unlimited_bookFANZAブックス読み放題unlimited_comic92

Pythonでの実行

このURLはPythonでも実行できます。以下のコードでAPI_IDとAFFILIATE_IDに実際のAPI IDとアフィリエイトIDを入力してください。

import requests
import json
# DMM API設定
API_ID = "XXXXXXXXXXX"
AFFILIATE_ID = "XXXXXXXXXXX"
# APIエンドポイント
url = "https://api.dmm.com/affiliate/v3/FloorList"
# パラメータ
params = {
    "api_id": API_ID,
    "affiliate_id": AFFILIATE_ID,
    "output": "json"
}
def test_dmm_api():
    """DMM APIの基本的なテスト"""
    try:
        # APIリクエスト実行
        response = requests.get(url, params=params)
        response.raise_for_status()
        
        # レスポンスをJSONで取得
        data = response.json()
        
        print("API呼び出し成功!")
        print(f"ステータスコード: {response.status_code}")
        print(f"レスポンス: {json.dumps(data, indent=2, ensure_ascii=False)}")
        
        return data
        
    except requests.exceptions.RequestException as e:
        print(f"API呼び出しエラー: {e}")
        return None
    except json.JSONDecodeError as e:
        print(f"JSON解析エラー: {e}")
        return None
if __name__ == "__main__":
    test_dmm_api()

このコードを実行すると、コンソールに出力結果が表示されます。

GitHubなどでコードを管理する場合は、API_IDやAFFILIATE_IDは環境変数で管理してください。Pythonではpython-dotenvライブラリを使用して.envファイルで管理することをお勧めします。

ジャンル検索

次にジャンル検索について説明します。ここでは先ほど取得したフロアのフロアIDを使用する必要があります。

例として「同人」のフロアID81を使用して、同人フロアのジャンルを検索してみましょう。

使用するURLは以下の通りです。

https://api.dmm.com/affiliate/v3/GenreSearch?api_id=[APIID]&affiliate_id=[アフィリエイトID]&floor_id=81&output=json

同様にブラウザで検索するとデータが表示されます。

Pythonでのコードは以下のようになります。

# ジャンル検索のパラメータ例(同人フロアの場合)
params = {
    "api_id": API_ID,
    "affiliate_id": AFFILIATE_ID,
    "floor_id": "81",
    "output": "json"
}

floor_idパラメータが追加されているのが分かります。

実行すると同人で使用されているジャンルデータを返してくれます。

ジャンルIDジャンル名
123DCG
160024「90%還元」冬のプレミアム企画
4118アイドル・芸能人
6551iPhone・iPad対応
160052青姦
160155赤ちゃんプレイ
156035赤ブー5月イベント
160053悪堕ち
4076アクション
514アクション・格闘
19アクセサリー
160231アクセス上位ジャンル
160163アクメ
160116悪役令嬢
153019
160054足コキ
4127アドベンチャー
5005アナル
160115
160042アヘ顔
6071アンソロジー
6562Android対応
154018委員長
160117医者
155010異種姦
160104異世界転生
160134イチオシ
160180従姉妹/いとこ
72異物挿入
153032癒し
8イラスト・CG集
5068イラマチオ
155022色仕掛け
160037陰キャ・地味
160043淫語
154001インテリ
154019陰毛・腋毛
160039淫乱
1040ウェイトレス
153033
160205鬱勃起
160126裏垢女子
152016浮気
300248エアコミケ2
160160駅弁
4075SF
4001SM
160207エステ
154002エルフ・妖精
152005遠距離恋愛
160132AI生成
160004ASMR
160118王子様・王子系
154003おかっぱ
153002オカルト
152006屋外
1083幼なじみ
155001おさわり
153004お尻・ヒップ
154030叔父・義父
7007お嬢様・令嬢
527お嬢様・令嬢
160031おすすめ
160056おすすめボイス作品
160007襲い受
153003おっぱい
160219雄っぱい
160119
153027男無
160172男の潮吹き
155011乙女受け
160026乙女向け
160055オナサポ
5008オナニー
160176オネエ
528お姫様
152001オフィス・職場
160099オホ声
151001おむつ
160003オメガバース
5017おもちゃ
155002おもらし
160070おやじ
155003オヤジ受け
155012俺様攻め
15音声付き
160221温泉・銭湯・お風呂
1016女教師
153023女主人公のみ
1001OL
153001オールハッピー
160146快楽堕ち
160167カウントダウン
155013拡張
152007家族
151004カチューシャ
154021褐色・日焼け
160195壁尻
160208感覚遮断
5010監禁

AI生成同人作品の検索方法

ここまでの情報を基に、AI生成作品に絞って同人作品を検索する方法を説明します。

使用するのは商品情報を取得するAPIです。

実際の検索用Pythonコードは以下の通りです。

import requests
import json
# DMM API設定
API_ID = "XXXXXXXXXXX"
AFFILIATE_ID = "XXXXXXXXXXX"
# APIエンドポイント
url = "https://api.dmm.com/affiliate/v3/ItemList"
# パラメータ
params = {
    "api_id": API_ID,
    "affiliate_id": AFFILIATE_ID,
    "site": "FANZA",
    "service": "doujin",
    "floor": "digital_doujin",
    "article": "ai",
    "article_id": "2",
    "output": "json"
}

serviceとfloorパラメータは、先ほど取得したフロア情報を基に入力しています。商品検索ではフロアIDではなくフロアコードを使用することに注意してください。

AIに関するarticleとarticle_idパラメータについては、公式のAPIドキュメントには記載されていません。

これらの値は、AIフロアのURLから推測できます。

AIフロアのURLは以下のようになっています。

https://www.dmm.co.jp/dc/doujin/-/list/=/article=ai/id=2/section=mens

このURLのarticle=aiとid=2が、APIパラメータとして使用されています。

商品検索のリクエストパラメータを確認してみましょう。

論理名 物理名必須値のサンプル概要
APIID api_id 登録時に割り振られたID
アフィリエイトID affiliate_id affiliate-990 登録時に割り振られた990~999までのアフィリエイトID
サイト site FANZA 一般(DMM.com)かアダルト(FANZA)か
サービス service digital フロアAPIから取得できるサービスコードを指定
フロア floor videoa フロアAPIから取得できるフロアコードを指定
取得件数 hits 20 初期値:20 最大:100
検索開始位置 offset 1 初期値:1 最大:50000
ソート順 sort rank 初期値:rank
人気:rank
価格が高い順:price
価格が安い順:-price
発売日:date
評価:review
マッチング順:match
キーワード keyword 松本いちか UTF-8で指定
キーワード検索のヒント
商品ID cid mizd00320 商品に振られているcontent_id
絞りこみ項目 article actress 女優:actress
作者:author
ジャンル:genre
シリーズ:series
メーカー:maker
絞り込み項目を複数設定する場合、パラメータ名を配列化します。
例:&article[0]=genre&article[1]=actress
絞り込みID article_id 1011199 上記絞り込み項目のID(各検索APIから取得可能)
絞り込み項目を複数設定する場合、パラメータ名を配列化します。
例:&article_id[0]=111111&article_id[1]=222222
発売日絞り込み gte_date 2016-04-01T00:00:00 このパラメータで指定した日付以降に発売された商品を絞り込むことができます。
ISO8601形式でフォーマットした日付を指定してください。(ただし、タイムゾーンは指定できません)
発売日絞り込み lte_date 2016-04-30T23:59:59 このパラメータで指定した日付以前に発売された商品を絞り込むことができます。
フォーマットはgte_dateと同じです。
在庫絞り込み mono_stock mono 初期値:絞り込みなし
在庫あり:stock
予約商品(在庫あり):reserve
予約商品(キャンセル待ち):reserve_empty
DMM通販のみ:mono
マーケットプレイスのみ:dmp
※通販サービスのみ指定可能
出力形式 output json json / xml
コールバック callback callback 出力形式jsonで指定した場合に、このパラメータでコールバック関数名を指定すると、JSONP形式で出力されます

articleとarticle_idパラメータが存在していることが分かります。これらのパラメータを組み合わせることで、AI生成同人作品のみを取得できます。

URLを確認すると、AIで生成された同人作品のページが表示されていることが分かります。

まとめ

AI作品に絞ることで、WordPressなどを使ってアフィリエイトサイトを運営する際に、AI特化サイトとして運用できます。

AI作品は手軽に制作できるため大量に出品されており、アフィリエイト対象作品には困りません。ただし、質の低い作品も含まれているため、適切な選別を行う運用も必要です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次