LoginSignup
1
1

Brave Search APIでニュース検索(ドシロウト)

Last updated at Posted at 2024-04-12

0.初めに

Braveは、有名なブラウザーでBrave Searchという独自の検索エンジンを持っています。
Brave Searchは、APIを提供しており、WEB検索やニュース検索に利用できるようなので試してみました。

私は、貧乏な非エンジニアなので、ロリポップ!のエコノミープランでも試せるPHPのコードで試しました。

なお、コードについては、ほぼ、生成AIのperplexityの無料版に書いていただきました。perplexityすごい!!

1.Brave Search APIについて

Brave Search APIは、一応無料で利用できるようです。ただ、APIの利用登録時にクレジットカード等の登録が無料プランを選択しても求められます。

API利用登録についてざっくり説明すると

利用登録はこちらから行います。
コメント 2024-04-12 105243.png

利用登録画面はこんな感じ
コメント 2024-04-12 110814.png

利用できるプラン。無料は1リクエスト/秒、2000リクエスト/月みたいです。
コメント 2024-04-12 112223.png

APIキーを発行する画面ですが、先にサブスクリプションしてねとかいてあり、サブスクリプションの画面でクレジットカード情報を入力しろと言われます。
コメント 2024-04-12 112424.png

ニュース検索のAPIのクイックスタートはCurlでの使い方が書かれているだけです。
image.png

2.コード(ニュース検索)

私はCurlをコマンドラインからロリポップ!のWEB画面でPHPが動くようにコードを作るにはスキル不足でした。

とりあえず、コード作成は、perplexityの助けを借りました。APIキーは画面で入力するようにperplexityに依頼しました。
コメント 2024-04-12 135517.jpg

perplexityの結果を少しだけ修正したコードが以下です。

index.php
<style>
#fresh {
    margin-top: 5px;
    margin-bottom: 5px;
}    
</style>
<form method="post" autocomplete="off">
    <label for="query">検索クエリ:</label>
    <input type="text" id="query" name="query" required>
    <br>
    <label for="api_key">API Key:</label>
    <input type="text" id="api_key" name="api_key" required>
    <div>
      <select name="fresh" id="fresh">
        <option value="pd">対象期間:1日</option>
        <option value="pw" selected>対象期間:1週</option>
        <option value="pm">対象期間:1月</option>
        <option value="py">対象期間:1年</option>
      </select>
    </div>

    <button type="submit">検索</button>
</form>

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $query = $_POST['query'];
    $apiKey = $_POST['api_key'];
    $fresh = $_POST['fresh'];

    $url = "https://api.search.brave.com/res/v1/news/search?country=jp&search_lang=jp&freshness=" . $fresh . "&q=" . urlencode($query);
    $headers = array(
        "Accept: application/json",
        "Accept-Encoding: gzip",
        "X-Subscription-Token: " . $apiKey
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_ENCODING, "gzip");
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $response = curl_exec($ch);

    if ($response === false) {
        echo "cURL error: " . curl_error($ch);
    } else {
        $data = json_decode($response, true);
        // 検索結果を表示する
        foreach ($data['results'] as $result) {
            echo "<h3><a href='" . $result['url'] . "' target='_blank'>" . $result['title'] . "</a></h3>";
            echo "<p>" . $result['description'] . "</p>";
        }
    }

    curl_close($ch);
}
?>

検索した結果はこんな感じでやりたいことはできました。
1コメント 2024-04-12 131404.png

あと、入力項目のサニタイズはした方がいいんでしょうね。この記事書いてるときにそう思いました。

3.終わりに

Brave Search APIの記事がなかったので書いてみました。

perplexityめっちゃ便利ですね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1