pixiv client for myself.
このプロジェクト(クライアント)を利用するためには、有効な pixiv アカウントのリフレッシュトークンが必要です。
Twitter に関連する機能を利用する場合は、Twitter API v1.1 が利用できる各種トークンが必要です。
「おすすめ」の取得、各種検索処理、イラストの「ブックマーク」登録に pixiv アカウントを利用します。
Retrieving Auth Token (with Selenium) などを参考にリフレッシュトークンを取得してください。
その後、以下の形式で data/token.json
にリフレッシュトークン(<REFRESH-TOKEN>
)を設定してください。
{
"refresh_token": "<REFRESH-TOKEN>"
}
イラストから取得できるツイートの「いいね」に最大 2 つの Twitter アカウントを利用できます。この機能を利用しない場合は設定する必要はありません。
Twitter API v1.1 が利用できる以下 4 つのキーが必要です。
<CONSUMER-KEY>
<CONSUMER-SECRET>
<MAIN-ACCOUNT-ACCESS-TOKEN>
<MAIN-ACCOUNT-ACCESS-TOKEN-SECRET>
<SUB-ACCOUNT-ACCESS-TOKEN>
<SUB-ACCOUNT-ACCESS-TOKEN-SECRET>
以下の JSON の該当部分を置き換えた上で、 data/config.json
に書き込んでください。
{
"consumer_key": "<CONSUMER-KEY>",
"consumer_secret": "<CONSUMER-SECRET>",
"accounts": {
"main": {
"access_token": "<MAIN-ACCOUNT-ACCESS-TOKEN>",
"access_token_secret": "<MAIN-ACCOUNT-ACCESS-TOKEN-SECRET>"
},
"sub": {
"access_token": "<SUB-ACCOUNT-ACCESS-TOKEN>",
"access_token_secret": "<SUB-ACCOUNT-ACCESS-TOKEN-SECRET>"
}
}
}
docker-compose.yml
に以下を書き込みます。
version: '3.8'
services:
view:
image: ghcr.io/tomacheese/my-pixiv:latest
volumes:
- type: bind
source: ./data
target: /data/
ports:
- 8080:80
init: true
restart: always
api:
image: ghcr.io/tomacheese/my-pixiv-api:latest
volumes:
- type: bind
source: ./data
target: /data/
init: true
restart: always
docker-compose up --build -d
で起動し、http://localhost:8080
でアクセスできます。
このプロジェクトは、Nuxt.js フレームワークを用いたフロントエンドパッケージと Fastify フレームワークを用いたバックエンドパッケージ 、共通の型定義や関数などをまとめたパッケージの 3 つで構成されています。それぞれのパッケージ名およびディレクトリは以下の通りです。
これらを Yarn Workspaces を用いて monorepo プロジェクトとしています。
フロントエンドとバックエンドは異なるプロジェクトとして動作しています。しかし、インターネットに露出するポートは一つのみにしたいという理由から、nginx を用いて以下のようにルーティングしています。
/api/
ディレクトリにルーティング開発時はフロントエンドとバックエンドのそれぞれを独立して動作することをオススメします。以下のコマンドで起動できます。
.\scripts\client-dev.ps1
.\scripts\server-dev.ps1
この方法で起動した場合、フロントエンドは 0.0.0.0:3000 、バックエンドは 0.0.0.0:8000 でホストされます。
その他、開発用のスクリプトをいくつか scripts
ディレクトリに配置しています。
このプロジェクトのライセンスは MIT License です。
このプロジェクトを使用したことによって引き起こされた問題に関して開発者は一切の責任を負いません。
The developer is not responsible for any problems caused by the user using this project.