#はじめに
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%のものをピックアップする
#参考サイト
どの方も丁寧な記事で大変参考になりました。