search
LoginSignup
41

posted at

updated at

かまってちゃんな彼女をPythonで作った話

前置き

この記事はクソアプリアドベントカレンダー11日目の記事です。
昨日の@dala00さんの素晴らしい記事も是非ご覧ください。


みなさん、もうすぐクリスマス

彼女からLINEきていますか???

きていない寂しいみなさんも、きているけれども最近素っ気ない返信しかくれない皆様にも「Rimaちゃん」はいつでもかまって欲しいアピールをします。LINEの通知を切っている人にもオフラインであろうと全力でメッセージを届けます。愛の力ってすごい!
スクリーンショット 2020-12-10 23.03.19.png

1.かまってちゃんな彼女はOSの機能で通知を鳴らす。

AppleScript/osascript というものをご存知だろうか。
これはコマンドラインからも使うことができ、例えば

$  osascript -e 'display notification "テストです" with title "osascript使ってみた"'

スクリーンショット 2020-12-10 22.54.04.png

このようにタイトル付きで通知を行うことができる。

これを特定の間隔で通知するようにPythonのコードに落とし込むとこうなる。

import os
import schedule

def tell(msg):
  os.system("osascript -e 'display notification ¥" {} ¥" with title ¥" osascript使ってみた ¥" '".format(msg))

def call_wait():
    schedule.every(1).seconds.do(tell,"メッセージの中身を書く")
    while True:
        try:
            schedule.run_pending()
            time.sleep(1)
        except KeyboardInterrupt:
            print("中断しました。")
            break


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    call_wait()

ここでは、formatを使って文字列の部分に引数である伝えたいメッセージを挿入できるような形にした。
今回は、1秒毎に「メッセージの中身を書く」というメッセージが通知されるようなコードになっているがこれを改造して女の子が話しているように『調教』しよう。

2.可愛い彼女にはメープルのような甘い言葉を。

やはり、これは人によって異なると思いますが誰にでも必要なのは

  • 自分が必要とされているなという愛情表現
  • 知的な会話

だと思います。前者は、以下のような愛のこもった文字列を使うことで解決すると思います。

const msgList = [
    "ねーねー。",
    "きいてるー??",
    "はなそーよー",
    "大好きだよ",
    "愛してるよー!",
    "すき……",
    "ちゅっちゅ!!",
    "他の女と一緒にいないよね…?",
    "あなたを誰にも渡さない……",
    "ねー……",
    "むぅ",
    "いっぱいお話したいだけなのに……",
    "ねぇってばー",
    "すきだよ?",
    "こんなに好きなのに……",
    "私が悪いのかな……?",
    "はぁ。。。",
    "ふーん…",
    "こんなにすきなのに……",
    "あいたい。",
    "ねぇ、会いたいよー……",
    "通話しよ。。。",
]

後者は、やっぱり新聞の記事とかを読んでいるといいよね!というわけで任意の新聞の記事をスクレイピングして紹介することで解決したいと思います。

スクレイピングには、定番のBS4ことBeautiful Soupを使ってさくっと実装していきましょう。

ここら辺は先行事例をみて書いていくといいと思います。
https://pypi.org/project/beautifulsoup4/

ということで上記のメッセージリスト+ニュースのセットの中からランダムで選ぶようなコードを書いていきましょう。

猫のような彼女は気まぐれに通知を鳴らす。

毎秒とか同じ時間に連絡のくる彼女って怖くないですか…??僕は毎秒彼女から「愛してる」とかきたら引いちゃいます。

そんな男の子のためのパラメーター大体平均5秒に1回しかこないけどこないときはこないように実装していきます。

import random
def(ofen):
   job_id=random.randint(0,len(msgList)+ofen)
   if job_id<len(msgList):
        tell(msgList[job_id])
   elif job_id<len(msgList)+4:
        tell("ねえねえ、こんなニュースがあったよ!「"+get_news()+"」")
   return 0

これで引数のofenに100とか1000とか適当な値を入力するとそこそこの頻度で(とは言え、ofen=100だいたい5−6秒に1度くらいの頻度になる)かまって欲しいメッセージをデスクトップに送ることができる。彼女感出てきましたね。もう、君は目の前の彼女に夢中です。
スクリーンショット 2020-12-10 23.21.18.png
こんな風にいってくれる彼女が欲しい(ほんまか・・・???)

実際のコードはこちらです↓
https://github.com/yuriacats/LarimaDesktop/blob/master/main.py

だいたい100行前後のコードで可愛い彼女は完成しました。めんどくさいことも可愛い彼女も作れるPythonみんなも使っていこう!


追記(2020/12/21)
@MikakuninTomori さんがこの記事のアイデアを受けてLINEで「かまってちゃんな彼女」を作ってくれました!
https://qiita.com/MikakuninTomori/items/e9af8162770588ce86d5

(LINEBOT化は当初からアイデアがあっただけに「先越された!!」って思いました


明日は @onushi-k さんの投稿です。楽しみですね!!

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
What you can do with signing up
41