paloma blog

NWエンジニアやってます。技術の備忘など。Pythonもちょっと。タイトルは好きなカクテルから。

映画視聴ロガーを作る 情報取得編

記録するというのは大切な事だと思います。
ある日振り替える機会があったときに過去の自分の活動が見えるからです。
このブログもその1つです。

また、私は映画が好きで週一本のペースで見てるのですが、
これも同じでローカルに映画視聴メモなんてのも書いてます。

しかしこれが以外と大変で簡単な感想を書くのも一苦労です。
(批評サイトとか作ってる人は尊敬します)

視聴記録と言ってもそれ用のアプリは山ほどありますし、
感想を書くとか大したもんじゃなくていいので
「いつ何を見たのか」を簡単に残せる仕組みを作りたいと思います。

せっかくなんでローカルに残すのではなくオンラインに残せるようにします。
上げ先はよく使うtwitterにします。

やること

  1. 映画の概要を取得する
  2. 内容を整形する
  3. twitterに投稿する

簡単にこれだけ。

なにで作るか

これを実現する私のスキルはshellかpythonしかまともな選択肢はありません。

twitter回りはpythonでやるとして映画情報をどう取るかですね。

そこでshellのmoviesコマンドです。
わざわざ作り込まなくてもいいのであるものは利用しましょう。(スピード大事!)

moviesコマンドは以前書いたBash-snippetsに入ってます。
paloma69.hatenablog.com

shell scriptベースで取得ツールと投稿ツールを叩くという内容にします。

環境

サブ機のUbuntuで動かすことにします。

masashi@PC-ubuntu:~$ lsb_release -a ; uname -a ; bash --version
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.3 LTS
Release:        18.04
Codename:       bionic
Linux PC-ubuntu 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
GNU bash, バージョン 4.4.20(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

moviesで映画情報を取る

今回は映画情報を取得するまでにします。

moviesの出力はこんな感じです。
(-dで詳細まで出しています)

masashi@PC-ubuntu:~$ movies -d the circle

==================================================
| Title: The Circle
| Year: 2017
| Runtime: 110 min
| IMDB: 5.3/10
| Tomato: 15%
| Metascore: 43/100
| Rated: PG-13
| Genre: Drama, Sci-Fi, Thriller
| Director: James Ponsoldt
| Actors: Emma Watson, Ellar Coltrane, Glenne Headly, Bill Paxton
| Plot: A woman lands a dream job at a powerful tech company called the Circle, only to uncover an agenda that will affect the lives of all of humanity.
| Box Office: $20,476,300
| Production: EuropaCorp / STXfilms
| Awards: 1 win & 1 nomination.
==================================================

とれる情報は英語ですがまあいいでしょう。

ちなみにThe Circleはお盆休みに見た映画です。
(エマ・ワトソンが出てるので見たかったんです。)

moviesコマンドだけで欲しい方法は取れるのですがtwitterの文字数もあるので少し削ります。
これだけ記録するように取りましょう。

  • 視聴日付
  • タイトル
  • 公開年
  • 監督
  • 役者
  • 配給会社

ツイートイメージはこんな感じです。
いつ、何の映画を見たという情報だけです。

yyyy/mm/ddに「○○」を視聴しました。

その他情報
---
Year: xxxx
Genre: xxx
Director: xxx
Actors: xxx
Production: xxx
---

実装

shell scriptを書きます。

簡単なメモ
  • 映画情報取得に失敗したら処理を止める
  • 見たらすぐコマンドを打つことを想定しているのでdateは特にいじらない
  • moviesコマンドの出力は枠が付いてくるので、cutで項目名以降を抽出する
  • タイトルはタイトルのみ抜き出したいのでawkで特定の列以降を出力する
twmovie.sh
#!/bin/bash

# タイトルにスペースを含む場合がある
movieinfo=$(movies -d $@)

if [ $? == 1 ] ; then
    echo "タイトルが見つかりません。終了します。"
    exit 1
fi

DATE=$(date +%F)
INFO=$(echo "$movieinfo" | cut -d ' ' -f 2- | grep -Pe '^Y|^G|^Di|^Ac|^Pr')
# sedで行末スペース削除
TITLE=$(echo "$movieinfo" | grep Title | awk '{c="";for(i=3;i<=NF;i++) c=c $i" " ;print c}'| sed -e 's/ $//')


echo """\
${DATE}に「${TITLE}」を視聴しました。

その他Infomation
---
${INFO}
---
"""

動かしてみる

視聴日にこのスクリプトを叩いて記録です。
今見終わったという体で別の映画で試しましょう。
(これも割と好きなswordfish)

masashi@PC-ubuntu:~$ bash twmovie.sh swordfish
2019-08-21に「Swordfish」を視聴しました。

その他Infomation
---
Year: 2001
Genre: Action, Crime, Thriller
Director: Dominic Sena
Actors: John Travolta, Hugh Jackman, Halle Berry, Don Cheadle
Production: Warner Bros. Pictures
---

OKですね!
想定通りの出力にできました。
あとはこれをtwitterに投稿できるようにすれば一旦完成です。

今回はここまでにします。
次回は投稿部分を作ります。

参考サイト