Pythonと一緒に! 好きなアニメ映画のファン活動

Event

PyCon mini Shizuoka 2021

Presented

2021/11/20 nikkie

皆さん、本物のnikkieですよ

※変なテンションで「お前、誰よ」(自己紹介)をお送りします

PyCon JP 2021でお会いして以来ですね

PyCon JP 2021 座長でした。ご参加ありがとうございました

当日の雰囲気はこちら

PyCon JP 2021インタビュー動画公開 (寺田さん、ありがとうございました!)

1つお知らせです

📣 PyCon JP 2021 Advent Calendar、やります!

  • https://qiita.com/advent-calendar/2021/pyconjp

  • PyCon JP 2021にちなんだアウトプット募集中

  • 小さなアウトプット大歓迎。チケット買ってなくても、資料やアーカイブ見て参加して大丈夫です!

お前、誰よ

  • @pytest.mark.skip("スライドだけを確認する方向けのスライド")

  • Python大好き にっきー @ftnext / @ftnext

  • Python歴4年。株式会社ユーザベースのデータサイエンティスト(NLPer)

PyCon JP 2021の会期を終えたnikkie

アイの歌声を聴かせて』にハマりました

TODO:『アイの歌声を聴かせて』ロングPVはYouTubeで見られます!!

連日TLを #アイの歌声を聴かせて で evangelist しています😉

LT:Pythonと一緒に! 好きなアニメ映画のファン活動

お品書き:Pythonと一緒に! 好きなアニメ映画のファン活動

  1. 公開から何日目?

  2. 劇中のシーンを再現(目覚まし)

  3. 劇中歌の歌詞分析

Pythonと一緒に! 好きなアニメ映画のファン活動

  1. 公開から何日目?

  2. 劇中のシーンを再現(目覚まし)

  3. 劇中歌の歌詞分析

1.公開から何日目?


$ python3.10 x-days-anniversary/main.py
『アイの歌声を聴かせて』公開から23日目です

公開から何日目?の実装


>>> from datetime import date
>>> AINOUTA_DAY = date(2021, 10, 29)
>>> date.today() - AINOUTA_DAY
datetime.timedelta(days=22)
>>> (date.today() - AINOUTA_DAY).days + 1  # 10/29を1日目とする
23

9月の #pycharity でのHayaoさんのLTにインスパイアされました!

Pythonと一緒に! 好きなアニメ映画のファン活動

  1. 公開から何日目?

  2. 劇中のシーンを再現(目覚まし)

  3. 劇中歌の歌詞分析

2.劇中のシーンを再現(目覚まし)

目覚ましの曲「フィール ザ ムーンライト ~愛の歌声を聴かせて~」

💡ひらめいたnikkie(アニメ脳)

  • 目覚ましの曲はYouTubeで流せる

  • 指定した時間に目覚ましの曲を流す=目覚ましのシーン再現!

  • 要は「YouTubeの動画を自動で流す」を実装

デモ 🤖🎤🎼


# 『アイの歌声を聴かせて』の目覚ましを2分後にかけるコマンド
$ python3.10 after_x_minutes.py 2

after_x_minutes.py

JavaScriptでYouTubeを自動再生

autoplay.html(に書いたJavaScriptの一部)

var player;
function onYouTubeIframeAPIReady() {
  player = new YT.Player("player", {
    height: "315",
    width: "560",
    videoId: "BVJhS-cXhOc",
    events: {
    onReady: onPlayerReady,
    onStateChange: onPlayerStateChange,
    },
  });
}

autoplay.html

webbrowser でHTMLを開けば、自動再生始まる


$ python3 -m webbrowser -t "autoplay.html"
# 先のデモスクリプトでは webbrowser.open_new_tab を呼んでいます

https://docs.python.org/ja/3/library/webbrowser.html

Pythonと一緒に! 好きなアニメ映画のファン活動

  1. 公開から何日目?

  2. 劇中のシーンを再現(目覚まし)

  3. 劇中歌の歌詞分析

3.劇中歌の歌詞分析

アイの歌声を聴かせて』はミュージカルものでもある

  • 歌でありセリフでもある

  • 作詞のこだわりを知ったのをきっかけに、歌詞の 単語を数えて みました

  • spaCyの素振りも兼ねてます(都合により2系 2.3.7 です。Pythonは3.9系です)

「ユー・ニード・ア・フレンド」

「ユー・ニード・ア・フレンド」で2回以上出てくる語


$ python word_counter.py you_need_a_friend.txt
友達 [6]  # 友達友達と連呼する曲です
欲しい [3]
幸せ [2]
ひとりぼっち [2]
歌う [2]

対になる「You've Got Friends」(ロングPV 1分過ぎから)

「You've Got Friends」で2回以上出てくる語


$ python word_counter.py youve_got_friends.txt
あなた [3]
光 [3]
幸せ [2]
月 [2]  # 月や光に関連する語が多い曲です
照らす [2]
明かり [2]
誰 [2]
空 [2]
友達 [2]

spaCyで日本語テキストを形態素解析


>>> # 前提: pip install 'spacy[ja]<3'
>>> from spacy.lang.ja import Japanese
>>> nlp = Japanese()
>>> doc = nlp("あなたには友達が要る")
>>> for token in doc:
...   print(token.lemma_)  # 辞書の見出し語
...
あなた
に
は
友達
が
要る

カウントしたい語の絞り込み


>>> EXCLUDED_POS_SET = set(["ADP"])  # に、は、が などの助詞を除く
>>> for token in doc:
...   # こと、するなど日本語のstop wordsは is_stop=True になることを使って除く
...   if token.pos_ not in EXCLUDED_POS_SET and not token.is_stop:
...     print(token.lemma_)
...
あなた
友達
要る

実装イメージ

まとめ🌯:Pythonと一緒に! 好きなアニメ映画のファン活動

  • 『アイの歌声を聴かせて』はいいぞ!

  • 好きな作品を題材にPython{を使った,で素振りした}3例を紹介しました

あなたの好きなもの × Python

  • 示した例自体は再利用できなくても、 裏の考え方 は再利用できるかも

  • 「自分も やってみたい」「参考 にしてこういうことができるかも」の気持ちを大切に

  • このLTが手を動かすきっかけやアウトプットのきっかけになったら嬉しいです✌️

ご清聴ありがとうございました

Happy hacking👋

Reference(技術面)

Reference(アイの歌声を聴かせて)

EOF