PythonでAvgle.comのAPIを操作しエロ動画URLをCSVに書き込むまで

Pythonでアダルト動画サイト(Avgle.com)のAPIを操作し、エロ動画情報諸々をcsvに落とし込む

Avgleというアダルトサイトを皆さんはご存知でしょうか。(僕は大変お世話になっています。)

今回はこのサイトが無償公開しているAPIをPythonで色々いじって、Avgle上で公開されているアダルト動画の情報を取得(csvダウンロード)してみたいと思います。

 

目的はあくまでも、Pythonの勉強用です。

 

基本的にはAvgleのサイト上にある公式ドキュメント的のコードをコピペするだけでもきちんと実行されますが、
データ取得以降の操作については記載がないので、今回は取得したデータをcsvに書き込むまでをやってみたいと思います。

なお、このAvgle APIを利用するにあたって、oauth認証やAPIキー等々も必要ありません。

Avgle API v1 is public and free to use. Neither authentication nor API keys is needed.
Avgle API v1 Reference

実行環境

  • python 3.6.1
  • requests 2.18.1
  • MacOS

スクリプトについて

スクリプト作成時では動画数は全部で59,407件ありました。
一度のリクエストで取得可能な上限が250件ですが、レスポンス内の’has_more’キーでループさせーのインクリメントさせれば全て取得可能です。

 

ただし時間が掛かるのと、あまりやりすぎてシステム負荷を与えると、今後より厳しいレート制限が課される説があるため、
節度を守り、今回は100件のみ取得します。

Avgle API v1 currently impose a rate limit of 2 req/s with burst 10 reqs. It’s possible for us to impose more strict rate limit anytime depends on the system load without announcement.
Avgle API v1 Reference

ファイル構成はシンプルです。

app/
├ data/
│ └ videos_list.scv
├ main.py

スクリプト全文

import requests
import csv

##################################################
ここの値を弄れば良いかと思います。
# ページ数
CURRENT_PAGE = 1
# 1ページあたりに取得するビデオ数(MIN:1〜MAX:250)
VIDEO_LIMIT = 100
##################################################

# 動画の一覧を取得するエンドポイント
AVGLE_LIST_VIDEOS_API_URL = 'https://api.avgle.com/v1/videos/{page}?limit={limit}'

# ビデオ情報を1ページずつ○○件取得するメソッド
def get_response(page, limit):
    r = requests.get(AVGLE_LIST_VIDEOS_API_URL.format(page=page, limit=limit))
    data = r.json()
    return data

# コマンドで実行する時のみ
if __name__ == '__main__':

    data = get_response(CURRENT_PAGE, VIDEO_LIMIT)

    if data['success'] == True:
        videos = data['response']['videos']
        # コマンド実行のたびにcsvファイルを上書きする
        with open('data/videos_list.csv', 'w', encoding='utf-8') as f:
            # インデックス付きでループ
            for i, video in enumerate(videos):
                writer = csv.writer(f)
                # csvの最初の行にキーを入れる
                if i == 0:
                    writer.writerow(video.keys())
                # csvにビデオ情報を書き込む
                writer.writerow(video.values())

スクリプト実行

python3 main.py

成功すると以下のように、100件分のビデオ情報がcsvで書き込まれます。

あとは煮るなり焼くなり好きに活用すると良いかと思われます。

Avgle動画ダウンロードの参考サイト

Python3.6公式ドキュメント

14.1. csv — CSV ファイルの読み書き

Requests公式ドキュメント

Requests: 人間のためのHTTP

Avgle公式ドキュメント

Avgle API v1 Reference