FANZAの同人誌情報の取得 PHP

生成AI便利です。

<?php

// DMM API アクセス情報
define("DMM_API_ID", '');
define("DMM_AFI_ID", 'vivi-993');
define("DMM_REQUEST_DOMAIN", 'api.dmm.com');
define("DMM_REQUEST_PATH", '/affiliate/v3/ItemList');

// 取得したいアイテムのパラメータ
$parameters = [
    'api_id' => DMM_API_ID,
    'affiliate_id' => DMM_AFI_ID,
    'site' => 'FANZA',
    'service' => 'doujin',
    'hits' => 50,
    'sort' => 'rank',
    'output' => 'json',
    // 必要な情報を確実に取得するため、APIリクエストの'detail'パラメータを変更・追加する必要はありませんが、
    // 念のため、iteminfo以下の情報も含まれることを期待し、既存のパラメータを維 持します。
    'detail' => 'product_id,title,price,url,imageURL,genreName,categoryName'
];

// APIリクエストURLの生成
$url = 'https://' . DMM_REQUEST_DOMAIN . DMM_REQUEST_PATH . '?' . http_build_query($parameters);

// cURLを利用したAPIリクエストの実行
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo "APIリクエストエラー:";
    echo curl_error($ch);
    curl_close($ch);
    exit;
}
curl_close($ch);

// JSONレスポンスのデコード
$data = json_decode($response, true);

// レスポンスチェックとアイテムデータの抽出
$items = [];
if (isset($data['result']['items'])) {
    $items = $data['result']['items'];
} else {
    $message = $data['result']['message'] ?? '不明なAPIエラー';
    echo "APIからのエラー:";
    echo htmlspecialchars($message);
    if (isset($data['result']['status']) && $data['result']['status'] != 200) {
        echo "ステータスコード: " . htmlspecialchars($data['result']['status']);
    }
    exit;
}

$str = '';
foreach ($items as $item) {
            // ジャンル名を取得するロジックを修正
            $genreName = 'N/A';
            if (isset($item['iteminfo']['genre']) && is_array($item['iteminfo']['genre']) && !empty($item['iteminfo']['genre'])) {
                $genreName = $item['iteminfo']['genre'][0]['name'] ?? 'N/A';
            }
$str .=<<<EOT
            <div class="card">
                <a href="{$item['affiliateURL']}" target="_blank" rel="nofollow noopener">
                    <div class="card-image">
                        <img src="{$item['imageURL']['large']}" alt="{$item['title']}">
                    </div>
                </a>
                <div class="card-content">
                    <div>
                        <div class="card-title">{$item['title']}</div>
                        <div class="card-info">
                            <p>{$genreName}</p>
                            <p class="card-price">{$item['prices']['price']}</p>
                        </div>
                    </div>
                    <a class="card-link" href="{$item['affiliateURL']}" target="_blank" rel="nofollow noopener">商品を見る</a>
                </div>
            </div>
EOT;
}
//echo $str;

About FANZA API

The FANZA API is part of the DMM Web API Service, which allows external users to access and utilize the database and information held by DMM, including content from FANZA. This is primarily used by affiliates to get product data, such as titles, images, videos, and performer information, for use on their own websites.


Key Features and Requirements

  • API Provider: The service is officially called the DMM Web API Service.
  • Data Access: It allows you to retrieve detailed information on products (like titles, images, and video details) and performers (like actress IDs) from the FANZA database.
  • Affiliate Focus: The API is primarily intended for DMM/FANZA affiliates to create product listings or search services on their affiliate sites.
  • Required IDs: To use the service, you need two main identifiers:
    • API ID: Issued upon registration for the DMM Web Service.
    • Affiliate ID (for API use): Also issued upon registration, which links the data retrieval to your affiliate account.
  • Usage: By constructing a specific Request URL with your IDs and search parameters (like actress ID, genre, or keyword), you can receive product data, often in formats like XML or CSV.

Getting Access

  1. Affiliate Registration: You must be registered for DMM/FANZA Affiliate Services.
  2. Web Service Registration: Apply for “Web Service Usage Registration” through the DMM Web API service page.
  3. ID Issuance: Upon successful application, your API ID and Affiliate ID will be issued immediately, allowing you to begin making API requests.

FANZAのAPIは、正式にはDMM Web APIサービスの一部として提供されており、主にアフィリエイトパートナー向けにFANZAの商品情報を外部サイトで利用できるようにするものです。

1. サービス名と目的

  • 正式名称: DMM Web APIサービス
  • 目的: DMM/FANZAが保有する商品データベース(作品情報、女優情報など)を外部のウェブサイトやアプリケーションから利用できるようにすること。アフィリエイトサイトでの商品紹介や検索サービス構築を支援するのが主目的です。

2. 利用に必要なもの

APIを利用するには、以下の2つのIDが必須です。

  1. API ID: DMM Webサービス利用登録を行うと即座に発行されます。APIでデータを取得する際の識別子となります。
  2. アフィリエイトID (affiliate_id): DMMアフィリエイトで取得するIDです。API経由で商品情報を使用して売上が発生した場合に、アフィリエイト報酬を紐づけるために必要です。

3. 主な機能(提供されるAPI)

DMM Web APIサービスには、様々な情報を取得するためのAPIが用意されています。FANZA関連で特によく使われるのは以下のAPIです。

API名概要取得できる情報例
商品検索API商品コード、キーワード、ジャンル、女優IDなど、様々な条件で作品を検索・取得します。タイトル、サムネイル画像URL、動画URL、発売日、価格、作品詳細ページURLなど
女優検索API女優のリストや詳細情報を取得します。女優名、女優ID、プロフィール情報など
ジャンル検索APIジャンルのリストを取得します。ジャンル名、ジャンルIDなど

Google スプレッドシートにエクスポート

4. データの取得方法

  • リクエスト:
    • 指定された形式のリクエストURLを作成し、それにアクセスすることでデータを取得します。
    • リクエストURLには、API IDaffiliate_id、および検索条件(キーワード、女優IDなど)を含める必要があります。
  • レスポンス形式:
    • 取得できるデータの形式は、主にXML形式が中心ですが、一部でJSON形式やCSV形式に対応している場合もあります。
  • プログラミング言語:
    • APIはURLにアクセスするだけでデータを取得できるため、PHP、Python、Ruby、GAS(Google Apps Script)など、様々なプログラミング言語から利用可能です。

5. 利用開始の手順

  1. DMMアフィリエイトに登録する。
  2. DMM Web APIサービスのページにアクセスし、「Webサービス 利用登録」を行う。 (FANZAヘルプセンターにも記載があります)
  3. API IDとアフィリエイトIDを取得する。
  4. 取得したIDを使ってリクエストURLを作成し、データの取得を開始する。

おすすめ