VTuberのモザイクアートを作る


動画・配信のサムネイルを使って、VTuberのモザイクアートを作ります。
とは言えモザイクアートの作成自体はツールを使うだけなので、ここで書くのはYouTube Data APIの使い方ぐらいです。
流れとして、APIで動画データ取得→動画データ内のサムネURLから画像を取得→取得した画像を使ってモザイクアート作成といった感じです。

今回対象とするVTuberさんは不条 理さんです。
https://twitter.com/AyaFujo
https://www.youtube.com/channel/UCnWY-6vdj_UaKDwGI5oLDZw
素敵な個人Vさんで、おすすめです。

動画データの取得

まず、YouTube Data APIを使って動画データを取得します。
準備方法は調べればいくらでも出てくるので、今回は割愛します。

from apiclient.discovery import build
import json
import time

# APIを使うための情報を設定
DEVELOPER_KEY = "**取得したAPIキー**"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
    developerKey=DEVELOPER_KEY)

item_list = []
search = youtube.search().list(
    part = "snippet",
    # チャンネルIDはYouTubeホーム画面URLから取得、↓の***の部分
    # https://www.youtube.com/channel/***/featured
    channelId = "**チャンネルID**",
    maxResults = 50 # 一回で取得する動画情報数
)
data = search.execute()

# 一回じゃ取りきれないので何回か実行する
while True:
    item_list = item_list + data["items"]
    print(len(item_list))
    print(data["pageInfo"])
    # 取りきったら終了
    if "nextPageToken" not in data:
        break
    time.sleep(1)
    search = youtube.search().list_next(search, data)
    data = search.execute()

# 取得したデータを保存
with open('movieData.json', 'w',  encoding="utf8") as f:
    json.dump(item_list, f, ensure_ascii=False)

ざっくりこんな感じで動画データが取得できます。

画像の取得

続いて画像の取得です。
先ほど取得したJSONファイルですが、snippet→thumbnailsにサムネの情報が入ってます。
画像サイズごと別れており、その下のurlに画像のURLがあります。
データ構造も調べれば出てくるので割愛します。

画像の保存方法としてurllibライブライを使います。
これを使うことで、URLを指定して画像を保存することができます。

import json
import urllib.request

# さっきのJSONファイル
json_file = open('movieData.json', 'r')
data = json.load(json_file)
json_file.close()

i = 1
for line in data:
    # 画像ファイル名
    image_file = "samune/" + str(i) + ".jpg"
    i += 1
    # URLの場所を指定して取得
    url = line["snippet"]["thumbnails"]["medium"]["url"]
    print(line["snippet"]["title"])
    # urllibライブライを使って画像を保存
    tgt = urllib.request.urlopen(url).read()
    with open(image_file, mode='wb') as f:
        f.write(tgt)

モザイクアートの作成

これもプログラムでサクッとできればよかったのですが、そこまでの技術は無いので...。
最後はツールの力を借ります。
AndreaMosaicというツールになります。
使い方はリンクを貼るのでそちらから。
https://aprico-media.com/posts/3742

完成したモザイクアート

元画像はツイッターのアイコンを使いました。
小さくして薄目で見ると見える気がする!

元画像

モザイクアート

以上、ちょっと変わったファンアートを作りたくて遊んだ話でした。