LoginSignup
6
3

More than 3 years have passed since last update.

Pythonを使ってpixivタグ検索とイラスト保存まで

Posted at

はじめに

Pythonからpixivのイラストいっぱい見たかったんです。
pixivpyの日本語情報が少なそうだったのでメモ書き程度に残しておきます。

環境

Windows10
Python 3.8
pixivpy 3.5.8 : https://github.com/upbit/pixivpy

準備

pixivpyを準備します
コマンドプロンプトから

pip install pixivpy

を実行

コード

tagsearch_pixivpy.py
from pixivpy3 import PixivAPI
from pixivpy3 import AppPixivAPI

import json
import os
from time import sleep

def login(id, password):
    api = PixivAPI()
    api.login(id, password)
    return api

def search_and_save(apilogin, searchtag, min_score, range_num, directory):
    api = apilogin
    aapi = AppPixivAPI()

    saving_dir_path = os.path.join(directory, searchtag)
    if not os.path.exists(saving_dir_path):
        os.mkdir(saving_dir_path)

    for page in range(1, range_num + 1):
        json_result = api.search_works(searchtag, page=page, mode='tag')
        illust_len = len(json_result.response)

        for i in range(0, illust_len):
            illust = json_result.response[i]
            score = illust.stats.score

            if score <= min_score:
                continue
            else:
                print("漫画:" + str(illust.page_count) + "ページ") if illust.is_manga else print("イラスト")
                if illust.is_manga:
                    print(">>> title:", illust.title)
                    manga_info = api.works(illust.id)
                    for page_no in range(0, manga_info.response[0].page_count):
                        page_info = manga_info.response[0].metadata.pages[page_no]
                        aapi.download(page_info.image_urls.large, path=saving_dir_path)
                        sleep(1)
                else:
                    print(">>> title:", illust.title)
                    aapi.download(illust.image_urls.large, path=saving_dir_path)
                    sleep(1)

def main():
    searchtag = "検索タグ"  #検索タグを入力。半角スペースで分けることで複数タグ検索可能
    min_score = 2000    #このスコア以上のイラストのみDL
    range_num = 1   #この値のページまで検索。1p当たり30枚
    directory = '保存先ディレクトリ'  #指定したディレクトリの下に検索タグ名のフォルダを作成して,そこに保存します

    apilogin  = login("ユーザ名", "パスワード") #ユーザ名とパスワード入力

    search_and_save(apilogin, searchtag, min_score, range_num, directory)

if __name__ == '__main__':
    main()

main関数以下の変数を変えることでお好きに検索できます。
漫画形式(一つのタイトルに複数のイラストが付く形式)の投稿にも対応しています

アイデア

  • GoogleDriveに直接保存するようにしたい
  • 検索したイラストからスコア順で上位20%のものをピックアップする

参考サイト

どの方も丁寧な記事で大変参考になりました。

6
3
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
6
3